Function: skeleton-internal-list
skeleton-internal-list is a byte-compiled function defined in
skeleton.el.gz.
Signature
(skeleton-internal-list SKELETON &optional STR RECURSIVE)
Source Code
;; Defined in /usr/src/emacs/lisp/skeleton.el.gz
(defun skeleton-internal-list (skeleton &optional str recursive)
(let* ((start (line-beginning-position))
(column (current-column))
(line (buffer-substring start (line-end-position)))
(skeleton-il skeleton)
opoint)
(with-suppressed-warnings ((lexical str))
(dlet ((str (or str
`(setq str
(skeleton-read ',(car skeleton-il)
nil ,recursive))))
resume:)
(when (and (eq (cadr skeleton-il) '\n) (not recursive)
(save-excursion (skip-chars-backward " \t") (bolp)))
(setq skeleton-il (cons nil (cons '> (cddr skeleton-il)))))
(while (setq skeleton-modified (eq opoint (point))
opoint (point)
skeleton-il (cdr skeleton-il))
(condition-case quit
(skeleton-internal-1 (car skeleton-il) nil recursive)
(quit
(if (eq (cdr quit) 'recursive)
(setq recursive 'quit
skeleton-il (memq 'resume: skeleton-il))
;; Remove the subskeleton as far as it has been shown
;; the subskeleton shouldn't have deleted outside current line.
(end-of-line)
(delete-region start (point))
(insert line)
(move-to-column column)
(if (cdr quit)
(setq skeleton-il ()
recursive nil)
(signal 'quit 'recursive)))))))))
;; maybe continue loop or go on to next outer resume: section
(if (eq recursive 'quit)
(signal 'quit 'recursive)
recursive))