Category: Emacs

  • Insert a new heading after numbered list in org-mode

    In org-mode in emacs, M-<RET> will add either a new heading or if your insertion point is between a list item and a heading, it will add a new list item. This is not always desirable. To add a new heading try C-U M-<RET>.
    I only discovered this as I got frustrated with org-mode insisting on adding an item to the list rather than creating a new heading. The emacs way around problems like this is to prefix the command with C-U to make it do something slightly different.

  • removing historical buffer names from the ido buffer list

    ido-mode in emacs has this great feature where it remembers old buffers you have had open in the past and offers then as choices when switching buffer using C-x b. The problem is that sometimes it will have names in the list you’d rather it didn’t remember. The solution is easy, simply hit C-k to instantly kill the entry under point.

  • gnus, imap and gnutls in win32

    I’ve been trying to get gnus working in emacs in win32 for the past few days. There were a number of obstacles to overcome:

    1. Install gnutls
    2. The gnus README.w32 says gnutls should be installed and in the path. I found that it must be in the windows system path to make it work. Setting the path within emacs was not good enough. So add C:\Program Files (x86)\gnutls\bin;C:\Program Files (x86)\gnutls\lib to your system path by going to Start/Edit System Environment Variables then click Environment Variables and edit Path in System Variables
    3. you need to edit the emacs variable gnutls-trustfiles to point to windows paths to .crt files. by default it had paths to unix locations. The only way I could find to get these files was to install cygwin and then make gnutls-trustfiles equal to ("C:/cygwin/usr/ssl/certs/ca-bundle.trust.crt" "C:/cygwin/usr/ssl/certs/ca-bundle.crt")

    Unfortunately these last two steps were not obvious to me and it took me quite some time to work through them.
    Tip: if you need to debug gnutls, try setting (setq gnutls-log-level 50).
    Now all I need to do is learn gnus!

  • Converting lines of text into a numbered list in org-mode

    Recently I had a list of things in a org buffer that I wanted to turn into a numbered list but couldn’t find an elegant way to do it.
    The solution I came up with was to use a regex-replace to insert 1. in front of each line. Then I used org-mode’s C-c C-c to renumber the lines.
    I also asked on #org-mode on irc. Two interesting solutions were suggested.

    1. use string-rectangle
    2. use the string-rectangle function via the keyboard shortcuts: C-x r t 1 . <SPC>
      string-rectangle is new to me but seems as though it could be very useful. Thanks quicksilver for that suggestion.

    3. use org-mode’s org-toggle-item
    4. which is described as:
      Insert separator line in table or modify bullet status of line.
      Also turns a plain line or a region of lines into list items.
      Calls `org-table-insert-hline', `org-toggle-item', or
      `org-cycle-list-bullet', depending on context.

      The trick is to prefix it with C-u which supplies ARG to the function org-toggle-item which changes each line in a region into an item.
      C-u C-c - then S-right until you get to the list type you want.
      Thanks Thumper_ for that suggestion.

    UPDATE: zhen pointed me to rectangle-number-lines, which I did look at before but it’s default option numbers the lines without the full stop after each number. As I wanted this for org-mode, I really wanted the numbers to be formatted as “1. “. After reading the help on rectangle-number-lines though, I found that if you prefix it with the argument command C-u it will ask you for a starting number and the format of the numbers.
    ∴ Select a rectangle at least one column wide of the lines you want to number then
    C-u C-x r N <ENTER><backspace>.<spc><ENTER>

  • Delete white space around insertion point in emacs

    A while ago I discovered M-\ deletes white space between point and text.
    Now I just discovered M-spc replaces tabs and spaces around point with just 1 space.
    M-SPC runs the command just-one-space, which is an interactive
    compiled Lisp function in `simple.el'.
    It is bound to M-SPC.
    (just-one-space &optional N)
    Delete all spaces and tabs around point, leaving one space (or N spaces).
    If N is negative, delete newlines as well.

  • Sacha Chua interviews John Wiegley

    Sacha Chua has come up with a great idea of interviewing some of the big names in emacs. Check out her first video where she interviews John Wiegley. They cover some interesting ground. It makes me realise what an emacs amateur I am.

  • change the display font size in emacs

    In emacs 24 C-+ and C-- increase and decrease the display font
    size.

  • Editing files using sudo and emacs

    I often edit config files with:
    sudo emacs /etc/whatever

    The problem with that is I would end up with ~ backup files littering my filesystem and also emacs is run as root so it gets root’s config file. I’d rather use emacs with my config.
    The solution, thanks to emacs-fu is twofold:
    First set emacs’s backup directory, which tells it to save backup files in a
    specific directory rather in the same dir as the file you edited. Put something like this in your emacs init file:

     (setq
       backup-by-copying t      ; don't clobber symlinks
       backup-directory-alist
        '(("." . "~/.saves"))    ; don't litter my fs tree
       delete-old-versions t
       kept-new-versions 6
       kept-old-versions 2
       version-control t)       ; use versioned backups
    

    Then you add this to your .bashrc:

    # see http://emacs-fu.blogspot.com.au/2011/12/system-administration-with-emacs.html
    # edit file with root privs
    function E() {
        filename=$1
        without_beg_slash="${1##/}"
        if [[ $without_beg_slash == $1 ]];then
            filename="${PWD%//}/\"
        fi
        emacsclient -c -a emacs "/sudo:root@localhost:$filename"
    }
    

    Now just edit files with: E someconfigfile and it loads it in your emacs, asks your pw to edit and off you go.

  • Fullscreen emacs on OSX

    This works in emacs 24, not sure about previous versions. the keyboard shortcut matches Chrome’s full screen shortcut.

    ; keyboard shortcut to toggle full screen
      (global-set-key [s-return] 'ns-toggle-fullscreen)
    

    will define Cmd-return to toggle emacs between full screen and normal –
    the same shortcut as for chrome.