emacs-diffs
[Top][All Lists]
Advanced

[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: Sun, 25 May 2003 21:02:31 -0400

Index: emacs/lisp/skeleton.el
diff -c emacs/lisp/skeleton.el:1.36 emacs/lisp/skeleton.el:1.37
*** emacs/lisp/skeleton.el:1.36 Sat May 24 21:31:48 2003
--- emacs/lisp/skeleton.el      Sun May 25 21:02:31 2003
***************
*** 399,408 ****
      (push (point) skeleton-positions))
     ((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))
--- 399,411 ----
      (push (point) skeleton-positions))
     ((eq 'quote (car-safe element))
      (eval (nth 1 element)))
!    ((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))
***************
*** 462,467 ****
--- 465,476 ----
  
  Elements might be (?` ?` _ \"''\"), (?\\( ?  _ \" )\") or (?{ \\n > _ \\n ?} 
>).")
  
+ (defvar skeleton-pair-default-alist '((?( _ ?)) (?\))
+                                     (?[ _ ?]) (?\])
+                                     (?{ _ ?}) (?\})
+                                     (?< _ ?>) (?\>)
+                                     (?« _ ?») (?\»)
+                                     (?` _ ?')))
  
  ;;;###autoload
  (defun skeleton-pair-insert-maybe (arg)
***************
*** 478,505 ****
  the defaults are used.  These are (), [], {}, <> and `' for the
  symmetrical ones, and the same character twice for the others."
    (interactive "*P")
!   (let ((mark (and skeleton-autowrap
!                  (or (eq last-command 'mouse-drag-region)
!                      (and transient-mark-mode mark-active))))
!       (skeleton-end-hook))
!     (if (or arg
!           (not skeleton-pair)
!           (memq (char-syntax (preceding-char)) '(?\\ ?/))
!           (and (not mark)
!                (or overwrite-mode
!                    (if (not skeleton-pair-on-word) (looking-at "\\w"))
!                    (funcall skeleton-pair-filter))))
!       (self-insert-command (prefix-numeric-value arg))
!       (setq last-command-char (logand last-command-char 255))
!       (skeleton-insert
!        (cons nil (or (assq last-command-char skeleton-pair-alist)
!                      (assq last-command-char '((?( _ ?))
!                                                (?[ _ ?])
!                                                (?{ _ ?})
!                                                (?< _ ?>)
!                                                (?` _ ?')))
!                      `(,last-command-char _ ,last-command-char)))
!        (if mark -1)))))
  
  
  ;; A more serious example can be found in sh-script.el
--- 487,509 ----
  the defaults are used.  These are (), [], {}, <> and `' for the
  symmetrical ones, and the same character twice for the others."
    (interactive "*P")
!   (if (or arg (not skeleton-pair))
!       (self-insert-command (prefix-numeric-value arg))
!     (let* ((mark (and skeleton-autowrap
!                     (or (eq last-command 'mouse-drag-region)
!                         (and transient-mark-mode mark-active))))
!          (skeleton-end-hook)
!          (char last-command-char)
!          (skeleton (or (assq char skeleton-pair-alist)
!                        (assq char skeleton-pair-default-alist)
!                        `(,char _ ,char))))
!       (if (or (memq (char-syntax (preceding-char)) '(?\\ ?/))
!             (and (not mark)
!                  (or overwrite-mode
!                      (if (not skeleton-pair-on-word) (looking-at "\\w"))
!                      (funcall skeleton-pair-filter))))
!         (self-insert-command (prefix-numeric-value arg))
!       (skeleton-insert (cons nil skeleton) (if mark -1))))))
  
  
  ;; A more serious example can be found in sh-script.el




reply via email to

[Prev in Thread] Current Thread [Next in Thread]