]> git.eshelyaron.com Git - emacs.git/commitdiff
preceding-sexp
authorVinicius Jose Latorre <viniciusjl@ig.com.br>
Mon, 20 Aug 2007 15:52:47 +0000 (15:52 +0000)
committerVinicius Jose Latorre <viniciusjl@ig.com.br>
Mon, 20 Aug 2007 15:52:47 +0000 (15:52 +0000)
lisp/ChangeLog
lisp/emacs-lisp/lisp-mode.el

index e5390ccf057f1cee0cc81019ac1862cc9e83f1a5..eefd54257a439c74658bd000b60a34cf1d390c9f 100644 (file)
@@ -1,3 +1,9 @@
+2007-08-20  Johannes Weiner  <hannes@saeurebad.de>  (tiny change)
+
+       * emacs-lisp/lisp-mode.el (preceding-sexp): New fun, the code was
+       extracted from `eval-last-sexp-1'.
+       (eval-last-sexp-1): Call `preceding-sexp'.
+
 2007-08-19  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in (custom-deps, finder-data, autoloads, recompile)
index d41c0af3d730b642286dbd99ac965b11ea6e5d6e..8b3e5a71c61a709a253c051538e1d45ec041d9a0 100644 (file)
@@ -537,62 +537,65 @@ If CHAR is not a character, return nil."
              string))))
 
 
+(defun preceding-sexp ()
+  "Return sexp before the point."
+  (let ((opoint (point))
+       ignore-quotes
+       expr)
+    (save-excursion
+      (with-syntax-table emacs-lisp-mode-syntax-table
+       ;; If this sexp appears to be enclosed in `...'
+       ;; then ignore the surrounding quotes.
+       (setq ignore-quotes
+             (or (eq (following-char) ?\')
+                 (eq (preceding-char) ?\')))
+       (forward-sexp -1)
+       ;; If we were after `?\e' (or similar case),
+       ;; use the whole thing, not just the `e'.
+       (when (eq (preceding-char) ?\\)
+         (forward-char -1)
+         (when (eq (preceding-char) ??)
+           (forward-char -1)))
+
+       ;; Skip over `#N='s.
+       (when (eq (preceding-char) ?=)
+         (let (labeled-p)
+           (save-excursion
+             (skip-chars-backward "0-9#=")
+             (setq labeled-p (looking-at "\\(#[0-9]+=\\)+")))
+           (when labeled-p
+             (forward-sexp -1))))
+
+       (save-restriction
+         ;; vladimir@cs.ualberta.ca 30-Jul-1997: skip ` in
+         ;; `variable' so that the value is returned, not the
+         ;; name
+         (if (and ignore-quotes
+                  (eq (following-char) ?`))
+             (forward-char))
+         (narrow-to-region (point-min) opoint)
+         (setq expr (read (current-buffer)))
+         ;; If it's an (interactive ...) form, it's more
+         ;; useful to show how an interactive call would
+         ;; use it.
+         (and (consp expr)
+              (eq (car expr) 'interactive)
+              (setq expr
+                    (list 'call-interactively
+                          (list 'quote
+                                (list 'lambda
+                                      '(&rest args)
+                                      expr
+                                      'args)))))
+         expr)))))
+
+
 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal)
   "Evaluate sexp before point; print value in minibuffer.
 With argument, print output into current buffer."
   (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t)))
-    (let ((value
-          (eval (let ((stab (syntax-table))
-                      (opoint (point))
-                      ignore-quotes
-                      expr)
-                  (save-excursion
-                    (with-syntax-table emacs-lisp-mode-syntax-table
-                      ;; If this sexp appears to be enclosed in `...'
-                      ;; then ignore the surrounding quotes.
-                      (setq ignore-quotes
-                            (or (eq (following-char) ?\')
-                                (eq (preceding-char) ?\')))
-                      (forward-sexp -1)
-                      ;; If we were after `?\e' (or similar case),
-                      ;; use the whole thing, not just the `e'.
-                      (when (eq (preceding-char) ?\\)
-                        (forward-char -1)
-                        (when (eq (preceding-char) ??)
-                          (forward-char -1)))
-
-                      ;; Skip over `#N='s.
-                      (when (eq (preceding-char) ?=)
-                        (let (labeled-p)
-                          (save-excursion
-                            (skip-chars-backward "0-9#=")
-                            (setq labeled-p (looking-at "\\(#[0-9]+=\\)+")))
-                          (when labeled-p
-                            (forward-sexp -1))))
-
-                      (save-restriction
-                        ;; vladimir@cs.ualberta.ca 30-Jul-1997: skip ` in
-                        ;; `variable' so that the value is returned, not the
-                        ;; name
-                        (if (and ignore-quotes
-                                 (eq (following-char) ?`))
-                            (forward-char))
-                        (narrow-to-region (point-min) opoint)
-                        (setq expr (read (current-buffer)))
-                        ;; If it's an (interactive ...) form, it's more
-                        ;; useful to show how an interactive call would
-                        ;; use it.
-                        (and (consp expr)
-                             (eq (car expr) 'interactive)
-                             (setq expr
-                                   (list 'call-interactively
-                                         (list 'quote
-                                               (list 'lambda
-                                                     '(&rest args)
-                                                     expr
-                                                     'args)))))
-                        expr)))))))
-      (eval-last-sexp-print-value value))))
+    (eval-last-sexp-print-value (eval (preceding-sexp)))))
+
 
 (defun eval-last-sexp-print-value (value)
   (let ((unabbreviated (let ((print-length nil) (print-level nil))