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 tryC-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 withC-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 usingC-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 hitC-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:
- Install gnutls
- 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 toStart/Edit System Environment Variables
then clickEnvironment Variables
and edit Path in System Variables - 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 makegnutls-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 insert1.
in front of each line. Then I used org-mode’sC-c C-c
to renumber the lines.
I also asked on #org-mode on irc. Two interesting solutions were suggested.- use string-rectangle
- use org-mode’s org-toggle-item
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.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 -
thenS-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-+
andC--
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.