Mercurial > emacs
changeset 26519:693b53fde264
Use new backquote syntax.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Sun, 21 Nov 1999 14:49:20 +0000 |
parents | ed1016f53081 |
children | bd832bb8fbc0 |
files | lisp/emacs-lisp/cust-print.el lisp/emacs-lisp/edebug.el lisp/progmodes/hideif.el |
diffstat | 3 files changed, 204 insertions(+), 238 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/cust-print.el Sun Nov 21 14:25:14 1999 +0000 +++ b/lisp/emacs-lisp/cust-print.el Sun Nov 21 14:49:20 1999 +0000 @@ -9,7 +9,6 @@ ;; LCD Archive Entry: ;; cust-print|Daniel LaLiberte|liberte@cs.uiuc.edu ;; |Handle print-level, print-circle and more. -;; |$Date: 1994/04/05 21:05:09 $|$Revision: 1.14 $| ;; This file is part of GNU Emacs. @@ -24,54 +23,10 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, +;; Boston, MA 02111-1307, USA. -;;; =============================== -;;; $Header: $ -;;; $Log: cust-print.el,v $ -;;; Revision 1.14 1994/04/05 21:05:09 liberte -;;; Change install- and uninstall- to -install and -uninstall. -;;; -;;; Revision 1.13 1994/03/24 20:26:05 liberte -;;; Change "internal" to "original" throughout. -;;; (add-custom-printer, delete-custom-printer) replace customizers. -;;; (with-custom-print) new -;;; (custom-prin1-to-string) Made it more robust. -;;; -;;; Revision 1.4 1994/03/23 20:34:29 liberte -;;; * Change "emacs" to "original" - I just can't decide. -;;; -;;; Revision 1.3 1994/02/21 21:25:36 liberte -;;; * Make custom-prin1-to-string more robust when errors occur. -;;; * Change "internal" to "emacs". -;;; -;;; Revision 1.2 1993/11/22 22:36:36 liberte -;;; * Simplified and generalized printer customization. -;;; custom-printers is an alist of (PREDICATE . PRINTER) pairs -;;; for any data types. The PRINTER function should print to -;;; `standard-output' add-custom-printer and delete-custom-printer -;;; change custom-printers. -;;; -;;; * Installation function now called install-custom-print. The -;;; old name is still around for now. -;;; -;;; * New macro with-custom-print (added earlier) - executes like -;;; progn but with custom-print activated temporarily. -;;; -;;; * Cleaned up comments for replacements of standardard printers. -;;; -;;; * Changed custom-prin1-to-string to use a temporary buffer. -;;; -;;; * Option custom-print-vectors (added earlier) - controls whether -;;; vectors should be printed according to print-length and -;;; print-length. Emacs doesnt do this, but cust-print would -;;; otherwise do it only if custom printing is required. -;;; -;;; * Uninterned symbols are treated as non-read-equivalent. -;;; - - ;;; Commentary: ;; This package provides a general print handler for prin1 and princ @@ -127,7 +82,12 @@ ;;; Code: -;;========================================================= + +(defgroup cust-print nil + "Handles print-level and print-circle." + :prefix "print-" + :group 'lisp + :group 'extensions) ;; If using cl-packages: @@ -157,9 +117,7 @@ '(in-package cust-print) -(require 'backquote) - -;; Emacs 18 doesnt have defalias. +;; Emacs 18 doesn't have defalias. ;; Provide def for byte compiler. (eval-and-compile (or (fboundp 'defalias) (fset 'defalias 'fset))) @@ -172,7 +130,7 @@ ;; "*Controls how many elements of a list, at each level, are printed. ;;This is defined by emacs.") -(defvar print-level nil +(defcustom print-level nil "*Controls how many levels deep a nested data object will print. If nil, printing proceeds recursively and may lead to @@ -183,10 +141,12 @@ If non-nil, components at levels equal to or greater than `print-level' are printed simply as `#'. The object to be printed is at level 0, and if the object is a list or vector, its top-level components are at -level 1.") +level 1." + :type '(choice (const nil) integer) + :group 'cust-print) -(defvar print-circle nil +(defcustom print-circle nil "*Controls the printing of recursive structures. If nil, printing proceeds recursively and may lead to @@ -200,15 +160,19 @@ where N is a positive decimal integer. There is no way to read this representation in standard Emacs, -but if you need to do so, try the cl-read.el package.") +but if you need to do so, try the cl-read.el package." + :type 'boolean + :group 'cust-print) -(defvar custom-print-vectors nil +(defcustom custom-print-vectors nil "*Non-nil if printing of vectors should obey print-level and print-length. For Emacs 18, setting print-level, or adding custom print list or vector handling will make this happen anyway. Emacs 19 obeys -print-level, but not for vectors.") +print-level, but not for vectors." + :type 'boolean + :group 'cust-print) ;; Custom printers @@ -227,7 +191,7 @@ `delete-custom-printer'") ;; Should cust-print-original-princ and cust-print-prin be exported symbols? ;; Or should the standard printers functions be replaced by -;; CP ones in elisp so that CP internal functions need not be called? +;; CP ones in Emacs Lisp so that CP internal functions need not be called? (defun add-custom-printer (pred printer) "Add a pair of PREDICATE and PRINTER to `custom-printers'. @@ -252,20 +216,20 @@ (defun cust-print-update-custom-printers () ;; Modify the definition of cust-print-use-custom-printer (defalias 'cust-print-use-custom-printer - ;; We dont really want to require the byte-compiler. + ;; We don't really want to require the byte-compiler. ;; (byte-compile - (` (lambda (object) - (cond - (,@ (mapcar (function - (lambda (pair) - (` (((, (car pair)) object) - ((, (cdr pair)) object))))) - custom-printers)) - ;; Otherwise return nil. - (t nil) - ))) - ;; ) - )) + `(lambda (object) + (cond + ,@(mapcar (function + (lambda (pair) + `((,(car pair) object) + (,(cdr pair) object)))) + custom-printers) + ;; Otherwise return nil. + (t nil) + )) + ;; ) + )) ;; Saving and restoring emacs printing routines. @@ -330,11 +294,11 @@ (defalias 'with-custom-print-funcs 'with-custom-print) (defmacro with-custom-print (&rest body) "Temporarily install the custom print package while executing BODY." - (` (unwind-protect - (progn - (custom-print-install) - (,@ body)) - (custom-print-uninstall)))) + `(unwind-protect + (progn + (custom-print-install) + ,@body) + (custom-print-uninstall))) ;; Lisp replacements for prin1 and princ, and for some subrs that use them @@ -363,20 +327,23 @@ (cust-print-top-level object stream 'cust-print-original-princ)) -(defun custom-prin1-to-string (object) +(defun custom-prin1-to-string (object &optional noescape) "Return a string containing the printed representation of OBJECT, any Lisp object. Quoting characters are used when needed to make output -that `read' can handle, whenever this is possible. +that `read' can handle, whenever this is possible, unless the optional +second argument NOESCAPE is non-nil. This is the custom-print replacement for the standard `prin1-to-string'." (let ((buf (get-buffer-create " *custom-print-temp*"))) ;; We must erase the buffer before printing in case an error - ;; occured during the last prin1-to-string and we are in debugger. + ;; occurred during the last prin1-to-string and we are in debugger. (save-excursion (set-buffer buf) (erase-buffer)) ;; We must be in the current-buffer when the print occurs. - (custom-prin1 object buf) + (if noescape + (custom-princ object buf) + (custom-prin1 object buf)) (save-excursion (set-buffer buf) (buffer-string)
--- a/lisp/emacs-lisp/edebug.el Sun Nov 21 14:25:14 1999 +0000 +++ b/lisp/emacs-lisp/edebug.el Sun Nov 21 14:49:20 1999 +0000 @@ -266,7 +266,7 @@ "Set the edebug-form-spec property of SYMBOL according to SPEC. Both SYMBOL and SPEC are unevaluated. The SPEC can be 0, t, a symbol \(naming a function), or a list." - (` (put (quote (, symbol)) 'edebug-form-spec (quote (, spec))))) + `(put (quote ,symbol) 'edebug-form-spec (quote ,spec))) (defmacro def-edebug-form-spec (symbol spec-form) "For compatibility with old version. Use `def-edebug-spec' instead." @@ -398,13 +398,13 @@ and the restriction will be restored to the original buffer, and the current buffer remains current. Return the result of the last expression in BODY." - (` (let ((edebug:s-r-beg (point-min-marker)) - (edebug:s-r-end (point-max-marker))) - (unwind-protect - (progn (,@ body)) - (save-excursion - (set-buffer (marker-buffer edebug:s-r-beg)) - (narrow-to-region edebug:s-r-beg edebug:s-r-end)))))) + `(let ((edebug:s-r-beg (point-min-marker)) + (edebug:s-r-end (point-max-marker))) + (unwind-protect + (progn ,@body) + (save-excursion + (set-buffer (marker-buffer edebug:s-r-beg)) + (narrow-to-region edebug:s-r-beg edebug:s-r-end))))) ;;; Display @@ -850,11 +850,11 @@ (put 'edebug-storing-offsets 'lisp-indent-hook 1) (defmacro edebug-storing-offsets (point &rest body) - (` (unwind-protect - (progn - (edebug-store-before-offset (, point)) - (,@ body)) - (edebug-store-after-offset (point))))) + `(unwind-protect + (progn + (edebug-store-before-offset ,point) + ,@body) + (edebug-store-after-offset (point)))) ;;; Reader for Emacs Lisp. @@ -1214,9 +1214,9 @@ (defun edebug-wrap-def-body (forms) "Wrap the FORMS of a definition body." (if edebug-def-interactive - (` (let (((, (edebug-interactive-p-name)) - (interactive-p))) - (, (edebug-make-enter-wrapper forms)))) + `(let ((,(edebug-interactive-p-name) + (interactive-p))) + ,(edebug-make-enter-wrapper forms)) (edebug-make-enter-wrapper forms))) @@ -1228,16 +1228,15 @@ ;; Do this after parsing since that may find a name. (setq edebug-def-name (or edebug-def-name edebug-old-def-name (edebug-gensym "edebug-anon"))) - (` (edebug-enter - (quote (, edebug-def-name)) - (, (if edebug-inside-func - (` (list (,@ - ;; Doesn't work with more than one def-body!! - ;; But the list will just be reversed. - (nreverse edebug-def-args)))) - 'nil)) - (function (lambda () (,@ forms))) - ))) + `(edebug-enter + (quote ,edebug-def-name) + ,(if edebug-inside-func + `(list (;; Doesn't work with more than one def-body!! + ;; But the list will just be reversed. + ,@(nreverse edebug-def-args))) + 'nil) + (function (lambda () ,@forms)) + )) (defvar edebug-form-begin-marker) ; the mark for def being instrumented @@ -2333,12 +2332,12 @@ (defmacro edebug-tracing (msg &rest body) "Print MSG in *edebug-trace* before and after evaluating BODY. The result of BODY is also printed." - (` (let ((edebug-stack-depth (1+ edebug-stack-depth)) - edebug-result) - (edebug-print-trace-before (, msg)) - (prog1 (setq edebug-result (progn (,@ body))) - (edebug-print-trace-after - (format "%s result: %s" (, msg) edebug-result)))))) + `(let ((edebug-stack-depth (1+ edebug-stack-depth)) + edebug-result) + (edebug-print-trace-before ,msg) + (prog1 (setq edebug-result (progn ,@body)) + (edebug-print-trace-after + (format "%s result: %s" ,msg edebug-result))))) (defun edebug-print-trace-before (msg) "Function called to print trace info before expression evaluation. @@ -2998,14 +2997,14 @@ (if edebug-save-windows "on" "off"))) (defmacro edebug-changing-windows (&rest body) - (` (let ((window (selected-window))) - (setq edebug-inside-windows (edebug-current-windows t)) - (edebug-set-windows edebug-outside-windows) - (,@ body) ;; Code to change edebug-save-windows - (setq edebug-outside-windows (edebug-current-windows - edebug-save-windows)) - ;; Problem: what about outside windows that are deleted inside? - (edebug-set-windows edebug-inside-windows)))) + `(let ((window (selected-window))) + (setq edebug-inside-windows (edebug-current-windows t)) + (edebug-set-windows edebug-outside-windows) + ,@body;; Code to change edebug-save-windows + (setq edebug-outside-windows (edebug-current-windows + edebug-save-windows)) + ;; Problem: what about outside windows that are deleted inside? + (edebug-set-windows edebug-inside-windows))) (defun edebug-toggle-save-selected-window () "Toggle the saving and restoring of the selected window. @@ -3542,89 +3541,89 @@ (defmacro edebug-outside-excursion (&rest body) "Evaluate an expression list in the outside context. Return the result of the last expression." - (` (save-excursion ; of current-buffer - (if edebug-save-windows - (progn - ;; After excursion, we will - ;; restore to current window configuration. - (setq edebug-inside-windows - (edebug-current-windows edebug-save-windows)) - ;; Restore outside windows. - (edebug-set-windows edebug-outside-windows))) - - (set-buffer edebug-buffer) ; why? - ;; (use-local-map edebug-outside-map) - (set-match-data edebug-outside-match-data) - ;; Restore outside context. - (let (;; (edebug-inside-map (current-local-map)) ;; restore map?? - (last-command-char edebug-outside-last-command-char) - (last-command-event edebug-outside-last-command-event) - (last-command edebug-outside-last-command) - (this-command edebug-outside-this-command) - (unread-command-char edebug-outside-unread-command-char) - (unread-command-event edebug-outside-unread-command-event) - (unread-command-events edebug-outside-unread-command-events) - (current-prefix-arg edebug-outside-current-prefix-arg) - (last-input-char edebug-outside-last-input-char) - (last-input-event edebug-outside-last-input-event) - (last-event-frame edebug-outside-last-event-frame) - (last-nonmenu-event edebug-outside-last-nonmenu-event) - (track-mouse edebug-outside-track-mouse) - (standard-output edebug-outside-standard-output) - (standard-input edebug-outside-standard-input) - - (executing-kbd-macro edebug-outside-executing-macro) - (defining-kbd-macro edebug-outside-defining-kbd-macro) - (pre-command-hook edebug-outside-pre-command-hook) - (post-command-hook edebug-outside-post-command-hook) - - ;; See edebug-display - (overlay-arrow-position edebug-outside-o-a-p) - (overlay-arrow-string edebug-outside-o-a-s) - (cursor-in-echo-area edebug-outside-c-i-e-a) - ) - (unwind-protect - (save-excursion ; of edebug-buffer - (set-buffer edebug-outside-buffer) - (goto-char edebug-outside-point) - (if (marker-buffer (edebug-mark-marker)) - (set-marker (edebug-mark-marker) edebug-outside-mark)) - (,@ body)) - - ;; Back to edebug-buffer. Restore rest of inside context. - ;; (use-local-map edebug-inside-map) - (if edebug-save-windows - ;; Restore inside windows. - (edebug-set-windows edebug-inside-windows)) - - ;; Save values that may have been changed. - (setq - edebug-outside-last-command-char last-command-char - edebug-outside-last-command-event last-command-event - edebug-outside-last-command last-command - edebug-outside-this-command this-command - edebug-outside-unread-command-char unread-command-char - edebug-outside-unread-command-event unread-command-event - edebug-outside-unread-command-events unread-command-events - edebug-outside-current-prefix-arg current-prefix-arg - edebug-outside-last-input-char last-input-char - edebug-outside-last-input-event last-input-event - edebug-outside-last-event-frame last-event-frame - edebug-outside-last-nonmenu-event last-nonmenu-event - edebug-outside-track-mouse track-mouse - edebug-outside-standard-output standard-output - edebug-outside-standard-input standard-input - - edebug-outside-executing-macro executing-kbd-macro - edebug-outside-defining-kbd-macro defining-kbd-macro - edebug-outside-pre-command-hook pre-command-hook - edebug-outside-post-command-hook post-command-hook - - edebug-outside-o-a-p overlay-arrow-position - edebug-outside-o-a-s overlay-arrow-string - edebug-outside-c-i-e-a cursor-in-echo-area - ))) ; let - ))) + `(save-excursion ; of current-buffer + (if edebug-save-windows + (progn + ;; After excursion, we will + ;; restore to current window configuration. + (setq edebug-inside-windows + (edebug-current-windows edebug-save-windows)) + ;; Restore outside windows. + (edebug-set-windows edebug-outside-windows))) + + (set-buffer edebug-buffer) ; why? + ;; (use-local-map edebug-outside-map) + (set-match-data edebug-outside-match-data) + ;; Restore outside context. + (let (;; (edebug-inside-map (current-local-map)) ;; restore map?? + (last-command-char edebug-outside-last-command-char) + (last-command-event edebug-outside-last-command-event) + (last-command edebug-outside-last-command) + (this-command edebug-outside-this-command) + (unread-command-char edebug-outside-unread-command-char) + (unread-command-event edebug-outside-unread-command-event) + (unread-command-events edebug-outside-unread-command-events) + (current-prefix-arg edebug-outside-current-prefix-arg) + (last-input-char edebug-outside-last-input-char) + (last-input-event edebug-outside-last-input-event) + (last-event-frame edebug-outside-last-event-frame) + (last-nonmenu-event edebug-outside-last-nonmenu-event) + (track-mouse edebug-outside-track-mouse) + (standard-output edebug-outside-standard-output) + (standard-input edebug-outside-standard-input) + + (executing-kbd-macro edebug-outside-executing-macro) + (defining-kbd-macro edebug-outside-defining-kbd-macro) + (pre-command-hook edebug-outside-pre-command-hook) + (post-command-hook edebug-outside-post-command-hook) + + ;; See edebug-display + (overlay-arrow-position edebug-outside-o-a-p) + (overlay-arrow-string edebug-outside-o-a-s) + (cursor-in-echo-area edebug-outside-c-i-e-a) + ) + (unwind-protect + (save-excursion ; of edebug-buffer + (set-buffer edebug-outside-buffer) + (goto-char edebug-outside-point) + (if (marker-buffer (edebug-mark-marker)) + (set-marker (edebug-mark-marker) edebug-outside-mark)) + ,@body) + + ;; Back to edebug-buffer. Restore rest of inside context. + ;; (use-local-map edebug-inside-map) + (if edebug-save-windows + ;; Restore inside windows. + (edebug-set-windows edebug-inside-windows)) + + ;; Save values that may have been changed. + (setq + edebug-outside-last-command-char last-command-char + edebug-outside-last-command-event last-command-event + edebug-outside-last-command last-command + edebug-outside-this-command this-command + edebug-outside-unread-command-char unread-command-char + edebug-outside-unread-command-event unread-command-event + edebug-outside-unread-command-events unread-command-events + edebug-outside-current-prefix-arg current-prefix-arg + edebug-outside-last-input-char last-input-char + edebug-outside-last-input-event last-input-event + edebug-outside-last-event-frame last-event-frame + edebug-outside-last-nonmenu-event last-nonmenu-event + edebug-outside-track-mouse track-mouse + edebug-outside-standard-output standard-output + edebug-outside-standard-input standard-input + + edebug-outside-executing-macro executing-kbd-macro + edebug-outside-defining-kbd-macro defining-kbd-macro + edebug-outside-pre-command-hook pre-command-hook + edebug-outside-post-command-hook post-command-hook + + edebug-outside-o-a-p overlay-arrow-position + edebug-outside-o-a-s overlay-arrow-string + edebug-outside-c-i-e-a cursor-in-echo-area + ))) ; let + )) (defvar cl-debug-env nil) ;; defined in cl; non-nil when lexical env used.
--- a/lisp/progmodes/hideif.el Sun Nov 21 14:25:14 1999 +0000 +++ b/lisp/progmodes/hideif.el Sun Nov 21 14:49:20 1999 +0000 @@ -356,9 +356,9 @@ (defun hif-infix-to-prefix (token-list) "Convert list of tokens in infix into prefix list" -; (message "hif-infix-to-prefix: %s" token-list) + ; (message "hif-infix-to-prefix: %s" token-list) (if (= 1 (length token-list)) - (` (hif-lookup (quote (, (car token-list))))) + `(hif-lookup (quote ,(car token-list))) (hif-parse-if-exp token-list)) ) @@ -489,41 +489,41 @@ (defun hif-factor () "Parse a factor: '!' factor | '(' expr ')' | 'defined(' id ')' | id." (cond - ((eq hif-token 'not) - (hif-nexttoken) - (list 'not (hif-factor))) + ((eq hif-token 'not) + (hif-nexttoken) + (list 'not (hif-factor))) - ((eq hif-token 'lparen) - (hif-nexttoken) - (let ((result (hif-expr))) - (if (not (eq hif-token 'rparen)) - (error "Bad token in parenthesized expression: %s" hif-token) - (hif-nexttoken) - result))) + ((eq hif-token 'lparen) + (hif-nexttoken) + (let ((result (hif-expr))) + (if (not (eq hif-token 'rparen)) + (error "Bad token in parenthesized expression: %s" hif-token) + (hif-nexttoken) + result))) - ((eq hif-token 'hif-defined) - (hif-nexttoken) - (if (not (eq hif-token 'lparen)) - (error "Error: expected \"(\" after \"defined\"")) - (hif-nexttoken) - (let ((ident hif-token)) - (if (memq hif-token '(or and not hif-defined lparen rparen)) - (error "Error: unexpected token: %s" hif-token)) - (hif-nexttoken) - (if (not (eq hif-token 'rparen)) - (error "Error: expected \")\" after identifier")) - (hif-nexttoken) - (` (hif-defined (quote (, ident)))) - )) + ((eq hif-token 'hif-defined) + (hif-nexttoken) + (if (not (eq hif-token 'lparen)) + (error "Error: expected \"(\" after \"defined\"")) + (hif-nexttoken) + (let ((ident hif-token)) + (if (memq hif-token '(or and not hif-defined lparen rparen)) + (error "Error: unexpected token: %s" hif-token)) + (hif-nexttoken) + (if (not (eq hif-token 'rparen)) + (error "Error: expected \")\" after identifier")) + (hif-nexttoken) + `(hif-defined (quote ,ident)) + )) - (t ; identifier - (let ((ident hif-token)) - (if (memq ident '(or and)) - (error "Error: missing identifier")) - (hif-nexttoken) - (` (hif-lookup (quote (, ident)))) - )) - )) + (t ; identifier + (let ((ident hif-token)) + (if (memq ident '(or and)) + (error "Error: missing identifier")) + (hif-nexttoken) + `(hif-lookup (quote ,ident)) + )) + )) (defun hif-mathify (val) "Treat VAL as a number: if it's t or nil, use 1 or 0."