`skeleton-transformation'). Other possibilities are:
\\n go to next line and indent according to mode
- _ interesting point, interregion here, point after termination
+ _ interesting point, interregion here
> indent line (or interregion if > _) according to major mode
@ add position to `skeleton-positions'
& do next ELEMENT if previous moved point
resume: skipped, continue here if quit is signaled
nil skipped
+After termination, point will be positioned at the first occurrence
+of _ or @ or at the end of the inserted text.
+
Further elements can be defined via `skeleton-further-elements'. ELEMENT may
itself be a SKELETON with an INTERACTOR. The user is prompted repeatedly for
different inputs. The SKELETON is processed as often as the user enters a
(or (eolp) (newline))
(indent-region (line-beginning-position)
(car skeleton-regions) nil))
+ ;; \n as last element only inserts \n if not at eol.
((and (null (cdr skeleton)) (eolp)) nil)
(skeleton-newline-indent-rigidly
(indent-to (prog1 (current-indentation) (newline))))
(or skeleton-point
(setq skeleton-point (point)))))
((eq element '&)
- (if skeleton-modified
- (setq skeleton (cdr skeleton))))
+ (when skeleton-modified (pop skeleton)))
((eq element '|)
- (or skeleton-modified
- (setq skeleton (cdr skeleton))))
+ (unless skeleton-modified (pop skeleton)))
((eq element '@)
(push (point) skeleton-positions)
(unless skeleton-point (setq skeleton-point (point))))