Function: skeleton-internal-1
skeleton-internal-1 is a byte-compiled function defined in
skeleton.el.gz.
Signature
(skeleton-internal-1 ELEMENT &optional LITERAL RECURSIVE)
Source Code
;; Defined in /usr/src/emacs/lisp/skeleton.el.gz
(defun skeleton-internal-1 (element &optional literal recursive)
(cond
((or (integerp element) (stringp element))
(if (and (integerp element) ; -num
(< element 0))
(if skeleton-untabify
(backward-delete-char-untabify (- element))
(delete-char element))
(insert (if (not literal)
(funcall skeleton-transformation-function element)
element))))
((or (eq element '\n) ; actually (eq '\n 'n)
;; The sequence `> \n' is handled specially so as to indent the first
;; line after inserting the newline (to get the proper indentation).
(and (eq element '>) (eq (nth 1 skeleton-il) '\n) (pop skeleton-il)))
(let ((pos (if (eq element '>) (point))))
(cond
((and skeleton-regions (eq (nth 1 skeleton-il) '_))
(or (eolp) (insert "\n"))
(if pos (save-excursion (goto-char pos) (indent-according-to-mode)))
(indent-region (line-beginning-position)
(car skeleton-regions) nil))
;; \n as last element only inserts \n if not at eol.
((and (null (cdr skeleton-il)) (not recursive) (eolp))
(if pos (indent-according-to-mode)))
(skeleton-newline-indent-rigidly
(let ((pt (point)))
(insert "\n")
(indent-to (save-excursion
(goto-char pt)
(if pos (indent-according-to-mode))
(current-indentation)))))
(t (if pos (reindent-then-newline-and-indent)
(insert "\n")
(indent-according-to-mode))))))
((eq element '>)
(if (and skeleton-regions (eq (nth 1 skeleton-il) '_))
(indent-region (line-beginning-position)
(car skeleton-regions) nil)
(indent-according-to-mode)))
((eq element '_)
(if skeleton-regions
(progn
(goto-char (pop skeleton-regions))
(and (<= (current-column) (current-indentation))
(eq (nth 1 skeleton-il) '\n)
(end-of-line 0)))
(or skeleton-point
(setq skeleton-point (point)))))
((eq element '-)
(setq skeleton-point (point)))
((eq element '&)
(when skeleton-modified (pop skeleton-il)))
((eq element '|)
(unless skeleton-modified (pop skeleton-il)))
((eq element '@)
(push (point) skeleton-positions))
((eq 'quote (car-safe element))
(eval (nth 1 element) t))
((and (consp element)
(or (stringp (car element)) (listp (car element))))
;; Don't forget: `symbolp' is also true for nil.
(if (symbolp (car-safe (car element)))
(while (and (skeleton-internal-list element nil t)
;; If the interactor is nil, don't infinite loop.
(car element)))
(setq literal (car element))
(while literal
(skeleton-internal-list element (car literal))
(setq literal (cdr literal)))))
((null element))
(t (skeleton-internal-1 (eval element t) t recursive))))