Mercurial > emacs
changeset 111515:dd011cba2fbf
* lisp/skeleton.el (skeleton-newline): New function.
(skeleton-internal-1): Use it.
(skeleton-read): Don't use `newline' since it may strip trailing space.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 12 Nov 2010 08:33:44 -0500 |
parents | e21371bab717 |
children | 80d61d4081a0 |
files | lisp/ChangeLog lisp/skeleton.el |
diffstat | 2 files changed, 21 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Fri Nov 12 08:32:02 2010 -0500 +++ b/lisp/ChangeLog Fri Nov 12 08:33:44 2010 -0500 @@ -1,5 +1,10 @@ 2010-11-12 Stefan Monnier <monnier@iro.umontreal.ca> + * skeleton.el (skeleton-read): Don't use `newline' since it may strip + trailing space. + (skeleton-newline): New function. + (skeleton-internal-1): Use it. + * simple.el (open-line): `newline' may strip trailing space. 2010-11-12 Kevin Ryde <user42@zip.com.au>
--- a/lisp/skeleton.el Fri Nov 12 08:32:02 2010 -0500 +++ b/lisp/skeleton.el Fri Nov 12 08:33:44 2010 -0500 @@ -299,7 +299,10 @@ (eolp (eolp))) ;; since Emacs doesn't show main window's cursor, do something noticeable (or eolp - (open-line 1)) + ;; We used open-line before, but that can do a lot more than we want, + ;; since it runs self-insert-command. E.g. it may remove spaces + ;; before point. + (save-excursion (insert "\n"))) (unwind-protect (setq prompt (if (stringp prompt) (read-string (format prompt skeleton-subprompt) @@ -352,6 +355,16 @@ (signal 'quit 'recursive) recursive)) +(defun skeleton-newline () + (if (or (eq (point) skeleton-point) + (eq (point) (car skeleton-positions))) + ;; If point is recorded, avoid `newline' since it may do things like + ;; strip trailing spaces, and since recorded points are commonly placed + ;; right after a trailing space, calling `newline' can destroy the + ;; position and renders the recorded position incorrect. + (insert "\n") + (newline))) + (defun skeleton-internal-1 (element &optional literal recursive) (cond ((or (integerp element) (stringp element)) @@ -379,13 +392,13 @@ (if pos (indent-according-to-mode))) (skeleton-newline-indent-rigidly (let ((pt (point))) - (newline) + (skeleton-newline) (indent-to (save-excursion (goto-char pt) (if pos (indent-according-to-mode)) (current-indentation))))) (t (if pos (reindent-then-newline-and-indent) - (newline) + (skeleton-newline) (indent-according-to-mode)))))) ((eq element '>) (if (and skeleton-regions (eq (nth 1 skeleton-il) '_))