Mercurial > emacs
changeset 34838:10b89a04d05d
(skeleton-internal-1): Really make sure the first line of
the region is also re-indented.
(skeleton-end-newline): New var.
(skeleton-end-hook): Use it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 22 Dec 2000 22:55:59 +0000 |
parents | 60ecb8f938eb |
children | c7998d5ede4b |
files | lisp/skeleton.el |
diffstat | 1 files changed, 23 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/skeleton.el Fri Dec 22 19:37:31 2000 +0000 +++ b/lisp/skeleton.el Fri Dec 22 22:55:59 2000 +0000 @@ -60,11 +60,16 @@ unless we get a substantial number of complaints about the auto-wrap feature.") +(defvar skeleton-end-newline t + "If non-nil, make sure that the skeleton inserted ends with a newline. +This just influences the way the default `skeleton-end-hook' behaves.") + (defvar skeleton-end-hook (lambda () - (or (eolp) (newline-and-indent))) + (or (eolp) (not skeleton-end-newline) (newline-and-indent))) "Hook called at end of skeleton but before going to point of interest. -By default this moves out anything following to next line. +By default this moves out anything following to next line, + unless `skeleton-end-newline' is set to nil. The variables `v1' and `v2' are still set when calling this.") @@ -375,6 +380,9 @@ opoint) (or str (setq str `(setq str (skeleton-read ',(car skeleton) nil ,recursive)))) + (when (and (eq (car skeleton) '\n) + (save-excursion (beginning-of-line) (looking-at "[ \t]*$"))) + (setq skeleton (cons '> (cdr skeleton)))) (while (setq skeleton-modified (eq opoint (point)) opoint (point) skeleton (cdr skeleton)) @@ -412,20 +420,17 @@ (funcall skeleton-transformation element) element)))) ((eq element '\n) ; actually (eq '\n 'n) - (if (and skeleton-regions - (eq (nth 1 skeleton) '_)) - (progn - (or (eolp) - (newline)) - (indent-region (point) (car skeleton-regions) nil)) - (if skeleton-newline-indent-rigidly - (indent-to (prog1 (current-indentation) - (newline))) - (newline) - (indent-according-to-mode)))) + (cond + ((and skeleton-regions (eq (nth 1 skeleton) '_)) + (or (eolp) (newline)) + (indent-region (line-beginning-position) + (car skeleton-regions) nil)) + ((and (null (cdr skeleton)) (eolp)) nil) + (skeleton-newline-indent-rigidly + (indent-to (prog1 (current-indentation) (newline)))) + (t (newline) (indent-according-to-mode)))) ((eq element '>) - (if (and skeleton-regions - (eq (nth 1 skeleton) '_)) + (if (and skeleton-regions (eq (nth 1 skeleton) '_)) (indent-region (line-beginning-position) (car skeleton-regions) nil) (indent-according-to-mode))) @@ -446,7 +451,9 @@ (or skeleton-modified (setq skeleton (cdr skeleton)))) ((eq element '@) - (setq skeleton-positions (cons (point) skeleton-positions))) + (if skeleton-point + (push (point) skeleton-positions) + (setq skeleton-point (point)))) ((eq 'quote (car-safe element)) (eval (nth 1 element))) ((or (stringp (car-safe element))