emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/lisp.el


From: Juri Linkov
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/lisp.el
Date: Fri, 28 May 2004 18:21:35 -0400

Index: emacs/lisp/emacs-lisp/lisp.el
diff -c emacs/lisp/emacs-lisp/lisp.el:1.54 emacs/lisp/emacs-lisp/lisp.el:1.55
*** emacs/lisp/emacs-lisp/lisp.el:1.54  Sat May 22 07:41:55 2004
--- emacs/lisp/emacs-lisp/lisp.el       Fri May 28 21:12:25 2004
***************
*** 337,343 ****
        (re-search-backward "^\n" (- (point) 1) t)
        (narrow-to-region beg end))))
  
! (defun insert-pair (arg &optional open close)
    "Enclose following ARG sexps in a pair of OPEN and CLOSE characters.
  Leave point after the first character.
  A negative ARG encloses the preceding ARG sexps instead.
--- 337,351 ----
        (re-search-backward "^\n" (- (point) 1) t)
        (narrow-to-region beg end))))
  
! (defvar insert-pair-alist
!   '((?\( ?\)) (?\[ ?\]) (?\{ ?\}) (?\< ?\>) (?\" ?\") (?\' ?\') (?\` ?\'))
!   "Alist of paired characters inserted by `insert-pair'.
! Each element looks like (OPEN-CHAR CLOSE-CHAR) or (COMMAND-CHAR
! OPEN-CHAR CLOSE-CHAR).  The characters OPEN-CHAR and CLOSE-CHAR
! of the pair whose key is equal to the last input character with
! or without modifiers, are inserted by `insert-pair'.")
! 
! (defun insert-pair (&optional arg open close)
    "Enclose following ARG sexps in a pair of OPEN and CLOSE characters.
  Leave point after the first character.
  A negative ARG encloses the preceding ARG sexps instead.
***************
*** 345,376 ****
  and leave point between.
  If `parens-require-spaces' is non-nil, this command also inserts a space
  before and after, depending on the surrounding characters.
! If region is active, insert enclosing characters at region boundaries."
    (interactive "P")
!   (if arg (setq arg (prefix-numeric-value arg))
!     (setq arg 0))
!   (or open  (setq open  ?\())
!   (or close (setq close ?\)))
!   (if (and transient-mark-mode mark-active)
!       (progn
!         (save-excursion (goto-char (region-end))       (insert close))
!         (save-excursion (goto-char (region-beginning)) (insert open)))
!     (cond ((> arg 0) (skip-chars-forward " \t"))
!           ((< arg 0) (forward-sexp arg) (setq arg (- arg))))
!     (and parens-require-spaces
!          (not (bobp))
!          (memq (char-syntax (preceding-char)) (list ?w ?_ (char-syntax 
close)))
!          (insert " "))
!     (insert open)
!     (save-excursion
!       (or (eq arg 0) (forward-sexp arg))
!       (insert close)
!       (and parens-require-spaces
!            (not (eobp))
!            (memq (char-syntax (following-char)) (list ?w ?_ (char-syntax 
open)))
!            (insert " ")))))
  
! (defun insert-parentheses (arg)
    "Enclose following ARG sexps in parentheses.  Leave point after open-paren.
  A negative ARG encloses the preceding ARG sexps instead.
  No argument is equivalent to zero: just insert `()' and leave point between.
--- 353,399 ----
  and leave point between.
  If `parens-require-spaces' is non-nil, this command also inserts a space
  before and after, depending on the surrounding characters.
! If region is active, insert enclosing characters at region boundaries.
! 
! If arguments OPEN and CLOSE are nil, the character pair is found
! from the variable `insert-pair-alist' according to the last input
! character with or without modifiers.  If no character pair is
! found in the variable `insert-pair-alist', then the last input
! character is inserted ARG times."
    (interactive "P")
!   (if (not (and open close))
!       (let ((pair (or (assq last-command-char insert-pair-alist)
!                       (assq (event-basic-type last-command-event)
!                             insert-pair-alist))))
!         (if pair
!             (if (nth 2 pair)
!                 (setq open (nth 1 pair) close (nth 2 pair))
!               (setq open (nth 0 pair) close (nth 1 pair))))))
!   (if (and open close)
!       (if (and transient-mark-mode mark-active)
!           (progn
!             (save-excursion (goto-char (region-end))       (insert close))
!             (save-excursion (goto-char (region-beginning)) (insert open)))
!         (if arg (setq arg (prefix-numeric-value arg))
!           (setq arg 0))
!         (cond ((> arg 0) (skip-chars-forward " \t"))
!               ((< arg 0) (forward-sexp arg) (setq arg (- arg))))
!         (and parens-require-spaces
!              (not (bobp))
!              (memq (char-syntax (preceding-char)) (list ?w ?_ (char-syntax 
close)))
!              (insert " "))
!         (insert open)
!         (save-excursion
!           (or (eq arg 0) (forward-sexp arg))
!           (insert close)
!           (and parens-require-spaces
!                (not (eobp))
!                (memq (char-syntax (following-char)) (list ?w ?_ (char-syntax 
open)))
!                (insert " "))))
!     (insert-char (event-basic-type last-command-event)
!                  (prefix-numeric-value arg))))
  
! (defun insert-parentheses (&optional arg)
    "Enclose following ARG sexps in parentheses.  Leave point after open-paren.
  A negative ARG encloses the preceding ARG sexps instead.
  No argument is equivalent to zero: just insert `()' and leave point between.
***************
*** 379,384 ****
--- 402,425 ----
  If region is active, insert enclosing characters at region boundaries."
    (interactive "P")
    (insert-pair arg ?\( ?\)))
+ 
+ (defun delete-pair ()
+   "Delete a pair of characters enclosing the sexp that follows point."
+   (interactive)
+   (save-excursion (forward-sexp 1) (delete-char -1))
+   (delete-char 1))
+ 
+ (defun raise-sexp (&optional arg)
+   "Raise ARG sexps higher up the tree."
+   (interactive "p")
+   (let ((s (if (and transient-mark-mode mark-active)
+                (buffer-substring (region-beginning) (region-end))
+              (buffer-substring
+               (point)
+               (save-excursion (forward-sexp arg) (point))))))
+     (backward-up-list 1)
+     (delete-region (point) (save-excursion (forward-sexp 1) (point)))
+     (save-excursion (insert s))))
  
  (defun move-past-close-and-reindent ()
    "Move past next `)', delete indentation before it, then indent after it."




reply via email to

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