Reputation: 21063
I've used XCode and Netbeans, and I've noticed that they have a feature to automatically complete quotation marks or parentheses (and I assume that other IDEs often do this also). I don't know what the name of this feature is, but is there any way to do this in Emacs?
For example, when I type
printf("
I would like it to automatically input
printf("")
placing the cursor in between the quotation marks.
Thank you.
Upvotes: 7
Views: 4022
Reputation: 8523
My 5 cents here as well.
(setq skeleton-pair t)
(defvar skeletons-alist
'((?\( . ?\))
(?\" . ?\")
(?[ . ?])
(?{ . ?})
(?$ . ?$)))
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\"") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "\'") 'skeleton-pair-insert-maybe)
Next advice will enable the backspace to deletes the pairs: a(|)b -> ab
(defadvice delete-backward-char (before delete-empty-pair activate)
(if (eq (cdr (assq (char-before) skeletons-alist)) (char-after))
(and (char-after) (delete-char 1))))
Next advice will make backward-kill-word
(for me is M-backspace) to delete matching par even if it separated by other text; very handy.
(defadvice backward-kill-word (around delete-pair activate)
(if (eq (char-syntax (char-before)) ?\()
(progn
(backward-char 1)
(save-excursion
(forward-sexp 1)
(delete-char -1))
(forward-char 1)
(append-next-kill)
(kill-backward-chars 1))
ad-do-it))
I am trying to move now to paredit, though.
Upvotes: 2
Reputation: 1137
Paredit-mode inserts matching closing elements by default, so the while typing you'll see something like printf()
then printf("")
and the cursor would be positioned inside quotes.
Upvotes: 3
Reputation: 6983
If you type M-(, that will insert both a ( and a ), and leave point in between; if you then type M-), that will move point across the closing ). I use this all the time.
There is also a mode called "paredit" (available from http://mumble.net/~campbell/emacs/paredit.el) which does this sort of thing for quotes as well, and probably other stuff.
Upvotes: 3
Reputation: 1375
I'm using code from http://cmarcelo.wordpress.com/2008/04/26/a-little-emacs-experiment/ to do "electric pairs". As I descibe in my blog other modes have problems with Python's triple quoted strings. (A Python peculiarity)
Upvotes: 2
Reputation: 6393
The basic variant would be AutoPairs. The same effect but a little more sophisticated can also be achieved with YASnippet.
Upvotes: 8