[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/skeleton.el
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/skeleton.el |
Date: |
Tue, 14 May 2002 10:14:12 -0400 |
Index: emacs/lisp/skeleton.el
diff -c emacs/lisp/skeleton.el:1.29 emacs/lisp/skeleton.el:1.30
*** emacs/lisp/skeleton.el:1.29 Sat Jul 14 07:21:08 2001
--- emacs/lisp/skeleton.el Tue May 14 10:14:11 2002
***************
*** 38,44 ****
;; page 3: mirror-mode, an example for setting up paired insertion
! (defvar skeleton-transformation nil
"*If non-nil, function applied to literal strings before they are inserted.
It should take strings and characters and return them transformed, or nil
which means no transformation.
--- 38,44 ----
;; page 3: mirror-mode, an example for setting up paired insertion
! (defvar skeleton-transformation 'identity
"*If non-nil, function applied to literal strings before they are inserted.
It should take strings and characters and return them transformed, or nil
which means no transformation.
***************
*** 301,317 ****
(and skeleton-regions
(setq skeleton-regions
(if (> skeleton-regions 0)
! (list (point-marker)
(save-excursion (forward-word skeleton-regions)
(point-marker)))
(setq skeleton-regions (- skeleton-regions))
;; copy skeleton-regions - 1 elements from `mark-ring'
(let ((l1 (cons (mark-marker) mark-ring))
! (l2 (list (point-marker))))
(while (and l1 (> skeleton-regions 0))
! (setq l2 (cons (car l1) l2)
! skeleton-regions (1- skeleton-regions)
! l1 (cdr l1)))
(sort l2 '<))))
(goto-char (car skeleton-regions))
(setq skeleton-regions (cdr skeleton-regions)))
--- 301,316 ----
(and skeleton-regions
(setq skeleton-regions
(if (> skeleton-regions 0)
! (list (copy-marker (point) t)
(save-excursion (forward-word skeleton-regions)
(point-marker)))
(setq skeleton-regions (- skeleton-regions))
;; copy skeleton-regions - 1 elements from `mark-ring'
(let ((l1 (cons (mark-marker) mark-ring))
! (l2 (list (copy-marker (point) t))))
(while (and l1 (> skeleton-regions 0))
! (push (copy-marker (pop l1) t) l2)
! (setq skeleton-regions (1- skeleton-regions)))
(sort l2 '<))))
(goto-char (car skeleton-regions))
(setq skeleton-regions (cdr skeleton-regions)))
***************
*** 378,390 ****
(defun skeleton-internal-list (skeleton &optional str recursive)
(let* ((start (save-excursion (beginning-of-line) (point)))
(column (current-column))
! (line (buffer-substring start
! (save-excursion (end-of-line) (point))))
opoint)
(or str
(setq str `(setq str (skeleton-read ',(car skeleton) nil ,recursive))))
(when (and (eq (cadr skeleton) '\n)
! (<= (current-column) (current-indentation)))
(setq skeleton (cons nil (cons '> (cddr skeleton)))))
(while (setq skeleton-modified (eq opoint (point))
opoint (point)
--- 377,388 ----
(defun skeleton-internal-list (skeleton &optional str recursive)
(let* ((start (save-excursion (beginning-of-line) (point)))
(column (current-column))
! (line (buffer-substring start (line-end-position)))
opoint)
(or str
(setq str `(setq str (skeleton-read ',(car skeleton) nil ,recursive))))
(when (and (eq (cadr skeleton) '\n)
! (save-excursion (skip-chars-backward " \t") (bolp)))
(setq skeleton (cons nil (cons '> (cddr skeleton)))))
(while (setq skeleton-modified (eq opoint (point))
opoint (point)
***************
*** 395,402 ****
(if (eq (cdr quit) 'recursive)
(setq recursive 'quit
skeleton (memq 'resume: skeleton))
! ;; 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)
--- 393,400 ----
(if (eq (cdr quit) 'recursive)
(setq recursive 'quit
skeleton (memq 'resume: skeleton))
! ;; 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)
***************
*** 410,477 ****
(signal 'quit 'recursive)
recursive))
-
(defun skeleton-internal-1 (element &optional literal)
! (cond ((char-or-string-p element)
! (if (and (integerp element) ; -num
! (< element 0))
! (if skeleton-untabify
! (backward-delete-char-untabify (- element))
! (delete-backward-char (- element)))
! (insert-before-markers (if (and skeleton-transformation
! (not literal))
! (funcall skeleton-transformation element)
! element))))
! ((eq element '\n) ; actually (eq '\n 'n)
! (cond
! ((and skeleton-regions (eq (nth 1 skeleton) '_))
! (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))))
! (t (newline) (indent-according-to-mode))))
! ((eq element '>)
! (if (and skeleton-regions (eq (nth 1 skeleton) '_))
! (indent-region (line-beginning-position)
! (car skeleton-regions) nil)
! (indent-according-to-mode)))
! ((eq element '_)
! (if skeleton-regions
! (progn
! (goto-char (car skeleton-regions))
! (setq skeleton-regions (cdr skeleton-regions))
! (and (<= (current-column) (current-indentation))
! (eq (nth 1 skeleton) '\n)
! (end-of-line 0)))
! (or skeleton-point
! (setq skeleton-point (point)))))
((eq element '&)
! (when skeleton-modified (pop skeleton)))
! ((eq element '|)
! (unless skeleton-modified (pop skeleton)))
! ((eq element '@)
! (push (point) skeleton-positions)
! (unless skeleton-point (setq skeleton-point (point))))
! ((eq 'quote (car-safe element))
! (eval (nth 1 element)))
! ((or (stringp (car-safe element))
! (consp (car-safe element)))
! (if (symbolp (car-safe (car element)))
! (while (skeleton-internal-list element nil t))
! (setq literal (car element))
! (while literal
! (skeleton-internal-list element (car literal))
! (setq literal (cdr literal)))))
! ((null element))
! ((skeleton-internal-1 (eval element) t))))
!
!
;; Maybe belongs into simple.el or elsewhere
! ;; ;###autoload
! ;;; (define-skeleton local-variables-section
;; "Insert a local variables section. Use current comment syntax if any."
;; (completing-read "Mode: " obarray
;; (lambda (symbol)
--- 408,486 ----
(signal 'quit 'recursive)
recursive))
(defun skeleton-internal-1 (element &optional literal)
! (cond
! ((char-or-string-p element)
! (if (and (integerp element) ; -num
! (< element 0))
! (if skeleton-untabify
! (backward-delete-char-untabify (- element))
! (delete-backward-char (- element)))
! (insert (if (and skeleton-transformation
! (not literal))
! (funcall skeleton-transformation 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) '\n) (pop skeleton)))
! (let ((pos (if (eq element '>) (point))))
! (cond
! ((and skeleton-regions (eq (nth 1 skeleton) '_))
! (or (eolp) (newline))
! (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)) (eolp))
! (if pos (indent-according-to-mode)))
! (skeleton-newline-indent-rigidly
! (let ((pt (point)))
! (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)
! (indent-according-to-mode))))))
! ((eq element '>)
! (if (and skeleton-regions (eq (nth 1 skeleton) '_))
! (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) '\n)
! (end-of-line 0)))
! (or skeleton-point
! (setq skeleton-point (point)))))
((eq element '&)
! (when skeleton-modified (pop skeleton)))
! ((eq element '|)
! (unless skeleton-modified (pop skeleton)))
! ((eq element '@)
! (push (point) skeleton-positions)
! (unless skeleton-point (setq skeleton-point (point))))
! ((eq 'quote (car-safe element))
! (eval (nth 1 element)))
! ((or (stringp (car-safe element))
! (consp (car-safe element)))
! (if (symbolp (car-safe (car element)))
! (while (skeleton-internal-list element nil t))
! (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))))
!
;; Maybe belongs into simple.el or elsewhere
! ;; ;;;###autoload
! ;; (define-skeleton local-variables-section
;; "Insert a local variables section. Use current comment syntax if any."
;; (completing-read "Mode: " obarray
;; (lambda (symbol)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/lisp/skeleton.el,
Stefan Monnier <=