commit 920a0adab326aeb02981f2dcd41b215259544798 (HEAD, refs/remotes/origin/master) Merge: 4a18d16 4786618 Author: Michael Albinus Date: Wed Aug 26 10:33:29 2015 +0200 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs commit 4a18d16e511ba0ef203d8addc8836618956667b0 Author: Michael Albinus Date: Wed Aug 26 10:33:11 2015 +0200 ; * tramp-compat.el: Remove superfluous comment; formatting diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 817c713..9848325 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -533,10 +533,9 @@ EOL-TYPE can be one of `dos', `unix', or `mac'." (cond ((eq eol-type 'dos) 'crlf) ((eq eol-type 'unix) 'lf) ((eq eol-type 'mac) 'cr) - (t - (error - "Unknown EOL-TYPE `%s', must be `dos', `unix', or `mac'" - eol-type))))) + (t (error + "Unknown EOL-TYPE `%s', must be `dos', `unix', or `mac'" + eol-type))))) (t (error "Can't change EOL conversion -- is MULE missing?")))) ;; `replace-regexp-in-string' does not exist in XEmacs. @@ -596,8 +595,6 @@ and replace a sub-expression, e.g. (defalias 'default-toplevel-value 'symbol-value)) ;; `format-message' is new in Emacs 25, and does not exist in XEmacs. -;; The substitute implementation always uses grave quoting style, for -;; compatibility with older Emacs. (unless (fboundp 'format-message) (defalias 'format-message 'format)) commit 0cdcc50d161035e74de55b0ff82c90730ff22136 Author: Michael Albinus Date: Wed Aug 26 10:32:02 2015 +0200 * lisp/net/tramp-cache.el (top): Use `message' but `format-message'. diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index 8f60ac4..bfcfe15 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -440,8 +440,8 @@ for all methods. Resulting data are derived from connection history." (clrhash tramp-cache-data)) (error ;; File is corrupted. - (format-message "Tramp persistency file `%s' is corrupted: %s" - tramp-persistency-file-name (error-message-string err)) + (message "Tramp persistency file `%s' is corrupted: %s" + tramp-persistency-file-name (error-message-string err)) (clrhash tramp-cache-data)))) (add-hook 'tramp-unload-hook commit 4786618fe7240e613434f30b9362826fab566b46 Author: Paul Eggert Date: Wed Aug 26 01:30:29 2015 -0700 Top-level elisp files respect ‘text-quoting-style’ In top-level elisp files, use format-message in diagnostic formats, so that they follow user preference as per ‘text-quoting-style’ rather than being hard-coded to quote `like this'. * lisp/allout.el (allout-get-configvar-values): * lisp/apropos.el (apropos-symbols-internal): * lisp/dired-aux.el (dired-do-shell-command, dired-create-files) (dired-do-create-files-regexp, dired-create-files-non-directory): * lisp/dired-x.el (dired-do-run-mail): * lisp/dired.el (dired-log, dired-dnd-handle-local-file): * lisp/disp-table.el (standard-display-european): * lisp/find-dired.el (find-dired): * lisp/forms.el (forms-mode): * lisp/ido.el (ido-buffer-internal): * lisp/info.el (Info-index-next): * lisp/outline.el (outline-invent-heading): * lisp/printing.el (pr-ps-outfile-preprint, pr-i-ps-send): * lisp/proced.el (proced-log): * lisp/ps-print.el (ps-print-preprint, ps-get-size): * lisp/recentf.el (recentf-open-files, recentf-save-list): * lisp/savehist.el (savehist-save): * lisp/server.el (server-ensure-safe-dir): * lisp/ses.el (ses-rename-cell): * lisp/simple.el (list-processes--refresh): * lisp/startup.el (command-line): * lisp/strokes.el (strokes-unset-last-stroke) (strokes-execute-stroke): Use format-message so that quotes are restyled. * lisp/cus-edit.el (custom-raised-buttons, customize-browse): Don’t quote ‘raised’. * lisp/descr-text.el (describe-char): * lisp/dirtrack.el (dirtrack-debug-message): * lisp/hexl.el (hexl-insert-multibyte-char): Apply substitute-command-keys to help string. * lisp/wdired.el (wdired-do-renames, wdired-do-symlink-changes) (wdired-do-perm-changes): Let dired-log do the formatting. diff --git a/lisp/allout.el b/lisp/allout.el index 9f79087..3ba440f 100644 --- a/lisp/allout.el +++ b/lisp/allout.el @@ -6490,8 +6490,9 @@ not its value." got) (dolist (sym configvar-value) (if (not (boundp sym)) - (if (yes-or-no-p (format "%s entry `%s' is unbound -- remove it? " - configvar-name sym)) + (if (yes-or-no-p (format-message + "%s entry `%s' is unbound -- remove it? " + configvar-name sym)) (delq sym (symbol-value configvar-name))) (push (symbol-value sym) got))) (reverse got))) diff --git a/lisp/apropos.el b/lisp/apropos.el index 38b583c..73f86df 100644 --- a/lisp/apropos.el +++ b/lisp/apropos.el @@ -727,11 +727,10 @@ the output includes key-bindings of commands." (let ((alias (get symbol 'face-alias))) (if alias (if (facep alias) - (format "%slias for the face `%s'." - (if (get symbol 'obsolete-face) - "Obsolete a" - "A") - alias) + (format-message + "%slias for the face `%s'." + (if (get symbol 'obsolete-face) "Obsolete a" "A") + alias) ;; Never happens in practice because fails ;; (facep symbol) test. "(alias for undefined face)") diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 2b5ada1..7030833 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1599,7 +1599,7 @@ This button will have a menu with all three reset operations." (defcustom custom-raised-buttons (not (equal (face-valid-attribute-values :box) '(("unspecified" . unspecified)))) - "If non-nil, indicate active buttons in a `raised-button' style. + "If non-nil, indicate active buttons in a raised-button style. Otherwise use brackets." :type 'boolean :version "21.1" @@ -1748,7 +1748,7 @@ Operate on all settings in this buffer:\n")) on a button to invoke its action. Invoke [+] to expand a group, and [-] to collapse an expanded group.\n" (if custom-raised-buttons - "`Raised' text indicates" + "Raised text indicates" "Square brackets indicate"))) diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 825ab80..237cc00 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -799,7 +799,8 @@ relevant to POS." (insert "\n " (car elt) ":" (propertize " " 'display '(space :align-to 4)) (or (cdr elt) "-- not encodable --")))) - (insert "\nSee the variable `reference-point-alist' for " + (insert (substitute-command-keys + "\nSee the variable `reference-point-alist' for ") "the meaning of the rule.\n"))) (unless eight-bit-p diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 63ee75f..a67b11f 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -686,9 +686,11 @@ can be produced by `dired-get-marked-files', for example." (if (cond ((not (or on-each no-subst)) (error "You can not combine `*' and `?' substitution marks")) ((and star on-each) - (y-or-n-p "Confirm--do you mean to use `*' as a wildcard? ")) + (y-or-n-p (format-message + "Confirm--do you mean to use `*' as a wildcard? "))) ((and qmark no-subst) - (y-or-n-p "Confirm--do you mean to use `?' as a wildcard? ")) + (y-or-n-p (format-message + "Confirm--do you mean to use `?' as a wildcard? "))) (t)) (if on-each (dired-bunch-files @@ -1497,7 +1499,7 @@ or with the current marker character if MARKER-CHAR is t." (let* ((overwrite (file-exists-p to)) (dired-overwrite-confirmed ; for dired-handle-overwrite (and overwrite - (let ((help-form '(format "\ + (let ((help-form '(format-message "\ Type SPC or `y' to overwrite file `%s', DEL or `n' to skip to next, ESC or `q' to not overwrite any of the remaining files, @@ -1878,11 +1880,11 @@ of `dired-dwim-target', which see." ;; Optional arg MARKER-CHAR as in dired-create-files. (let* ((fn-list (dired-get-marked-files nil arg)) (operation-prompt (concat operation " `%s' to `%s'?")) - (rename-regexp-help-form (format "\ + (rename-regexp-help-form (format-message "\ Type SPC or `y' to %s one match, DEL or `n' to skip to next, `!' to %s all remaining matches with no more questions." - (downcase operation) - (downcase operation))) + (downcase operation) + (downcase operation))) (regexp-name-constructor ;; Function to construct new filename using REGEXP and NEWNAME: (if whole-name ; easy (but rare) case @@ -2003,11 +2005,11 @@ See function `dired-do-rename-regexp' for more info." (let ((to (concat (file-name-directory from) (funcall basename-constructor (file-name-nondirectory from))))) - (and (let ((help-form (format "\ + (and (let ((help-form (format-message "\ Type SPC or `y' to %s one file, DEL or `n' to skip to next, `!' to %s all remaining matches with no more questions." - (downcase operation) - (downcase operation)))) + (downcase operation) + (downcase operation)))) (dired-query 'rename-non-directory-query (concat operation " `%s' to `%s'") (dired-make-relative from) diff --git a/lisp/dired-x.el b/lisp/dired-x.el index 4e5da0d..4903b15 100644 --- a/lisp/dired-x.el +++ b/lisp/dired-x.el @@ -1353,12 +1353,12 @@ otherwise." (interactive) (let ((file (dired-get-filename t))) (if dired-bind-vm - (if (y-or-n-p (concat "Visit `" file - "' as a mail folder with VM?")) + (if (y-or-n-p (format-message + "Visit ‘%s’ as a mail folder with VM?" file)) (dired-vm)) ;; Read mail folder using rmail. - (if (y-or-n-p (concat "Visit `" file - "' as a mailbox with RMAIL?")) + (if (y-or-n-p (format-message + "Visit ‘%s’ as a mailbox with RMAIL?" file)) (dired-rmail))))) diff --git a/lisp/dired.el b/lisp/dired.el index 215906a..6192b0a 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3558,7 +3558,7 @@ Thus, use \\[backward-page] to find the beginning of a group of errors." (let ((inhibit-read-only t)) (cond ((stringp log) (insert (if args - (apply (function format) log args) + (apply #'format-message log args) log))) ((bufferp log) (insert-buffer-substring log)) @@ -3811,7 +3811,8 @@ Ask means pop up a menu for the user to select one of copy, move or link." ((memq action '(copy private move link)) (let ((overwrite (and (file-exists-p to) (y-or-n-p - (format "Overwrite existing file `%s'? " to)))) + (format-message + "Overwrite existing file `%s'? " to)))) ;; Binding dired-overwrite-confirmed to nil makes ;; dired-handle-overwrite a no-op. We instead use ;; y-or-n-p, which pops a graphical menu. @@ -3824,7 +3825,7 @@ Ask means pop up a menu for the user to select one of copy, move or link." (car (find-backup-file-name to))) (or (eq dired-backup-overwrite 'always) (y-or-n-p - (format + (format-message "Make backup for existing file `%s'? " to)))) (rename-file to backup-file 0) (dired-relist-entry backup-file)) diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el index d1c46dd..ab7e34c 100644 --- a/lisp/dirtrack.el +++ b/lisp/dirtrack.el @@ -218,7 +218,7 @@ the mode if ARG is omitted or nil." (when dirtrack-debug-mode (with-current-buffer (get-buffer-create dirtrack-debug-buffer) (goto-char (point-max)) - (insert msg1 msg2 "\n")))) + (insert (substitute-command-keys msg1) msg2 "\n")))) (declare-function shell-prefixed-directory-name "shell" (dir)) (declare-function shell-process-cd "shell" (arg)) diff --git a/lisp/disp-table.el b/lisp/disp-table.el index 84f9c89..62ed102 100644 --- a/lisp/disp-table.el +++ b/lisp/disp-table.el @@ -281,7 +281,8 @@ in `.emacs'." (set-terminal-coding-system nil)))) (display-warning 'i18n - "`standard-display-european' is semi-obsolete; see its doc string for details" + (format-message + "`standard-display-european' is semi-obsolete; see its doc string for details") :warning) ;; Switch to Latin-1 language environment diff --git a/lisp/find-dired.el b/lisp/find-dired.el index c5b8828..b53c1da 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -151,7 +151,8 @@ use in place of \"-ls\" as the final argument." (let ((find (get-buffer-process (current-buffer)))) (when find (if (or (not (eq (process-status find) 'run)) - (yes-or-no-p "A `find' process is running; kill it? ")) + (yes-or-no-p + (format-message "A `find' process is running; kill it? "))) (condition-case nil (progn (interrupt-process find) diff --git a/lisp/forms.el b/lisp/forms.el index bccb4a0..e7e399f 100644 --- a/lisp/forms.el +++ b/lisp/forms.el @@ -692,10 +692,12 @@ Commands: Equivalent keys in read-only mode: (insert "GNU Emacs Forms Mode\n\n" (if (file-exists-p forms-file) - (concat "No records available in file `" forms-file "'\n\n") - (format "Creating new file `%s'\nwith %d field%s per record\n\n" - forms-file forms-number-of-fields - (if (= 1 forms-number-of-fields) "" "s"))) + (format-message + "No records available in file `%s'\n\n" forms-file) + (format-message + "Creating new file `%s'\nwith %d field%s per record\n\n" + forms-file forms-number-of-fields + (if (= 1 forms-number-of-fields) "" "s"))) "Use " (substitute-command-keys "\\[forms-insert-record]") " to create new records.\n") (setq forms--current-record 1) diff --git a/lisp/hexl.el b/lisp/hexl.el index 27d4659..3e0ea41 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -940,8 +940,9 @@ and their encoded form is inserted byte by byte." ch internal-hex)) (setq encoded internal) (error - "Can't encode `0x%x' with this buffer's coding system; try \\[hexl-insert-hex-string]" - ch))) + "Can't encode `0x%x' with this buffer's coding system; %s" + ch + (substitute-command-keys "try \\[hexl-insert-hex-string]")))) (while (> num 0) (mapc (function (lambda (c) (hexl-insert-char c 1))) encoded) diff --git a/lisp/ido.el b/lisp/ido.el index ab461bd..95be656 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -2275,7 +2275,8 @@ If cursor is not at the end of the user input, move to end of input." ((and (eq ido-create-new-buffer 'prompt) (null require-match) - (not (y-or-n-p (format "No buffer matching `%s', create one? " buf)))) + (not (y-or-n-p (format-message + "No buffer matching `%s', create one? " buf)))) nil) ;; buffer doesn't exist @@ -2285,7 +2286,8 @@ If cursor is not at the end of the user input, move to end of input." ((and (eq ido-create-new-buffer 'prompt) (null require-match) - (not (y-or-n-p (format "No buffer matching `%s', create one? " buf)))) + (not (y-or-n-p (format-message + "No buffer matching `%s', create one? " buf)))) nil) ;; create a new buffer diff --git a/lisp/info.el b/lisp/info.el index 0e0e91d..21dbca9 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -3381,11 +3381,11 @@ Give an empty topic name to go to the Index node itself." (car (car Info-index-alternatives)) (nth 2 (car Info-index-alternatives)) (if (cdr Info-index-alternatives) - (format "(%s total; use `%s' for next)" - (length Info-index-alternatives) - (key-description (where-is-internal - 'Info-index-next overriding-local-map - t))) + (format-message + "(%s total; use `%s' for next)" + (length Info-index-alternatives) + (key-description (where-is-internal + 'Info-index-next overriding-local-map t))) "(Only match)"))) (defun Info-find-index-name (name) diff --git a/lisp/outline.el b/lisp/outline.el index 059ca62..d9142c5 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -449,8 +449,8 @@ Otherwise, it will be one level below." ;; Why bother checking that it is indeed higher/lower level ? new-head ;; Didn't work, so ask what to do. - (read-string (format "%s heading for `%s': " - (if up "Parent" "Demoted") head) + (read-string (format-message "%s heading for `%s': " + (if up "Parent" "Demoted") head) head nil nil t))))) (defun outline-promote (&optional which) diff --git a/lisp/printing.el b/lisp/printing.el index 86d569a..8ad56f4 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -5542,8 +5542,8 @@ If menu binding was not done, calls `pr-menu-bind'." ((file-exists-p res) (ding) (setq prompt "exists") - (not (y-or-n-p (format "File `%s' exists; overwrite? " - res)))) + (not (y-or-n-p (format-message + "File `%s' exists; overwrite? " res)))) (t nil)) (setq res (read-file-name (format "File %s; PostScript file: " prompt) @@ -6540,8 +6540,8 @@ COMMAND.exe, COMMAND.bat and COMMAND.com in this order." ((or (not (file-exists-p pr-i-out-file)) pr-i-answer-yes (setq pr-i-answer-yes - (y-or-n-p (format "File `%s' exists; overwrite? " - pr-i-out-file)))) + (y-or-n-p (format-message "File `%s' exists; overwrite? " + pr-i-out-file)))) pr-i-out-file) (t (error "File already exists")))) diff --git a/lisp/proced.el b/lisp/proced.el index 922e016..5c65edf 100644 --- a/lisp/proced.el +++ b/lisp/proced.el @@ -1924,8 +1924,8 @@ and \f (formfeed) at the end." (unless (bolp) (insert "\n")) (insert (current-time-string) - "\tBuffer `" (buffer-name obuf) "', " - (format "signal `%s'\n" (car args))) + (format-message "\tBuffer ‘%s’, signal ‘%s’\n" + (buffer-name obuf) (car args))) (goto-char (point-max)) (insert "\f\n"))))))) diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 0ba470b..faafe9c 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el @@ -4604,8 +4604,8 @@ page-height == ((floor print-height ((th + ls) * zh)) * ((th + ls) * zh)) - th (setq prompt "File is unwritable")) ((file-exists-p res) (setq prompt "File exists") - (not (y-or-n-p (format "File `%s' exists; overwrite? " - res)))) + (not (y-or-n-p (format-message + "File `%s' exists; overwrite? " res)))) (t nil)) (setq res (read-file-name (format "%s; save PostScript to file: " prompt) @@ -5711,7 +5711,7 @@ XSTART YSTART are the relative position for the first page in a sheet.") (error "Invalid %s `%S'%s" mess size (if arg - (format " for `%S'" arg) + (format-message " for `%S'" arg) ""))) siz)) diff --git a/lisp/recentf.el b/lisp/recentf.el index da263fc..a599383 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -1224,7 +1224,7 @@ use for the dialog. It defaults to \"*`recentf-menu-title'*\"." ", or type the corresponding digit key," "") " to open it.\n" - "Click on Cancel or type `q' to cancel.\n") + (format-message "Click on Cancel or type ‘q’ to cancel.\n")) ;; Use a L&F that looks like the recentf menu. (tree-widget-set-theme "folder") (apply 'widget-create @@ -1281,7 +1281,8 @@ Write data into the file specified by `recentf-save-file'." (with-temp-buffer (erase-buffer) (set-buffer-file-coding-system recentf-save-file-coding-system) - (insert (format recentf-save-file-header (current-time-string))) + (insert (format-message recentf-save-file-header + (current-time-string))) (recentf-dump-variable 'recentf-list recentf-max-saved-items) (recentf-dump-variable 'recentf-filter-changer-current) (insert "\n \n;; Local Variables:\n" diff --git a/lisp/savehist.el b/lisp/savehist.el index 692ee2e..607138c 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -270,8 +270,12 @@ If AUTO-SAVE is non-nil, compare the saved contents to the one last saved, (interactive) (with-temp-buffer (insert - (format ";; -*- mode: emacs-lisp; coding: %s -*-\n" savehist-coding-system) - ";; Minibuffer history file, automatically generated by `savehist'.\n\n") + (format-message + (concat + ";; -*- mode: emacs-lisp; coding: %s -*-\n" + ";; Minibuffer history file, automatically generated by `savehist'.\n" + "\n") + savehist-coding-system)) (run-hooks 'savehist-save-hook) (let ((print-length nil) (print-string-length nil) diff --git a/lisp/server.el b/lisp/server.el index 5a8afb4..57c16af 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -533,7 +533,8 @@ Creates the directory if necessary and makes sure: ((and w32 (zerop uid)) ; on FAT32? (display-warning 'server - (format "Using `%s' to store Emacs-server authentication files. + (format-message "\ +Using `%s' to store Emacs-server authentication files. Directories on FAT32 filesystems are NOT secure against tampering. See variable `server-auth-dir' for details." (file-name-as-directory dir)) diff --git a/lisp/ses.el b/lisp/ses.el index e625e4e..0bc43ec 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -3360,8 +3360,10 @@ highlighted range in the spreadsheet." (ses-is-cell-sym-p new-name) (error "Already a cell name")) (and (boundp new-name) - (null (yes-or-no-p (format "`%S' is already bound outside this buffer, continue? " - new-name))) + (null (yes-or-no-p + (format-message + "`%S' is already bound outside this buffer, continue? " + new-name))) (error "Already a bound cell name"))) (let* (curcell (sym (if (ses-cell-p cell) diff --git a/lisp/simple.el b/lisp/simple.el index 87d9444..6f76d75 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3565,8 +3565,9 @@ Also, delete any process that is exited or signaled." (buf-label (if (buffer-live-p buf) `(,(buffer-name buf) face link - help-echo ,(concat "Visit buffer `" - (buffer-name buf) "'") + help-echo ,(format-message + "Visit buffer ‘%s’" + (buffer-name buf)) follow-link t process-buffer ,buf action process-menu-visit-buffer) diff --git a/lisp/startup.el b/lisp/startup.el index 2d1bcc9..0da2e14 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1115,8 +1115,9 @@ please check its value") "~/.emacs") ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$") ;; Also support _emacs for compatibility, but warn about it. - (push '(initialization - "`_emacs' init file is deprecated, please use `.emacs'") + (push `(initialization + ,(format-message + "`_emacs' init file is deprecated, please use `.emacs'")) delayed-warnings-list) "~/_emacs") (t ;; But default to .emacs if _emacs does not exist. diff --git a/lisp/strokes.el b/lisp/strokes.el index 2363d33..a4f4a14 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el @@ -423,8 +423,9 @@ or for window START-WINDOW if that is specified." (interactive) (let ((command (cdar strokes-global-map))) (if (y-or-n-p - (format "Really delete last stroke definition, defined to `%s'? " - command)) + (format-message + "Really delete last stroke definition, defined to `%s'? " + command)) (progn (setq strokes-global-map (cdr strokes-global-map)) (message "That stroke has been deleted")) @@ -868,8 +869,8 @@ If no stroke matches, nothing is done and return value is nil." ((null strokes-global-map) (if (file-exists-p strokes-file) (and (y-or-n-p - (format "No strokes loaded. Load `%s'? " - strokes-file)) + (format-message "No strokes loaded. Load `%s'? " + strokes-file)) (strokes-load-user-strokes)) (error "No strokes defined; use `strokes-global-set-stroke'"))) (t diff --git a/lisp/wdired.el b/lisp/wdired.el index c72e134..0c113b3 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -494,8 +494,8 @@ non-nil means return old filename." overwrite)) (error (setq errors (1+ errors)) - (dired-log (concat "Rename `" file-ori "' to `" - file-new "' failed:\n%s\n") + (dired-log "Rename ‘%s’ to ‘%s’ failed:\n%s\n" + file-ori file-new err))))))))) errors)) @@ -651,8 +651,8 @@ If OLD, return the old target. If MOVE, move point before it." (substitute-in-file-name link-to-new) link-from)) (error (setq errors (1+ errors)) - (dired-log (concat "Link `" link-from "' to `" - link-to-new "' failed:\n%s\n") + (dired-log "Link ‘%s’ to ‘%s’ failed:\n%s\n" + link-from link-to-new err))))) (cons changes errors))) @@ -837,11 +837,11 @@ Like original function but it skips read-only words." (unless (equal 0 (process-file dired-chmod-program nil nil nil perm-tmp filename)) (setq errors (1+ errors)) - (dired-log (concat dired-chmod-program " " perm-tmp - " `" filename "' failed\n\n")))) + (dired-log "%s %s ‘%s’ failed\n\n" + dired-chmod-program perm-tmp filename))) (setq errors (1+ errors)) - (dired-log (concat "Cannot parse permission `" perms-new - "' for file `" filename "'\n\n")))) + (dired-log "Cannot parse permission ‘%s’ for file ‘%s’\n\n" + perms-new filename))) (goto-char (next-single-property-change (1+ (point)) prop-wanted nil (point-max)))) (cons changes errors))) commit b12cfbfda0141e7312bff4b466f35da4debc438d Author: Paul Eggert Date: Tue Aug 25 18:58:54 2015 -0700 Go back to grave quoting in Tramp * lisp/net/tramp-adb.el: * lisp/net/tramp-cache.el: * lisp/net/tramp-compat.el: * lisp/net/tramp-gvfs.el: * lisp/net/tramp-gw.el: * lisp/net/tramp-sh.el: * lisp/net/tramp-smb.el: * lisp/net/tramp.el: Stick with grave quoting in diagnostics strings. This is more portable to older Emacs, desirable for Tramp. * lisp/net/tramp-cache.el: Use ‘format-message’, not ‘format’, for diagnostic that needs requoting. * lisp/net/tramp-compat.el (format-message): Fall back on simple ‘format’, since that’s good enough now. diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 9ef78a0..f818fcd 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -258,7 +258,7 @@ pass to the OPERATION." method user host (with-tramp-file-property v localname "file-truename" (let ((result nil)) ; result steps in reverse order - (tramp-message v 4 "Finding true name for ‘%s’" filename) + (tramp-message v 4 "Finding true name for `%s'" filename) (let* ((directory-sep-char ?/) (steps (tramp-compat-split-string localname "/")) (localnamedir (tramp-run-real-handler @@ -290,9 +290,9 @@ pass to the OPERATION." (list thisstep)) "/"))))) (cond ((string= "." thisstep) - (tramp-message v 5 "Ignoring step ‘.’")) + (tramp-message v 5 "Ignoring step `.'")) ((string= ".." thisstep) - (tramp-message v 5 "Processing step ‘..’") + (tramp-message v 5 "Processing step `..'") (pop result)) ((stringp symlink-target) ;; It's a symlink, follow it. @@ -307,7 +307,7 @@ pass to the OPERATION." (unless (tramp-equal-remote filename symlink-target) (tramp-error v 'file-error - "Symlink target ‘%s’ on wrong host" symlink-target)) + "Symlink target `%s' on wrong host" symlink-target)) (setq symlink-target localname)) (setq steps (append (tramp-compat-split-string @@ -330,7 +330,7 @@ pass to the OPERATION." (not (string= (substring result -1) "/")))) (setq result (concat result "/")))) - (tramp-message v 4 "True name of ‘%s’ is ‘%s’" localname result) + (tramp-message v 4 "True name of `%s' is `%s'" localname result) result)))) ;; Preserve trailing "/". @@ -433,7 +433,7 @@ pass to the OPERATION." (defun tramp-adb-get-ls-command (vec) (with-tramp-connection-property vec "ls" - (tramp-message vec 5 "Finding a suitable ‘ls’ command") + (tramp-message vec 5 "Finding a suitable `ls' command") (if (tramp-adb-send-command-and-check vec "ls --color=never -al /dev/null") ;; On CyanogenMod based system BusyBox is used and "ls" output ;; coloring is enabled by default. So we try to disable it @@ -514,7 +514,7 @@ Emacs dired can't find files." (make-directory par parents)))) (tramp-adb-barf-unless-okay v (format "mkdir %s" (tramp-shell-quote-argument localname)) - "Couldn’t make directory %s" dir) + "Couldn't make directory %s" dir) (tramp-flush-file-property v (file-name-directory localname)) (tramp-flush-directory-property v localname))) @@ -528,7 +528,7 @@ Emacs dired can't find files." v (format "%s %s" (if recursive "rm -r" "rmdir") (tramp-shell-quote-argument localname)) - "Couldn’t delete %s" directory))) + "Couldn't delete %s" directory))) (defun tramp-adb-handle-delete-file (filename &optional _trash) "Like `delete-file' for Tramp files." @@ -538,7 +538,7 @@ Emacs dired can't find files." (tramp-flush-file-property v localname) (tramp-adb-barf-unless-okay v (format "rm %s" (tramp-shell-quote-argument localname)) - "Couldn’t delete %s" filename))) + "Couldn't delete %s" filename))) (defun tramp-adb-handle-file-name-all-completions (filename directory) "Like `file-name-all-completions' for Tramp files." @@ -571,7 +571,7 @@ Emacs dired can't find files." (unless (file-exists-p (file-truename filename)) (tramp-error v 'file-error - "Cannot make local copy of non-existing file ‘%s’" filename)) + "Cannot make local copy of non-existing file `%s'" filename)) (let ((tmpfile (tramp-compat-make-temp-file filename))) (with-tramp-progress-reporter v 3 (format "Fetching %s to tmp file %s" filename tmpfile) @@ -580,7 +580,7 @@ Emacs dired can't find files." (not (file-exists-p tmpfile))) (ignore-errors (delete-file tmpfile)) (tramp-error - v 'file-error "Cannot make local copy of file ‘%s’" filename)) + v 'file-error "Cannot make local copy of file `%s'" filename)) (set-file-modes tmpfile (logior (or (file-modes filename) 0) @@ -636,10 +636,10 @@ But handle the case, if the \"test\" command is not available." (list start end tmpfile append 'no-message lockname confirm)) (with-tramp-progress-reporter v 3 (format-message - "Moving tmp file ‘%s’ to ‘%s’" tmpfile filename) + "Moving tmp file `%s' to `%s'" tmpfile filename) (unwind-protect (when (tramp-adb-execute-adb-command v "push" tmpfile localname) - (tramp-error v 'file-error "Cannot write: ‘%s’" filename)) + (tramp-error v 'file-error "Cannot write: `%s'" filename)) (delete-file tmpfile))) (when (or (eq visit t) (stringp visit)) @@ -648,7 +648,7 @@ But handle the case, if the \"test\" command is not available." (unless (equal curbuf (current-buffer)) (tramp-error v 'file-error - "Buffer has changed from ‘%s’ to ‘%s’" curbuf (current-buffer)))))) + "Buffer has changed from `%s' to `%s'" curbuf (current-buffer)))))) (defun tramp-adb-handle-set-file-modes (filename mode) "Like `set-file-modes' for Tramp files." @@ -713,7 +713,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (tramp-flush-file-property v localname) (when (tramp-adb-execute-adb-command v "push" filename localname) (tramp-error - v 'file-error "Cannot copy ‘%s’ ‘%s’" filename newname)))))) + v 'file-error "Cannot copy `%s' `%s'" filename newname)))))) ;; KEEP-DATE handling. (when keep-date @@ -1114,7 +1114,7 @@ the exit status is not equal 0, and t otherwise." (goto-char (point-max)) (unless (re-search-backward "tramp_exit_status [0-9]+" nil t) (tramp-error - vec 'file-error "Couldn’t find exit status of ‘%s’" command)) + vec 'file-error "Couldn't find exit status of `%s'" command)) (skip-chars-forward "^ ") (prog1 (zerop (read (current-buffer))) @@ -1131,7 +1131,7 @@ FMT and ARGS are passed to `error'." "Wait for output from remote command." (unless (buffer-live-p (process-buffer proc)) (delete-process proc) - (tramp-error proc 'file-error "Process ‘%s’ not available, try again" proc)) + (tramp-error proc 'file-error "Process `%s' not available, try again" proc)) (with-current-buffer (process-buffer proc) (if (tramp-wait-for-regexp proc timeout tramp-adb-prompt) (let (buffer-read-only) @@ -1151,11 +1151,11 @@ FMT and ARGS are passed to `error'." (if timeout (tramp-error proc 'file-error - "[[Remote adb prompt ‘%s’ not found in %d secs]]" + "[[Remote adb prompt `%s' not found in %d secs]]" tramp-adb-prompt timeout) (tramp-error proc 'file-error - "[[Remote prompt ‘%s’ not found]]" tramp-adb-prompt))))) + "[[Remote prompt `%s' not found]]" tramp-adb-prompt))))) (defun tramp-adb-maybe-open-connection (vec) "Maybe open a connection VEC. @@ -1178,7 +1178,7 @@ connection if a previous connection has died for some reason." ;; use a connection property, because we have not checked yet ;; whether it is still the same device. (when (and user (not (tramp-get-file-property vec "" "su-command-p" t))) - (tramp-error vec 'file-error "Cannot switch to user ‘%s’" user)) + (tramp-error vec 'file-error "Cannot switch to user `%s'" user)) (unless (and p (processp p) (memq (process-status p) '(run open))) @@ -1224,7 +1224,7 @@ connection if a previous connection has died for some reason." (not (string-equal old-getprop new-getprop))) (tramp-message vec 3 - "Connection reset, because remote host changed from ‘%s’ to ‘%s’" + "Connection reset, because remote host changed from `%s' to `%s'" old-getprop new-getprop) (tramp-cleanup-connection vec t) (tramp-adb-maybe-open-connection vec))) @@ -1236,7 +1236,7 @@ connection if a previous connection has died for some reason." (delete-process p) (tramp-set-file-property vec "" "su-command-p" nil) (tramp-error - vec 'file-error "Cannot switch to user ‘%s’" user))) + vec 'file-error "Cannot switch to user `%s'" user))) ;; Set "remote-path" connection property. This is needed ;; for eshell. diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index c1d6a28..8f60ac4 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -440,8 +440,8 @@ for all methods. Resulting data are derived from connection history." (clrhash tramp-cache-data)) (error ;; File is corrupted. - (message "Tramp persistency file ‘%s’ is corrupted: %s" - tramp-persistency-file-name (error-message-string err)) + (format-message "Tramp persistency file `%s' is corrupted: %s" + tramp-persistency-file-name (error-message-string err)) (clrhash tramp-cache-data)))) (add-hook 'tramp-unload-hook diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 48eda2f..817c713 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -236,8 +236,8 @@ this is the function `temp-directory'." ((let ((d (getenv "TMPDIR"))) (and d (file-directory-p d))) (file-name-as-directory (getenv "TMPDIR"))) ((file-exists-p "c:/temp") (file-name-as-directory "c:/temp")) - (t (message (concat "Neither ‘temporary-file-directory’ nor " - "‘temp-directory’ is defined -- using /tmp.")) + (t (message (concat "Neither `temporary-file-directory' nor " + "`temp-directory' is defined -- using /tmp.")) (file-name-as-directory "/tmp"))))) ;; `make-temp-file' exists in Emacs only. On XEmacs, we use our own @@ -294,7 +294,7 @@ Not actually used. Use `(format \"%o\" i)' instead?" (let ((x (or ostr ""))) ;; `save-match' is in `tramp-mode-string-to-int' which calls this. (unless (string-match "\\`[0-7]*\\'" x) - (error "Non-octal junk in string ‘%s’" x)) + (error "Non-octal junk in string `%s'" x)) (string-to-number ostr 8))) ;; ID-FORMAT does not exist in XEmacs. @@ -535,9 +535,9 @@ EOL-TYPE can be one of `dos', `unix', or `mac'." ((eq eol-type 'mac) 'cr) (t (error - "Unknown EOL-TYPE ‘%s’, must be ‘dos’, ‘unix’, or ‘mac’" + "Unknown EOL-TYPE `%s', must be `dos', `unix', or `mac'" eol-type))))) - (t (error "Can’t change EOL conversion -- is MULE missing?")))) + (t (error "Can't change EOL conversion -- is MULE missing?")))) ;; `replace-regexp-in-string' does not exist in XEmacs. ;; Implementation is taken from Emacs 24. @@ -595,21 +595,11 @@ and replace a sub-expression, e.g. (unless (fboundp 'default-toplevel-value) (defalias 'default-toplevel-value 'symbol-value)) -;; ‘format-message’ is new in Emacs 25, and does not exist in XEmacs. +;; `format-message' is new in Emacs 25, and does not exist in XEmacs. ;; The substitute implementation always uses grave quoting style, for ;; compatibility with older Emacs. (unless (fboundp 'format-message) - (defalias 'format-message - (lambda (format-string &rest args) - (let ((restyled-format-string - (let ((start (string-match "[‘’]" format-string))) - (if start - (tramp-compat-replace-regexp-in-string - "[‘’]" - (lambda (match) (if (string-equal match "‘") "`" "'")) - format-string t t nil start) - format-string)))) - (apply #'format restyled-format-string args))))) + (defalias 'format-message 'format)) (add-hook 'tramp-unload-hook (lambda () diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index d96fb3e..4dfdcd7 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -494,7 +494,7 @@ Operations not mentioned here will be handled by the default Emacs primitives.") First arg specifies the OPERATION, second arg is a list of arguments to pass to the OPERATION." (unless tramp-gvfs-enabled - (tramp-user-error nil "Package ‘tramp-gvfs’ not supported")) + (tramp-user-error nil "Package `tramp-gvfs' not supported")) (let ((fn (assoc operation tramp-gvfs-file-name-handler-alist))) (if fn (save-match-data (apply (cdr fn) args)) @@ -600,7 +600,7 @@ This function is invoked by `tramp-gvfs-handle-copy-file' and of `copy' and `rename'. FILENAME and NEWNAME must be absolute file names." (unless (memq op '(copy rename)) - (error "Unknown operation ‘%s’, must be ‘copy’ or ‘rename’" op)) + (error "Unknown operation `%s', must be `copy' or `rename'" op)) (let ((t1 (tramp-tramp-file-p filename)) (t2 (tramp-tramp-file-p newname)) @@ -657,7 +657,7 @@ file names." (goto-char (point-min)) (tramp-error-with-buffer nil v 'file-error - "%s failed, see buffer ‘%s’ for details." + "%s failed, see buffer `%s' for details." msg-operation (buffer-name))) ;; Some WebDAV server, like the one from QNAP, do not @@ -724,7 +724,7 @@ file names." (with-current-buffer (tramp-get-connection-buffer v) (goto-char (point-min)) (tramp-error-with-buffer - nil v 'file-error "Couldn’t delete %s" directory))))) + nil v 'file-error "Couldn't delete %s" directory))))) (defun tramp-gvfs-handle-delete-file (filename &optional trash) "Like `delete-file' for Tramp files." @@ -739,7 +739,7 @@ file names." (with-current-buffer (tramp-get-connection-buffer v) (goto-char (point-min)) (tramp-error-with-buffer - nil v 'file-error "Couldn’t delete %s" filename))))) + nil v 'file-error "Couldn't delete %s" filename))))) (defun tramp-gvfs-handle-expand-file-name (name &optional dir) "Like `expand-file-name' for Tramp files." @@ -765,7 +765,7 @@ file names." (when (string-match "\\`\\(~[^/]*\\)\\(.*\\)\\'" localname) (tramp-error v 'file-error - "Cannot expand tilde in file ‘%s’" name)) + "Cannot expand tilde in file `%s'" name)) (unless (tramp-run-real-handler 'file-name-absolute-p (list localname)) (setq localname (concat "/" localname))) ;; We do not pass "/..". @@ -927,7 +927,7 @@ file names." (unless (file-exists-p filename) (tramp-error v 'file-error - "Cannot make local copy of non-existing file ‘%s’" filename)) + "Cannot make local copy of non-existing file `%s'" filename)) (copy-file filename tmpfile t t) tmpfile))) @@ -1013,7 +1013,7 @@ file names." (tramp-error v 'file-notify-error "gvfs-monitor-file failed to start") (tramp-message - v 6 "Run ‘%s’, %S" (mapconcat 'identity (process-command p) " ") p) + v 6 "Run `%s', %S" (mapconcat 'identity (process-command p) " ") p) (tramp-set-connection-property p "vector" v) (tramp-compat-set-process-query-on-exit-flag p nil) (set-process-filter p 'tramp-gvfs-file-gvfs-monitor-file-process-filter) @@ -1094,7 +1094,7 @@ file names." ;; Just do it. (unless (tramp-gvfs-send-command v "gvfs-mkdir" (tramp-gvfs-url-file-name dir)) - (tramp-error v 'file-error "Couldn’t make directory %s" dir)))))) + (tramp-error v 'file-error "Couldn't make directory %s" dir)))))) (defun tramp-gvfs-handle-rename-file (filename newname &optional ok-if-already-exists) @@ -1136,7 +1136,7 @@ file names." (error (delete-file tmpfile) (tramp-error - v 'file-error "Couldn’t write region to ‘%s’" filename)))) + v 'file-error "Couldn't write region to `%s'" filename)))) (tramp-flush-file-property v (file-name-directory localname)) (tramp-flush-file-property v localname) @@ -1175,7 +1175,7 @@ file names." (url-hexify-string (file-truename filename)) nil nil t)))) (when (tramp-tramp-file-p filename) (with-parsed-tramp-file-name filename nil - (tramp-message v 10 "remote file ‘%s’ is URL ‘%s’" filename result))) + (tramp-message v 10 "remote file `%s' is URL `%s'" filename result))) result)) (defun tramp-gvfs-object-path (filename) diff --git a/lisp/net/tramp-gw.el b/lisp/net/tramp-gw.el index 8f1909a..5e22f6a 100644 --- a/lisp/net/tramp-gw.el +++ b/lisp/net/tramp-gw.el @@ -95,7 +95,7 @@ "Delete auxiliary process when we are deleted." (unless (memq (process-status proc) '(run open)) (tramp-message - tramp-gw-vector 4 "Deleting auxiliary process ‘%s’" tramp-gw-gw-proc) + tramp-gw-vector 4 "Deleting auxiliary process `%s'" tramp-gw-gw-proc) (let* ((tramp-verbose 0) (p (tramp-get-connection-property proc "process" nil))) (when (processp p) (delete-process p))))) @@ -106,7 +106,7 @@ ;; A new process has been spawned from `tramp-gw-aux-proc'. (tramp-message tramp-gw-vector 4 - "Opening auxiliary process ‘%s’, speaking with process ‘%s’" + "Opening auxiliary process `%s', speaking with process `%s'" proc tramp-gw-gw-proc) (tramp-compat-set-process-query-on-exit-flag proc nil) ;; We don't want debug messages, because the corresponding debug @@ -160,7 +160,7 @@ instead of the host name declared in TARGET-VEC." (set-process-sentinel tramp-gw-aux-proc 'tramp-gw-aux-proc-sentinel) (tramp-compat-set-process-query-on-exit-flag tramp-gw-aux-proc nil) (tramp-message - vec 4 "Opening auxiliary process ‘%s’, listening on port %d" + vec 4 "Opening auxiliary process `%s', listening on port %d" tramp-gw-aux-proc (process-contact tramp-gw-aux-proc :service)))) (let* ((gw-method @@ -206,7 +206,7 @@ instead of the host name declared in TARGET-VEC." (set-process-coding-system tramp-gw-gw-proc 'binary 'binary) (tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil) (tramp-message - vec 4 "Opened %s process ‘%s’" + vec 4 "Opened %s process `%s'" (case gw-method ('tunnel "HTTP tunnel") ('socks "SOCKS")) tramp-gw-gw-proc) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 9bd22d2..c5ffb26 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -97,7 +97,7 @@ e.g. \"$HOME/.sh_history\"." "///%s#$" (md5 (concat (prin1-to-string process-environment) (current-time-string)))) "String used to recognize end of output. -The ‘$’ character at the end is quoted; the string cannot be +The `$' character at the end is quoted; the string cannot be detected as prompt when being sent on echoing hosts, therefore.") ;;;###tramp-autoload @@ -1112,7 +1112,7 @@ target of the symlink differ." method user host (with-tramp-file-property v localname "file-truename" (let ((result nil)) ; result steps in reverse order - (tramp-message v 4 "Finding true name for ‘%s’" filename) + (tramp-message v 4 "Finding true name for `%s'" filename) (cond ;; Use GNU readlink --canonicalize-missing where available. ((tramp-get-remote-readlink v) @@ -1170,9 +1170,9 @@ target of the symlink differ." (list thisstep)) "/"))))) (cond ((string= "." thisstep) - (tramp-message v 5 "Ignoring step ‘.’")) + (tramp-message v 5 "Ignoring step `.'")) ((string= ".." thisstep) - (tramp-message v 5 "Processing step ‘..’") + (tramp-message v 5 "Processing step `..'") (pop result)) ((stringp symlink-target) ;; It's a symlink, follow it. @@ -1188,7 +1188,7 @@ target of the symlink differ." (unless (tramp-equal-remote filename symlink-target) (tramp-error v 'file-error - "Symlink target ‘%s’ on wrong host" + "Symlink target `%s' on wrong host" symlink-target)) (setq symlink-target localname)) (setq steps @@ -1213,7 +1213,7 @@ target of the symlink differ." (not (string= (substring result -1) "/")))) (setq result (concat result "/")))))) - (tramp-message v 4 "True name of ‘%s’ is ‘%s’" localname result) + (tramp-message v 4 "True name of `%s' is `%s'" localname result) result)))) ;; Preserve trailing "/". @@ -1399,7 +1399,7 @@ target of the symlink differ." (defun tramp-sh-handle-set-visited-file-modtime (&optional time-list) "Like `set-visited-file-modtime' for Tramp files." (unless (buffer-file-name) - (error "Can’t set-visited-file-modtime: buffer ‘%s’ not visiting a file" + (error "Can't set-visited-file-modtime: buffer `%s' not visiting a file" (buffer-name))) (if time-list (tramp-run-real-handler 'set-visited-file-modtime (list time-list)) @@ -1493,7 +1493,7 @@ of." (format "chmod %s %s" (tramp-compat-decimal-to-octal mode) (tramp-shell-quote-argument localname)) - "Error while changing file’s mode %s" filename))) + "Error while changing file's mode %s" filename))) (defun tramp-sh-handle-set-file-times (filename &optional time) "Like `set-file-times' for Tramp files." @@ -1967,7 +1967,7 @@ be non-negative integers." (tramp-error v 'file-error "\ -tramp-sh-handle-file-name-all-completions: internal error accessing ‘%s’: ‘%s’" +tramp-sh-handle-file-name-all-completions: internal error accessing `%s': `%s'" (tramp-shell-quote-argument localname) (buffer-string)))) (while (zerop (forward-line -1)) @@ -2020,7 +2020,7 @@ tramp-sh-handle-file-name-all-completions: internal error accessing ‘%s’: (format "%s %s %s" ln (tramp-shell-quote-argument v1-localname) (tramp-shell-quote-argument v2-localname)) - "error with add-name-to-file, see buffer ‘%s’ for details" + "error with add-name-to-file, see buffer `%s' for details" (buffer-name)))))) (defun tramp-sh-handle-copy-file @@ -2125,7 +2125,7 @@ This function is invoked by `tramp-sh-handle-copy-file' and of `copy' and `rename'. FILENAME and NEWNAME must be absolute file names." (unless (memq op '(copy rename)) - (error "Unknown operation ‘%s’, must be ‘copy’ or ‘rename’" op)) + (error "Unknown operation `%s', must be `copy' or `rename'" op)) (let ((t1 (tramp-tramp-file-p filename)) (t2 (tramp-tramp-file-p newname)) (length (nth 7 (file-attributes (file-truename filename)))) @@ -2265,7 +2265,7 @@ the uid and gid from FILENAME." ((eq op 'rename) "mv -f") (t (tramp-error v 'file-error - "Unknown operation ‘%s’, must be ‘copy’ or ‘rename’" + "Unknown operation `%s', must be `copy' or `rename'" op)))) (localname1 (if t1 @@ -2297,7 +2297,7 @@ the uid and gid from FILENAME." cmd-result) (tramp-error-with-buffer nil v 'file-error - "Copying directly failed, see buffer ‘%s’ for details." + "Copying directly failed, see buffer `%s' for details." (buffer-name))))) ;; We are on the local host. @@ -2350,7 +2350,7 @@ the uid and gid from FILENAME." "%s %s %s" cmd (tramp-shell-quote-argument localname1) (tramp-shell-quote-argument tmpfile)) - "Copying directly failed, see buffer ‘%s’ for details." + "Copying directly failed, see buffer `%s' for details." (tramp-get-buffer v)) ;; We must change the ownership as remote user. ;; Since this does not work reliable, we also @@ -2388,7 +2388,7 @@ the uid and gid from FILENAME." "cp -f -p %s %s" (tramp-shell-quote-argument tmpfile) (tramp-shell-quote-argument localname2)) - "Copying directly failed, see buffer ‘%s’ for details." + "Copying directly failed, see buffer `%s' for details." (tramp-get-buffer v))) (t1 (tramp-run-real-handler @@ -2559,7 +2559,7 @@ The method used must be an out-of-band method." (with-timeout (60 (tramp-error v 'file-error - "Listener process not running on remote host: ‘%s’" + "Listener process not running on remote host: `%s'" remote-copy-program)) (tramp-send-command v (format "netstat -l | grep -q :%s" listener)) (while (not (tramp-send-command-and-check v nil)) @@ -2619,14 +2619,14 @@ The method used must be an out-of-band method." (re-search-backward "tramp_exit_status [0-9]+" nil t) (tramp-error orig-vec 'file-error - "Couldn’t find exit status of ‘%s’" + "Couldn't find exit status of `%s'" (mapconcat 'identity (process-command p) " "))) (skip-chars-forward "^ ") (unless (zerop (read (current-buffer))) (forward-line -1) (tramp-error orig-vec 'file-error - "Error copying: ‘%s’" + "Error copying: `%s'" (buffer-substring (point-min) (point-at-eol)))))) ;; Reset the transfer process properties. @@ -2665,7 +2665,7 @@ The method used must be an out-of-band method." v (format "%s %s" (if parents "mkdir -p" "mkdir") (tramp-shell-quote-argument localname)) - "Couldn’t make directory %s" dir)))) + "Couldn't make directory %s" dir)))) (defun tramp-sh-handle-delete-directory (directory &optional recursive) "Like `delete-directory' for Tramp files." @@ -2677,7 +2677,7 @@ The method used must be an out-of-band method." v (format "cd / && %s %s" (if recursive "rm -rf" "rmdir") (tramp-shell-quote-argument localname)) - "Couldn’t delete %s" directory))) + "Couldn't delete %s" directory))) (defun tramp-sh-handle-delete-file (filename &optional trash) "Like `delete-file' for Tramp files." @@ -2689,7 +2689,7 @@ The method used must be an out-of-band method." v (format "%s %s" (or (and trash (tramp-get-remote-trash v)) "rm -f") (tramp-shell-quote-argument localname)) - "Couldn’t delete %s" filename))) + "Couldn't delete %s" filename))) ;; Dired. @@ -2800,7 +2800,7 @@ This is like `dired-recursive-delete-directory' for Tramp files." (when wildcard (setq switches (concat switches " " wildcard))) (tramp-message - v 4 "Inserting directory ‘ls %s %s’, wildcard %s, fulldir %s" + v 4 "Inserting directory `ls %s %s', wildcard %s, fulldir %s" switches filename (if wildcard "yes" "no") (if full-directory-p "yes" "no")) ;; If `full-directory-p', we just say `ls -l FILENAME'. @@ -2819,7 +2819,7 @@ This is like `dired-recursive-delete-directory' for Tramp files." (format "cd %s" (tramp-shell-quote-argument (tramp-run-real-handler 'file-name-directory (list localname)))) - "Couldn’t ‘cd %s’" + "Couldn't `cd %s'" (tramp-shell-quote-argument (tramp-run-real-handler 'file-name-directory (list localname)))) (tramp-send-command @@ -2963,7 +2963,7 @@ the result will be a local, non-Tramp, file name." (unless (memq (process-status proc) '(run open)) (let ((vec (tramp-get-connection-property proc "vector" nil))) (when vec - (tramp-message vec 5 "Sentinel called: ‘%S’ ‘%s’" proc event) + (tramp-message vec 5 "Sentinel called: `%S' `%s'" proc event) (tramp-flush-connection-property proc) (tramp-flush-directory-property vec ""))))) @@ -3074,7 +3074,7 @@ the result will be a local, non-Tramp, file name." (tramp-get-connection-process v) 'remote-tty) (tramp-error v 'file-error - "pty association is not supported for ‘%s’" name)))) + "pty association is not supported for `%s'" name)))) (let ((p (tramp-get-connection-process v))) ;; Set query flag and process marker for this ;; process. We ignore errors, because the process @@ -3223,7 +3223,7 @@ the result will be a local, non-Tramp, file name." (unless (file-exists-p filename) (tramp-error v 'file-error - "Cannot make local copy of non-existing file ‘%s’" filename)) + "Cannot make local copy of non-existing file `%s'" filename)) (let* ((size (nth 7 (file-attributes (file-truename filename)))) (rem-enc (tramp-get-inline-coding v "remote-encoding" size)) @@ -3242,14 +3242,14 @@ the result will be a local, non-Tramp, file name." (save-excursion (with-tramp-progress-reporter v 3 - (format-message "Encoding remote file ‘%s’ with ‘%s’" + (format-message "Encoding remote file `%s' with `%s'" filename rem-enc) (tramp-barf-unless-okay v (format rem-enc (tramp-shell-quote-argument localname)) "Encoding remote file failed")) (with-tramp-progress-reporter - v 3 (format-message "Decoding local file ‘%s’ with ‘%s’" + v 3 (format-message "Decoding local file `%s' with `%s'" tmpfile loc-dec) (if (functionp loc-dec) ;; If local decoding is a function, we call it. @@ -3286,7 +3286,7 @@ the result will be a local, non-Tramp, file name." ;; Oops, I don't know what to do. (t (tramp-error - v 'file-error "Wrong method specification for ‘%s’" method))) + v 'file-error "Wrong method specification for `%s'" method))) ;; Error handling. ((error quit) @@ -3458,7 +3458,7 @@ the result will be a local, non-Tramp, file name." ;; Use encoding function or command. (with-tramp-progress-reporter v 3 (format-message - "Encoding local file ‘%s’ using ‘%s’" + "Encoding local file `%s' using `%s'" tmpfile loc-enc) (if (functionp loc-enc) ;; The following `let' is a workaround for @@ -3480,8 +3480,8 @@ the result will be a local, non-Tramp, file name." loc-enc tmpfile t)) (tramp-error v 'file-error - (concat "Cannot write to ‘%s’, " - "local encoding command ‘%s’ failed") + (concat "Cannot write to `%s', " + "local encoding command `%s' failed") filename loc-enc)))) ;; Send buffer into remote decoding command which @@ -3489,7 +3489,7 @@ the result will be a local, non-Tramp, file name." ;; the remote host, we cannot use the function. (with-tramp-progress-reporter v 3 (format-message - "Decoding remote file ‘%s’ using ‘%s’" + "Decoding remote file `%s' using `%s'" filename rem-dec) (goto-char (point-max)) (unless (bolp) (newline)) @@ -3503,7 +3503,7 @@ the result will be a local, non-Tramp, file name." tramp-end-of-heredoc)) (tramp-barf-unless-okay v nil - "Couldn’t write region to ‘%s’, decode using ‘%s’ failed" + "Couldn't write region to `%s', decode using `%s' failed" filename rem-dec) ;; When `file-precious-flag' is set, the region is ;; written to a temporary file. Check that the @@ -3526,8 +3526,8 @@ the result will be a local, non-Tramp, file name." (buffer-string)))) (tramp-error v 'file-error - (concat "Couldn’t write region to ‘%s’," - " decode using ‘%s’ failed") + (concat "Couldn't write region to `%s'," + " decode using `%s' failed") filename rem-dec))))) ;; Save exit. @@ -3537,7 +3537,7 @@ the result will be a local, non-Tramp, file name." (t (tramp-error v 'file-error - (concat "Method ‘%s’ should specify both encoding and " + (concat "Method `%s' should specify both encoding and " "decoding command or an scp program") method)))) @@ -3591,7 +3591,7 @@ the result will be a local, non-Tramp, file name." (tramp-compat-with-temp-message "" (with-parsed-tramp-file-name file nil (with-tramp-progress-reporter - v 3 (format-message "Checking ‘vc-registered’ for %s" file) + v 3 (format-message "Checking `vc-registered' for %s" file) ;; There could be new files, created by the vc backend. We ;; cannot reuse the old cache entries, therefore. In @@ -3751,9 +3751,9 @@ Fall back to normal file name handler if no Tramp handler exists." (if (not (processp p)) (tramp-error v 'file-notify-error - "‘%s’ failed to start on remote host" + "`%s' failed to start on remote host" (mapconcat 'identity sequence " ")) - (tramp-message v 6 "Run ‘%s’, %S" (mapconcat 'identity sequence " ") p) + (tramp-message v 6 "Run `%s', %S" (mapconcat 'identity sequence " ") p) (tramp-set-connection-property p "vector" v) (tramp-compat-set-process-query-on-exit-flag p nil) (set-process-filter p filter) @@ -3840,7 +3840,7 @@ Only send the definition if it has not already been done." (tramp-get-connection-process vec) "scripts" nil))) (unless (member name scripts) (with-tramp-progress-reporter - vec 5 (format-message "Sending script ‘%s’" name) + vec 5 (format-message "Sending script `%s'" name) ;; In bash, leading TABs like in `tramp-vc-registered-read-file-names' ;; could result in unwanted command expansion. Avoid this. (setq script (tramp-compat-replace-regexp-in-string @@ -4008,13 +4008,13 @@ file exists and nonzero exit status otherwise." (not (tramp-send-command-and-check vec (format "%s %s" result nonexistent)))))) (tramp-error - vec 'file-error "Couldn’t find command to check if file exists")) + vec 'file-error "Couldn't find command to check if file exists")) result)) (defun tramp-open-shell (vec shell) "Opens shell SHELL." (with-tramp-progress-reporter - vec 5 (format-message "Opening remote shell ‘%s’" shell) + vec 5 (format-message "Opening remote shell `%s'" shell) ;; Find arguments for this shell. (let ((alist tramp-sh-extra-args) item extra-args) @@ -4078,8 +4078,8 @@ file exists and nonzero exit status otherwise." (tramp-message vec 2 (concat - "Couldn’t find a remote shell which groks tilde " - "expansion, using ‘%s’") + "Couldn't find a remote shell which groks tilde " + "expansion, using `%s'") default-shell))) default-shell))) @@ -4087,7 +4087,7 @@ file exists and nonzero exit status otherwise." ;; Open a new shell if needed. (unless (string-equal shell default-shell) (tramp-message - vec 5 "Starting remote shell ‘%s’ for tilde expansion" shell) + vec 5 "Starting remote shell `%s' for tilde expansion" shell) (tramp-open-shell vec shell))))) ;; Utility functions. @@ -4163,7 +4163,7 @@ process to set up. VEC specifies the connection." (tramp-compat-funcall 'set-buffer-process-coding-system cs-decode cs-encode) (tramp-message - vec 5 "Setting coding system to ‘%s’ and ‘%s’" cs-decode cs-encode)) + vec 5 "Setting coding system to `%s' and `%s'" cs-decode cs-encode)) ;; Look for ^M and do something useful if found. (when (search-forward "\r" nil t) ;; We have found a ^M but cannot frob the process coding system @@ -4186,7 +4186,7 @@ process to set up. VEC specifies the connection." (when (and (stringp old-uname) (not (string-equal old-uname new-uname))) (tramp-message vec 3 - "Connection reset, because remote host changed from ‘%s’ to ‘%s’" + "Connection reset, because remote host changed from `%s' to `%s'" old-uname new-uname) ;; We want to keep the password. (tramp-cleanup-connection vec t t) @@ -4204,7 +4204,7 @@ process to set up. VEC specifies the connection." tramp-chunksize) (t (tramp-message - vec 5 "Checking remote host type for ‘send-process-string’ bug") + vec 5 "Checking remote host type for `send-process-string' bug") (if (string-match "^FreeBSD" (tramp-get-connection-property vec "uname" "")) 500 0)))) @@ -4372,17 +4372,17 @@ Goes through the list `tramp-local-coding-commands' and ;; corresponding command has to work locally. (if (not (stringp loc-enc)) (tramp-message - vec 5 "Checking local encoding function ‘%s’" loc-enc) + vec 5 "Checking local encoding function `%s'" loc-enc) (tramp-message - vec 5 "Checking local encoding command ‘%s’ for sanity" loc-enc) + vec 5 "Checking local encoding command `%s' for sanity" loc-enc) (unless (zerop (tramp-call-local-coding-command loc-enc nil nil)) (throw 'wont-work-local nil))) (if (not (stringp loc-dec)) (tramp-message - vec 5 "Checking local decoding function ‘%s’" loc-dec) + vec 5 "Checking local decoding function `%s'" loc-dec) (tramp-message - vec 5 "Checking local decoding command ‘%s’ for sanity" loc-dec) + vec 5 "Checking local decoding command `%s' for sanity" loc-dec) (unless (zerop (tramp-call-local-coding-command loc-dec nil nil)) (throw 'wont-work-local nil))) @@ -4397,7 +4397,7 @@ Goes through the list `tramp-local-coding-commands' and ;; Check the remote test command if exists. (when (stringp rem-test) (tramp-message - vec 5 "Checking remote test command ‘%s’" rem-test) + vec 5 "Checking remote test command `%s'" rem-test) (unless (tramp-send-command-and-check vec rem-test t) (throw 'wont-work-remote nil))) ;; Check if remote perl exists when necessary. @@ -4421,7 +4421,7 @@ Goes through the list `tramp-local-coding-commands' and (setq rem-enc name))) (tramp-message vec 5 - "Checking remote encoding command ‘%s’ for sanity" rem-enc) + "Checking remote encoding command `%s' for sanity" rem-enc) (unless (tramp-send-command-and-check vec (format "%s Date: Tue Aug 25 18:50:26 2015 -0700 Go back to grave quoting in Gnus * lisp/gnus/auth-source.el (auth-source-netrc-parse-entries): * lisp/gnus/gnus-agent.el (gnus-agent-check-overview-buffer) (gnus-agent-fetch-headers): * lisp/gnus/gnus-int.el (gnus-start-news-server): * lisp/gnus/gnus-registry.el: (gnus-registry--split-fancy-with-parent-internal) (gnus-registry-post-process-groups): * lisp/gnus/gnus-score.el (gnus-summary-increase-score): * lisp/gnus/gnus-start.el (gnus-convert-old-newsrc): * lisp/gnus/gnus-topic.el (gnus-topic-rename): * lisp/gnus/legacy-gnus-agent.el (gnus-agent-unlist-expire-days): * lisp/gnus/spam.el (spam-check-blackholes): Stick with grave quoting in diagnostics strings. This is more portable to older Emacs, desirable for Gnus. diff --git a/lisp/gnus/auth-source.el b/lisp/gnus/auth-source.el index 367ef6a..3f426bf 100644 --- a/lisp/gnus/auth-source.el +++ b/lisp/gnus/auth-source.el @@ -1097,7 +1097,7 @@ Note that the MAX parameter is used so we can exit the parse early." (if (equal item2 "machine") (progn (gnus-error 1 - "%s: Unexpected ‘machine’ token at line %d" + "%s: Unexpected `machine' token at line %d" "auth-source-netrc-parse-entries" (auth-source-current-line)) (forward-line 1)) diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 5f1ffe7..7b35de0 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -1721,7 +1721,7 @@ and that there are no duplicates." (or backed-up (setq backed-up (gnus-agent-backup-overview-buffer))) (gnus-message 1 - "Overview buffer contains garbage ‘%s’." + "Overview buffer contains garbage `%s'." (buffer-substring p (point-at-eol)))) ((= cur prev-num) @@ -1901,7 +1901,7 @@ article numbers will be returned." (when articles (gnus-message - 10 "gnus-agent-fetch-headers: undownloaded articles are ‘%s’" + 10 "gnus-agent-fetch-headers: undownloaded articles are `%s'" (gnus-compress-sequence articles t))) (with-current-buffer nntp-server-buffer diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el index 1c098fa..4f8f17f 100644 --- a/lisp/gnus/gnus-int.el +++ b/lisp/gnus/gnus-int.el @@ -165,7 +165,7 @@ If CONFIRM is non-nil, the user will be asked for an NNTP server." gnus-batch-mode (gnus-y-or-n-p (gnus-format-message - "%s (%s) open error: ‘%s’. Continue? " + "%s (%s) open error: `%s'. Continue? " (car gnus-select-method) (cadr gnus-select-method) (gnus-status-message gnus-select-method))) (gnus-error 1 "Couldn't open server on %s" diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index e91dd98..b233ad7 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -558,7 +558,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." do (gnus-message ;; warn more if gnus-registry-track-extra (if gnus-registry-track-extra 7 9) - "%s (extra tracking) traced subject ‘%s’ to %s" + "%s (extra tracking) traced subject `%s' to %s" log-agent subject group) and collect group)) ;; filter the found groups and return them @@ -585,7 +585,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." do (gnus-message ;; warn more if gnus-registry-track-extra (if gnus-registry-track-extra 7 9) - "%s (extra tracking) traced sender ‘%s’ to %s" + "%s (extra tracking) traced sender `%s' to %s" log-agent sender group) and collect group))) @@ -615,7 +615,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." do (gnus-message ;; warn more if gnus-registry-track-extra (if gnus-registry-track-extra 7 9) - "%s (extra tracking) traced recipient ‘%s’ to %s" + "%s (extra tracking) traced recipient `%s' to %s" log-agent recp group) and collect group))))) @@ -712,12 +712,12 @@ possible. Uses `gnus-registry-split-strategy'." ((null out) (gnus-message 5 - "%s: no matches for %s ‘%s’." + "%s: no matches for %s `%s'." log-agent mode key) nil) (t (gnus-message 5 - "%s: too many extra matches (%s) for %s ‘%s’. Returning none." + "%s: too many extra matches (%s) for %s `%s'. Returning none." log-agent out mode key) nil)))) diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el index ffd8696..4840af1 100644 --- a/lisp/gnus/gnus-score.el +++ b/lisp/gnus/gnus-score.el @@ -626,7 +626,7 @@ current score file." (if mimic (progn (sit-for 1) (message "%c %c-" prefix hchar)) - (message "%s header ‘%s’ with match type (%s?): " + (message "%s header `%s' with match type (%s?): " (if increase "Increase" "Lower") (nth 1 entry) (mapconcat (lambda (s) (char-to-string (car s))) diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index 4f26db4..82a2c98 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el @@ -2369,7 +2369,7 @@ If FORCE is non-nil, the .newsrc file is read." (while (let (c (cursor-in-echo-area t) (echo-keystrokes 0)) - (message "Convert gnus from version ‘%s’ to ‘%s’? (n/y/?)" + (message "Convert gnus from version `%s' to `%s'? (n/y/?)" gnus-newsrc-file-version gnus-version) (setq c (read-char-exclusive)) @@ -2390,7 +2390,7 @@ If FORCE is non-nil, the .newsrc file is read." (funcall func convert-to))) (gnus-dribble-enter - (gnus-format-message ";Converted gnus from version ‘%s’ to ‘%s’." + (gnus-format-message ";Converted gnus from version `%s' to `%s'." gnus-newsrc-file-version gnus-version))))))) (defun gnus-convert-mark-converter-prompt (converter no-prompt) diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el index cde1d97..9474ca0 100644 --- a/lisp/gnus/gnus-topic.el +++ b/lisp/gnus/gnus-topic.el @@ -1525,7 +1525,7 @@ If NON-RECURSIVE (which is the prefix) is t, don't unmark its subtopics." (read-string (format "Rename %s to: " topic) topic)))) ;; Check whether the new name exists. (when (gnus-topic-find-topology new-name) - (error "Topic ‘%s’ already exists" new-name)) + (error "Topic `%s' already exists" new-name)) ;; "nil" is an invalid name, for reasons I'd rather not go ;; into here. Trust me. (when (equal new-name "nil") diff --git a/lisp/gnus/legacy-gnus-agent.el b/lisp/gnus/legacy-gnus-agent.el index 8331077..ed66fec 100644 --- a/lisp/gnus/legacy-gnus-agent.el +++ b/lisp/gnus/legacy-gnus-agent.el @@ -149,17 +149,17 @@ converted to the compressed format." (insert (gnus-format-message - "\nIn order to use version ‘%s’ of gnus, you will need to set\n" + "\nIn order to use version `%s' of gnus, you will need to set\n" converting-to)) (insert "gnus-agent-expire-days to an integer. If you still wish to set different\n") (insert "expiration days to individual groups, you must instead set the\n") (insert (gnus-format-message - "‘agent-days-until-old’ group and/or topic parameter.\n")) + "`agent-days-until-old' group and/or topic parameter.\n")) (insert "\n") (insert "If you would like, gnus can iterate over every group comparing its name to the\n") (insert "regular expressions that you currently have in gnus-agent-expire-days. When\n") (insert (gnus-format-message - "gnus finds a match, it will update that group's ‘agent-days-until-old’ group\n")) + "gnus finds a match, it will update that group's `agent-days-until-old' group\n")) (insert "parameter to the value associated with the regular expression.\n") (insert "\n") (insert "Whether gnus assigns group parameters, or not, gnus will terminate with an\n") diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el index 93613a8..4ebd8a9 100644 --- a/lisp/gnus/spam.el +++ b/lisp/gnus/spam.el @@ -2054,7 +2054,7 @@ See the Info node `(gnus)Fancy Mail Splitting' for more details." (if spam-use-dig (let ((query-result (query-dig query-string))) (when query-result - (gnus-message 6 "(DIG): positive blackhole check ‘%s’" + (gnus-message 6 "(DIG): positive blackhole check `%s'" query-result) (push (list ip server query-result) matches))) commit bcfe2e0ed5018bf796cbb41465377fa1e38863b8 Author: Paul Eggert Date: Tue Aug 25 18:46:18 2015 -0700 Fix customization of text-quoting-style * lisp/cus-edit.el (custom-guess-type, custom-variable-documentation): * lisp/wid-edit.el (widget-docstring): Get raw docstring here since it’s cooked later and should not be cooked twice. * lisp/cus-edit.el (custom-group-value-create): Cook the docstring before inserting it. * lisp/cus-start.el (text-quoting-style): Quote the customization docstrings according to the new rules. Give curved examples. diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 8fea5d8..2b5ada1 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -633,7 +633,7 @@ if that fails, the doc string with `custom-guess-doc-alist'." (setq found (nth 1 current) names nil))) (unless found - (let ((doc (documentation-property symbol 'variable-documentation)) + (let ((doc (documentation-property symbol 'variable-documentation t)) (docs custom-guess-doc-alist)) (when doc (while docs @@ -2457,7 +2457,7 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"." "Return documentation of VARIABLE for use in Custom buffer. Normally just return the docstring. But if VARIABLE automatically becomes buffer local when set, append a message to that effect." - (format "%s%s" (documentation-property variable 'variable-documentation) + (format "%s%s" (documentation-property variable 'variable-documentation t) (if (and (local-variable-if-set-p variable) (or (not (local-variable-p variable)) (with-temp-buffer @@ -3995,7 +3995,7 @@ If GROUPS-ONLY is non-nil, return only those members that are groups." (members (custom-group-members symbol (and (eq custom-buffer-style 'tree) custom-browse-only-groups))) - (doc (widget-docstring widget))) + (doc (substitute-command-keys (widget-docstring widget)))) (cond ((and (eq custom-buffer-style 'tree) (eq state 'hidden) (or members (custom-unloaded-widget-p widget))) diff --git a/lisp/cus-start.el b/lisp/cus-start.el index daa95d1..2b9cc09 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -224,11 +224,9 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (text-quoting-style help (choice - (const :tag "Quote with curved single quotes" curve) - (const :tag "Quote with straight apostrophes 'like this'" - straight) - (const :tag "Quote with grave accent and apostrophe `like this'" - grave) + (const :tag "Quote with curved single quotes \\=‘like this\\=’" curve) + (const :tag "Quote with straight apostrophes \\='like this\\='" straight) + (const :tag "Quote with grave accent and apostrophe \\=`like this\\='" grave) (const :tag "Use curved quotes if displayable, grave accent and apostrophe otherwise" nil)) "25.1") ;; dosfns.c diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index e98ac18..0c8f4af 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -1676,7 +1676,7 @@ as the argument to `documentation-property'." (cond ((functionp doc-prop) (funcall doc-prop value)) ((symbolp doc-prop) - (documentation-property value doc-prop))))))) + (documentation-property value doc-prop t))))))) (when (and (stringp doc) (> (length doc) 0)) ;; Remove any redundant `*' in the beginning. (when (eq (aref doc 0) ?*) commit 71781c31a4860e56434643296eaa303ca43386bb Author: Paul Eggert Date: Tue Aug 25 18:41:31 2015 -0700 format-message now curves ` and ' That way, the caller doesn’t have to use curved quotes to get diagnostics that match the text-quoting-style preferences. Suggested by Dmitry Gutov in: http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00893.html This means we no longer need %qs, so remove that format. While we’re at it, fix an unlikely bug and lessen the pressure on the garbage collector by processing the string once rather than twice in the usual case. * doc/lispref/strings.texi (Formatting Strings): * etc/NEWS: Document this. * lisp/subr.el (format-message): Remove; now done in C. * src/callint.c (Fcall_interactively): * src/editfns.c (Fmessage, Fmessage_box): Use Fformat_message instead of Finternal__text_restyle followed by Fformat. * src/doc.c (LSQM, RSQM): Remove; all uses changed to use uLSQM and uRSQM. (Fsubstitute_command_keys): Prefer AUTO_STRING to build_string when pure ASCII now suffices. Fix unlikely bug when parsing unibyte string containing non-ASCII bytes. Use inline code rather than memcpy, as it’s a tiny number of bytes. (Finternal__text_restyle): Remove; no longer used. (syms_of_doc): Don’t declare it. * src/editfns.c (Fformat): Rewrite in terms of new function ‘styled_format’. (Fformat_message): New function, moved here from subr.el. (styled_format): New function, with the old guts of Fformat, except it now optionally transliterates quotes, and it transliterates traditional grave accent and apostrophe quoting as well. Remove recently-added q flag; no longer needed or used. (syms_of_editfns): Define format-message. * src/lisp.h (uLSQM0, uLSQM1, uLSQM2, uRSQM0, uRSQM1, uRSQM2): Remove; no longer need to be global symbols. * src/xdisp.c (vadd_to_log): Use Fformat_message, not Fformat, so that callers can use `%s'. * src/image.c (image_size_error, xbm_load_image, xbm_load) (xpm_load, pbm_load, png_load_body, jpeg_load_body, tiff_load) (gif_load, imagemagick_load_image, imagemagick_load, svg_load) (svg_load_image, gs_load, x_kill_gs_process): * src/lread.c (load_warn_old_style_backquotes): * src/xfaces.c (load_pixmap): * src/xselect.c (x_clipboard_manager_error_1): Use `%s' instead of %qs in formats. diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index 326359e..08e8e87 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -816,9 +816,13 @@ if any. @end defun @defun format-message string &rest objects +@cindex curved quotes +@cindex curly quotes This function acts like @code{format}, except it also converts any -curved quotes in @var{string} as per the value of -@code{text-quoting-style}. @xref{Keys in Documentation}. +curved single quotes in @var{string} as per the value of +@code{text-quoting-style}, and treats grave accent (@t{`}) and +apostrophe (@t{'}) as if they were curved single quotes. @xref{Keys +in Documentation}. @end defun @cindex @samp{%} in format @@ -919,20 +923,23 @@ specification is unusual in that it does not use a value. For example, Any other format character results in an @samp{Invalid format operation} error. - Here are several examples: + Here are several examples, which assume the typical +@code{text-quoting-style} settings: @example @group -(format "The name of this buffer is %s." (buffer-name)) - @result{} "The name of this buffer is strings.texi." - -(format "The buffer object prints as %qs." (current-buffer)) - @result{} "The buffer object prints as ‘strings.texi’." - (format "The octal value of %d is %o, and the hex value is %x." 18 18 18) @result{} "The octal value of 18 is 22, and the hex value is 12." + +(format-message + "The name of this buffer is ‘%s’." (buffer-name)) + @result{} "The name of this buffer is ‘strings.texi’." + +(format-message + "The buffer object prints as `%s'." (current-buffer)) + @result{} "The buffer object prints as ‘strings.texi’." @end group @end example @@ -1001,20 +1008,13 @@ specifier, if any, to be inserted on the right rather than the left. If both @samp{-} and @samp{0} are present, the @samp{0} flag is ignored. -@cindex curved quotes -@cindex curly quotes - The flag @samp{q} quotes the printed representation as per the -variable @samp{text-quoting-style}. @xref{Keys in Documentation}. -Typically it uses curved single quotes @t{‘like this’} as in the -following example. - @example @group (format "%06d is padded on the left with zeros" 123) @result{} "000123 is padded on the left with zeros" -(format "%q-6d is padded on the right" 123) - @result{} "‘123 ’ is padded on the right" +(format "'%-6d' is padded on the right" 123) + @result{} "'123 ' is padded on the right" (format "The word '%-7s' actually has %d letters in it." "foo" (length "foo")) diff --git a/etc/NEWS b/etc/NEWS index 89ab98d..4851c35 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -272,7 +272,7 @@ successive char insertions. € № ← → ↔ − ≈ ≠ ≤ ≥. As before, you can type C-x 8 C-h to list shorthands. ** New minor mode electric-quote-mode for quoting ‘like this’ and “like this” -as you type. +as you type. See also the new variable ‘text-quoting-style’. ** New minor mode global-eldoc-mode is enabled by default. @@ -916,20 +916,21 @@ Set it to ‘curve’ for curved single quotes ‘like this’, to ‘straight for straight apostrophes 'like this', and to ‘grave’ for grave accent and apostrophe `like this'. The default value nil acts like ‘curve’ if curved single quotes are displayable, and like ‘grave’ otherwise. -Quotes in info files are not translated. +The new variable affects display of diagnostics and help, but not of info. +++ ** substitute-command-keys now replaces quotes. That is, it converts documentation strings’ quoting style as per the value of ‘text-quoting-style’. Doc strings in source code can use -either curved quotes or grave accent and apostrophe. As before, -characters preceded by \= are output as-is. +either curved single quotes or grave accents and apostrophes. As +before, characters preceded by \= are output as-is. +++ ** Message-issuing functions ‘error’, ‘message’, etc. now convert quotes. They use the new ‘format-message’ function instead of plain ‘format’, -so that they now follow user preference as per ‘text-quoting-style’ if -their format argument contains curved quotes. +so that they now follow user preference as per ‘text-quoting-style’ +when processing curved single quotes, grave accents, and apostrophes +in their format argument. +++ ** The character classes [:alpha:] and [:alnum:] in regular expressions @@ -1055,13 +1056,8 @@ quotes. +++ ** New function ‘format-message’ is like ‘format’ and also converts -curved quotes as per ‘text-quoting-style’. - -+++ -** New ‘format’ flag ‘q’ -The new ‘q’ flag causes ‘format’ to quote the output representation as -per the value of ‘text-quoting-style’. E.g., (format "%qs failed" -"foo") might return "‘foo’ failed". +curved single quotes, grave accents and apostrophes as per +‘text-quoting-style’. +++ ** show-help-function's arg is converted via substitute-command-keys diff --git a/lisp/subr.el b/lisp/subr.el index 21e277b..53dea3e 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -288,12 +288,6 @@ This function accepts any number of arguments, but ignores them." (interactive) nil) -(defun format-message (format-string &rest args) - "Format a string out of FORMAT-STRING and arguments. -This is like ‘format’, except it also converts curved quotes in -FORMAT-STRING as per ‘text-quoting-style’." - (apply #'format (internal--text-restyle format-string) args)) - ;; Signal a compile-error if the first arg is missing. (defun error (&rest args) "Signal an error, making error message by passing all args to `format'. diff --git a/src/callint.c b/src/callint.c index be0fb1a..e39f4df 100644 --- a/src/callint.c +++ b/src/callint.c @@ -511,9 +511,8 @@ invoke it. If KEYS is omitted or nil, the return value of for (i = 2; *tem; i++) { visargs[1] = make_string (tem + 1, strcspn (tem + 1, "\n")); - visargs[1] = Finternal__text_restyle (visargs[1]); if (strchr (SSDATA (visargs[1]), '%')) - callint_message = Fformat (i - 1, visargs + 1); + callint_message = Fformat_message (i - 1, visargs + 1); else callint_message = visargs[1]; diff --git a/src/doc.c b/src/doc.c index 7a298e2..637200f 100644 --- a/src/doc.c +++ b/src/doc.c @@ -684,10 +684,7 @@ the same file name is found in the `doc-directory'. */) return unbind_to (count, Qnil); } -/* Curved quotation marks. */ -static unsigned char const LSQM[] = { uLSQM0, uLSQM1, uLSQM2 }; -static unsigned char const RSQM[] = { uRSQM0, uRSQM1, uRSQM2 }; - +/* Return true if text quoting style should default to quote `like this'. */ static bool default_to_grave_quoting_style (void) { @@ -925,14 +922,13 @@ Otherwise, return a new string. */) if (NILP (tem)) { name = Fsymbol_name (name); - insert1 (Fsubstitute_command_keys - (build_string ("\nUses keymap "uLSQM))); + AUTO_STRING (msg_prefix, "\nUses keymap `"); + insert1 (Fsubstitute_command_keys (msg_prefix)); insert_from_string (name, 0, 0, SCHARS (name), SBYTES (name), 1); - insert1 (Fsubstitute_command_keys - (build_string - (uRSQM", which is not currently defined.\n"))); + AUTO_STRING (msg_suffix, "', which is not currently defined.\n"); + insert1 (Fsubstitute_command_keys (msg_suffix)); if (start[-1] == '<') keymap = Qnil; } else if (start[-1] == '<') @@ -972,9 +968,9 @@ Otherwise, return a new string. */) else if ((strp[0] == '`' || strp[0] == '\'') && quoting_style == CURVE_QUOTING_STYLE) { - start = strp[0] == '`' ? LSQM : RSQM; + start = (unsigned char const *) (strp[0] == '`' ? uLSQM : uRSQM); length = 1; - length_byte = 3; + length_byte = sizeof uLSQM - 1; idx = strp - SDATA (string) + 1; goto subst; } @@ -985,29 +981,28 @@ Otherwise, return a new string. */) nchars++; changed = true; } - else if (strp[0] == uLSQM0 && strp[1] == uLSQM1 - && (strp[2] == uLSQM2 || strp[2] == uRSQM2) - && quoting_style != CURVE_QUOTING_STYLE) - { - *bufp++ = (strp[2] == uLSQM2 && quoting_style == GRAVE_QUOTING_STYLE - ? '`' : '\''); - strp += 3; - nchars++; - changed = true; - } - else if (! multibyte) /* just copy other chars */ + else if (! multibyte) *bufp++ = *strp++, nchars++; else { int len; - - STRING_CHAR_AND_LENGTH (strp, len); - if (len == 1) - *bufp = *strp; + int ch = STRING_CHAR_AND_LENGTH (strp, len); + if ((ch == LEFT_SINGLE_QUOTATION_MARK + || ch == RIGHT_SINGLE_QUOTATION_MARK) + && quoting_style != CURVE_QUOTING_STYLE) + { + *bufp++ = ((ch == LEFT_SINGLE_QUOTATION_MARK + && quoting_style == GRAVE_QUOTING_STYLE) + ? '`' : '\''); + strp += len; + changed = true; + } else - memcpy (bufp, strp, len); - strp += len; - bufp += len; + { + do + *bufp++ = *strp++; + while (--len != 0); + } nchars++; } } @@ -1019,67 +1014,6 @@ Otherwise, return a new string. */) xfree (buf); RETURN_UNGCPRO (tem); } - -DEFUN ("internal--text-restyle", Finternal__text_restyle, - Sinternal__text_restyle, 1, 1, 0, - doc: /* Return STRING, possibly substituting quote characters. - -In the result, replace each curved single quote (\\=‘ and \\=’) by -left and right quote characters as specified by ‘text-quoting-style’. - -Return the original STRING in the common case where no changes are needed. -Otherwise, return a new string. */) - (Lisp_Object string) -{ - bool changed = false; - - CHECK_STRING (string); - if (! STRING_MULTIBYTE (string)) - return string; - - enum text_quoting_style quoting_style = text_quoting_style (); - if (quoting_style == CURVE_QUOTING_STYLE) - return string; - - ptrdiff_t bsize = SBYTES (string); - unsigned char const *strp = SDATA (string); - unsigned char const *strlim = strp + bsize; - USE_SAFE_ALLOCA; - char *buf = SAFE_ALLOCA (bsize); - char *bufp = buf; - ptrdiff_t nchars = 0; - - while (strp < strlim) - { - unsigned char const *cp = strp; - switch (STRING_CHAR_ADVANCE (strp)) - { - case LEFT_SINGLE_QUOTATION_MARK: - *bufp++ = quoting_style == GRAVE_QUOTING_STYLE ? '`': '\''; - changed = true; - break; - - case RIGHT_SINGLE_QUOTATION_MARK: - *bufp++ = '\''; - changed = true; - break; - - default: - do - *bufp++ = *cp++; - while (cp != strp); - - break; - } - - nchars++; - } - - Lisp_Object result - = changed ? make_string_from_bytes (buf, nchars, bufp - buf) : string; - SAFE_FREE (); - return result; -} void syms_of_doc (void) @@ -1113,5 +1047,4 @@ displayable, and like ‘grave’ otherwise. */); defsubr (&Sdocumentation_property); defsubr (&Ssnarf_documentation); defsubr (&Ssubstitute_command_keys); - defsubr (&Sinternal__text_restyle); } diff --git a/src/editfns.c b/src/editfns.c index da7d554..2703a5d 100644 --- a/src/editfns.c +++ b/src/editfns.c @@ -72,6 +72,7 @@ static Lisp_Object format_time_string (char const *, ptrdiff_t, struct timespec, static long int tm_gmtoff (struct tm *); static int tm_diff (struct tm *, struct tm *); static void update_buffer_properties (ptrdiff_t, ptrdiff_t); +static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool); #ifndef HAVE_TM_GMTOFF # define HAVE_TM_GMTOFF false @@ -3696,8 +3697,7 @@ usage: (message FORMAT-STRING &rest ARGS) */) } else { - args[0] = Finternal__text_restyle (args[0]); - Lisp_Object val = Fformat (nargs, args); + Lisp_Object val = Fformat_message (nargs, args); message3 (val); return val; } @@ -3722,8 +3722,7 @@ usage: (message-box FORMAT-STRING &rest ARGS) */) } else { - args[0] = Finternal__text_restyle (args[0]); - Lisp_Object val = Fformat (nargs, args); + Lisp_Object val = Fformat_message (nargs, args); Lisp_Object pane, menu; struct gcpro gcpro1; @@ -3822,7 +3821,7 @@ specifiers, as follows: %character -where flags is [+ #-0q]+, width is [0-9]+, and precision is .[0-9]+ +where flags is [+ #-0]+, width is [0-9]+, and precision is .[0-9]+ The + flag character inserts a + before any positive number, while a space inserts a space before any positive number; these flags only @@ -3835,9 +3834,6 @@ The # flag means to use an alternate display form for %o, %x, %X, %e, for %e, %f, and %g, it causes a decimal point to be included even if the precision is zero. -The q flag means to quote the printed representation as per -‘text-quoting-style’. E.g., "%qs" is equivalent to "‘%s’". - The width specifier supplies a lower limit for the length of the printed representation. The padding, if any, normally goes on the left, but it goes on the right if the - flag is present. The padding @@ -3853,6 +3849,31 @@ specifier truncates the string to the given width. usage: (format STRING &rest OBJECTS) */) (ptrdiff_t nargs, Lisp_Object *args) { + return styled_format (nargs, args, false); +} + +DEFUN ("format-message", Fformat_message, Sformat_message, 1, MANY, 0, + doc: /* Format a string out of a format-string and arguments. +The first argument is a format control string. +The other arguments are substituted into it to make the result, a string. + +This acts like ‘format’, except it also replaces each left single +quotation mark (\\=‘) and grave accent (\\=`) by a left quote, and each +right single quotation mark (\\=’) and apostrophe (\\=') by a right quote. +The left and right quote replacement characters are specified by +‘text-quoting-style’. + +usage: (format-message STRING &rest OBJECTS) */) + (ptrdiff_t nargs, Lisp_Object *args) +{ + return styled_format (nargs, args, true); +} + +/* Implement ‘format-message’ if MESSAGE is true, ‘format’ otherwise. */ + +static Lisp_Object +styled_format (ptrdiff_t nargs, Lisp_Object *args, bool message) +{ ptrdiff_t n; /* The number of the next arg to substitute. */ char initial_buffer[4000]; char *buf = initial_buffer; @@ -3917,7 +3938,8 @@ usage: (format STRING &rest OBJECTS) */) /* Try to determine whether the result should be multibyte. This is not always right; sometimes the result needs to be multibyte - because of an object that we will pass through prin1, + because of an object that we will pass through prin1. + or because a grave accent or apostrophe is requoted, and in that case, we won't know it here. */ multibyte_format = STRING_MULTIBYTE (args[0]); multibyte = multibyte_format; @@ -3925,7 +3947,7 @@ usage: (format STRING &rest OBJECTS) */) if (STRINGP (args[n]) && STRING_MULTIBYTE (args[n])) multibyte = 1; - enum text_quoting_style quoting_style = text_quoting_style (); + int quoting_style = message ? text_quoting_style () : -1; /* If we start out planning a unibyte result, then discover it has to be multibyte, we jump back to retry. */ @@ -3945,11 +3967,13 @@ usage: (format STRING &rest OBJECTS) */) /* The values of N and FORMAT when the loop body is entered. */ ptrdiff_t n0 = n; char *format0 = format; + char const *convsrc = format; + unsigned char format_char = *format++; /* Bytes needed to represent the output of this conversion. */ - ptrdiff_t convbytes; + ptrdiff_t convbytes = 1; - if (*format == '%') + if (format_char == '%') { /* General format specifications look like @@ -3974,23 +3998,21 @@ usage: (format STRING &rest OBJECTS) */) bool space_flag = false; bool sharp_flag = false; bool zero_flag = false; - bool quote_flag = false; ptrdiff_t field_width; bool precision_given; uintmax_t precision = UINTMAX_MAX; char *num_end; char conversion; - while (1) + for (; ; format++) { - switch (*++format) + switch (*format) { case '-': minus_flag = true; continue; case '+': plus_flag = true; continue; case ' ': space_flag = true; continue; case '#': sharp_flag = true; continue; case '0': zero_flag = true; continue; - case 'q': quote_flag = true; continue; } break; } @@ -4014,11 +4036,10 @@ usage: (format STRING &rest OBJECTS) */) error ("Format string ends in middle of format specifier"); memset (&discarded[format0 - format_start], 1, format - format0); - conversion = *format; + conversion = *format++; if (conversion == '%') goto copy_char; discarded[format - format_start] = 1; - format++; ++n; if (! (n < nargs)) @@ -4118,20 +4139,6 @@ usage: (format STRING &rest OBJECTS) */) if (convbytes && multibyte && ! STRING_MULTIBYTE (args[n])) convbytes = count_size_as_multibyte (SDATA (args[n]), nbytes); - if (quote_flag) - { - convbytes += 2; - if (quoting_style == CURVE_QUOTING_STYLE) - { - if (!multibyte) - { - multibyte = true; - goto retry; - } - convbytes += 4; - } - } - padding = width < field_width ? field_width - width : 0; if (max_bufsize - padding <= convbytes) @@ -4139,27 +4146,6 @@ usage: (format STRING &rest OBJECTS) */) convbytes += padding; if (convbytes <= buf + bufsize - p) { - - if (quote_flag) - { - switch (quoting_style) - { - case CURVE_QUOTING_STYLE: - memcpy (p, uLSQM, 3); - p += 3; - break; - - case GRAVE_QUOTING_STYLE: - *p++ = '`'; - break; - - case STRAIGHT_QUOTING_STYLE: - *p++ = '\''; - break; - } - nchars++; - } - if (! minus_flag) { memset (p, ' ', padding); @@ -4189,22 +4175,6 @@ usage: (format STRING &rest OBJECTS) */) nchars += padding; } - if (quote_flag) - { - switch (quoting_style) - { - case CURVE_QUOTING_STYLE: - memcpy (p, uRSQM, 3); - p += 3; - break; - - default: - *p++ = '\''; - break; - } - nchars++; - } - /* If this argument has text properties, record where in the result string it appears. */ if (string_intervals (args[n])) @@ -4464,44 +4434,72 @@ usage: (format STRING &rest OBJECTS) */) } } else - copy_char: { - /* Copy a single character from format to buf. */ + /* Named constants for the UTF-8 encodings of U+2018 LEFT SINGLE + QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK. */ + enum + { + uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98, + /* uRSQM0 = 0xE2, uRSQM1 = 0x80, */ uRSQM2 = 0x99 + }; - char *src = format; unsigned char str[MAX_MULTIBYTE_LENGTH]; - if (multibyte_format) + if ((format_char == '`' || format_char == '\'') + && quoting_style == CURVE_QUOTING_STYLE) { - /* Copy a whole multibyte character. */ - if (p > buf - && !ASCII_CHAR_P (*((unsigned char *) p - 1)) - && !CHAR_HEAD_P (*format)) - maybe_combine_byte = 1; - - do - format++; - while (! CHAR_HEAD_P (*format)); - - convbytes = format - src; - memset (&discarded[src + 1 - format_start], 2, convbytes - 1); + if (! multibyte) + { + multibyte = true; + goto retry; + } + convsrc = format_char == '`' ? uLSQM : uRSQM; + convbytes = 3; + } + else if (format_char == '`' && quoting_style == STRAIGHT_QUOTING_STYLE) + convsrc = "'"; + else if (format_char == uLSQM0 && CURVE_QUOTING_STYLE < quoting_style + && multibyte_format + && (unsigned char) format[0] == uLSQM1 + && ((unsigned char) format[1] == uLSQM2 + || (unsigned char) format[1] == uRSQM2)) + { + convsrc = (((unsigned char) format[1] == uLSQM2 + && quoting_style == GRAVE_QUOTING_STYLE) + ? "`" : "'"); + format += 2; + memset (&discarded[format0 + 1 - format_start], 2, 2); } else { - unsigned char uc = *format++; - if (! multibyte || ASCII_CHAR_P (uc)) - convbytes = 1; - else + /* Copy a single character from format to buf. */ + if (multibyte_format) + { + /* Copy a whole multibyte character. */ + if (p > buf + && !ASCII_CHAR_P (*((unsigned char *) p - 1)) + && !CHAR_HEAD_P (format_char)) + maybe_combine_byte = 1; + + while (! CHAR_HEAD_P (*format)) + format++; + + convbytes = format - format0; + memset (&discarded[format0 + 1 - format_start], 2, + convbytes - 1); + } + else if (multibyte && !ASCII_CHAR_P (format_char)) { - int c = BYTE8_TO_CHAR (uc); + int c = BYTE8_TO_CHAR (format_char); convbytes = CHAR_STRING (c, str); - src = (char *) str; + convsrc = (char *) str; } } + copy_char: if (convbytes <= buf + bufsize - p) { - memcpy (p, src, convbytes); + memcpy (p, convsrc, convbytes); p += convbytes; nchars++; continue; @@ -5213,6 +5211,7 @@ functions if all the text being accessed has this property. */); defsubr (&Smessage_or_box); defsubr (&Scurrent_message); defsubr (&Sformat); + defsubr (&Sformat_message); defsubr (&Sinsert_buffer_substring); defsubr (&Scompare_buffer_substrings); diff --git a/src/image.c b/src/image.c index 63089a9..743d230 100644 --- a/src/image.c +++ b/src/image.c @@ -647,7 +647,7 @@ image_error (const char *format, ...) static void image_size_error (void) { - image_error ("Invalid image size (see %qs)", "max-image-size"); + image_error ("Invalid image size (see `%s')", "max-image-size"); } @@ -2952,13 +2952,13 @@ xbm_load_image (struct frame *f, struct image *img, unsigned char *contents, if (img->pixmap == NO_PIXMAP) { x_clear_image (f, img); - image_error ("Unable to create X pixmap for %qs", img->spec); + image_error ("Unable to create X pixmap for `%s'", img->spec); } else success_p = 1; } else - image_error ("Error loading XBM image %qs", img->spec); + image_error ("Error loading XBM image `%s'", img->spec); return success_p; } @@ -2996,7 +2996,7 @@ xbm_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_fd (file_name, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", file_name); + image_error ("Cannot find image file `%s'", file_name); return 0; } @@ -3004,7 +3004,7 @@ xbm_load (struct frame *f, struct image *img) unsigned char *contents = slurp_file (fd, &size); if (contents == NULL) { - image_error ("Error loading XBM image %qs", file); + image_error ("Error loading XBM image `%s'", file); return 0; } @@ -3116,7 +3116,7 @@ xbm_load (struct frame *f, struct image *img) success_p = 1; else { - image_error ("Unable to create pixmap for XBM image %qs", + image_error ("Unable to create pixmap for XBM image `%s'", img->spec); x_clear_image (f, img); } @@ -3639,7 +3639,7 @@ xpm_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_file (specified_file); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); #ifdef ALLOC_XPM_COLORS xpm_free_color_cache (); #endif @@ -3671,7 +3671,7 @@ xpm_load (struct frame *f, struct image *img) Lisp_Object buffer = image_spec_value (img->spec, QCdata, NULL); if (!STRINGP (buffer)) { - image_error ("Invalid image data %qs", buffer); + image_error ("Invalid image data `%s'", buffer); #ifdef ALLOC_XPM_COLORS xpm_free_color_cache (); #endif @@ -4302,7 +4302,7 @@ xpm_load (struct frame *f, Lisp_Object file = x_find_image_fd (file_name, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", file_name); + image_error ("Cannot find image file `%s'", file_name); return 0; } @@ -4310,7 +4310,7 @@ xpm_load (struct frame *f, unsigned char *contents = slurp_file (fd, &size); if (contents == NULL) { - image_error ("Error loading XPM image %qs", file); + image_error ("Error loading XPM image `%s'", file); return 0; } @@ -4324,7 +4324,7 @@ xpm_load (struct frame *f, data = image_spec_value (img->spec, QCdata, NULL); if (!STRINGP (data)) { - image_error ("Invalid image data %qs", data); + image_error ("Invalid image data `%s'", data); return 0; } success_p = xpm_load_image (f, img, SDATA (data), @@ -5278,7 +5278,7 @@ pbm_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_fd (specified_file, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); return 0; } @@ -5286,7 +5286,7 @@ pbm_load (struct frame *f, struct image *img) contents = slurp_file (fd, &size); if (contents == NULL) { - image_error ("Error reading %qs", file); + image_error ("Error reading `%s'", file); return 0; } @@ -5299,7 +5299,7 @@ pbm_load (struct frame *f, struct image *img) data = image_spec_value (img->spec, QCdata, NULL); if (!STRINGP (data)) { - image_error ("Invalid image data %qs", data); + image_error ("Invalid image data `%s'", data); return 0; } p = SDATA (data); @@ -5309,7 +5309,7 @@ pbm_load (struct frame *f, struct image *img) /* Check magic number. */ if (end - p < 2 || *p++ != 'P') { - image_error ("Not a PBM image: %qs", img->spec); + image_error ("Not a PBM image: `%s'", img->spec); error: xfree (contents); img->pixmap = NO_PIXMAP; @@ -5343,7 +5343,7 @@ pbm_load (struct frame *f, struct image *img) break; default: - image_error ("Not a PBM image: %qs", img->spec); + image_error ("Not a PBM image: `%s'", img->spec); goto error; } @@ -5442,7 +5442,7 @@ pbm_load (struct frame *f, struct image *img) x_destroy_x_image (ximg); #endif x_clear_image (f, img); - image_error ("Invalid image size in image %qs", + image_error ("Invalid image size in image `%s'", img->spec); goto error; } @@ -5477,7 +5477,7 @@ pbm_load (struct frame *f, struct image *img) x_destroy_x_image (ximg); #endif x_clear_image (f, img); - image_error ("Invalid image size in image %qs", img->spec); + image_error ("Invalid image size in image `%s'", img->spec); goto error; } @@ -5520,7 +5520,7 @@ pbm_load (struct frame *f, struct image *img) #else x_destroy_x_image (ximg); #endif - image_error ("Invalid pixel value in image %qs", img->spec); + image_error ("Invalid pixel value in image `%s'", img->spec); goto error; } @@ -5916,7 +5916,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c) Lisp_Object file = x_find_image_fd (specified_file, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); return 0; } @@ -5924,7 +5924,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c) fp = fdopen (fd, "rb"); if (!fp) { - image_error ("Cannot open image file %qs", file); + image_error ("Cannot open image file `%s'", file); return 0; } @@ -5933,7 +5933,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c) || png_sig_cmp (sig, 0, sizeof sig)) { fclose (fp); - image_error ("Not a PNG file: %qs", file); + image_error ("Not a PNG file: `%s'", file); return 0; } } @@ -5941,7 +5941,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c) { if (!STRINGP (specified_data)) { - image_error ("Invalid image data %qs", specified_data); + image_error ("Invalid image data `%s'", specified_data); return 0; } @@ -5954,7 +5954,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c) if (tbr.len < sizeof sig || png_sig_cmp (tbr.bytes, 0, sizeof sig)) { - image_error ("Not a PNG image: %qs", img->spec); + image_error ("Not a PNG image: `%s'", img->spec); return 0; } @@ -6681,20 +6681,20 @@ jpeg_load_body (struct frame *f, struct image *img, Lisp_Object file = x_find_image_fd (specified_file, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); return 0; } fp = fdopen (fd, "rb"); if (fp == NULL) { - image_error ("Cannot open %qs", file); + image_error ("Cannot open `%s'", file); return 0; } } else if (!STRINGP (specified_data)) { - image_error ("Invalid image data %qs", specified_data); + image_error ("Invalid image data `%s'", specified_data); return 0; } @@ -6710,7 +6710,7 @@ jpeg_load_body (struct frame *f, struct image *img, { char buf[JMSG_LENGTH_MAX]; mgr->cinfo.err->format_message ((j_common_ptr) &mgr->cinfo, buf); - image_error ("Error reading JPEG image %qs: %s", + image_error ("Error reading JPEG image `%s': %s", img->spec, build_string (buf)); break; } @@ -7196,7 +7196,7 @@ tiff_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_file (specified_file); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); return 0; } @@ -7209,7 +7209,7 @@ tiff_load (struct frame *f, struct image *img) tiff = TIFFOpen (SSDATA (encoded_file), "r"); if (tiff == NULL) { - image_error ("Cannot open %qs", file); + image_error ("Cannot open `%s'", file); return 0; } } @@ -7217,7 +7217,7 @@ tiff_load (struct frame *f, struct image *img) { if (!STRINGP (specified_data)) { - image_error ("Invalid image data %qs", specified_data); + image_error ("Invalid image data `%s'", specified_data); return 0; } @@ -7237,7 +7237,7 @@ tiff_load (struct frame *f, struct image *img) if (!tiff) { - image_error ("Cannot open memory source for %qs", img->spec); + image_error ("Cannot open memory source for `%s'", img->spec); return 0; } } @@ -7249,7 +7249,7 @@ tiff_load (struct frame *f, struct image *img) if (! (TYPE_MINIMUM (tdir_t) <= ino && ino <= TYPE_MAXIMUM (tdir_t) && TIFFSetDirectory (tiff, ino))) { - image_error ("Invalid image number %qs in image %qs", + image_error ("Invalid image number `%s' in image `%s'", image, img->spec); TIFFClose (tiff); return 0; @@ -7293,7 +7293,7 @@ tiff_load (struct frame *f, struct image *img) TIFFClose (tiff); if (!rc) { - image_error ("Error reading TIFF image %qs", img->spec); + image_error ("Error reading TIFF image `%s'", img->spec); xfree (buf); return 0; } @@ -7629,7 +7629,7 @@ gif_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_file (specified_file); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", specified_file); + image_error ("Cannot find image file `%s'", specified_file); return 0; } @@ -7643,14 +7643,14 @@ gif_load (struct frame *f, struct image *img) gif = DGifOpenFileName (SSDATA (encoded_file)); if (gif == NULL) { - image_error ("Cannot open %qs", file); + image_error ("Cannot open `%s'", file); return 0; } #else gif = DGifOpenFileName (SSDATA (encoded_file), &gif_err); if (gif == NULL) { - image_error ("Cannot open %qs: %s", + image_error ("Cannot open `%s': %s", file, build_string (GifErrorString (gif_err))); return 0; } @@ -7660,7 +7660,7 @@ gif_load (struct frame *f, struct image *img) { if (!STRINGP (specified_data)) { - image_error ("Invalid image data %qs", specified_data); + image_error ("Invalid image data `%s'", specified_data); return 0; } @@ -7674,14 +7674,14 @@ gif_load (struct frame *f, struct image *img) gif = DGifOpen (&memsrc, gif_read_from_memory); if (!gif) { - image_error ("Cannot open memory source %qs", img->spec); + image_error ("Cannot open memory source `%s'", img->spec); return 0; } #else gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err); if (!gif) { - image_error ("Cannot open memory source %qs: %s", + image_error ("Cannot open memory source `%s': %s", img->spec, build_string (GifErrorString (gif_err))); return 0; } @@ -7700,7 +7700,7 @@ gif_load (struct frame *f, struct image *img) rc = DGifSlurp (gif); if (rc == GIF_ERROR || gif->ImageCount <= 0) { - image_error ("Error reading %qs", img->spec); + image_error ("Error reading `%s'", img->spec); gif_close (gif, NULL); return 0; } @@ -7711,7 +7711,7 @@ gif_load (struct frame *f, struct image *img) idx = INTEGERP (image_number) ? XFASTINT (image_number) : 0; if (idx < 0 || idx >= gif->ImageCount) { - image_error ("Invalid image number %qs in image %qs", + image_error ("Invalid image number `%s' in image `%s'", image_number, img->spec); gif_close (gif, NULL); return 0; @@ -7984,10 +7984,10 @@ gif_load (struct frame *f, struct image *img) char *error_text = GifErrorString (gif_err); if (error_text) - image_error ("Error closing %qs: %s", + image_error ("Error closing `%s': %s", img->spec, build_string (error_text)); #else - image_error ("Error closing %qs", img->spec); + image_error ("Error closing `%s'", img->spec); #endif } @@ -8528,7 +8528,7 @@ imagemagick_load_image (struct frame *f, struct image *img, if (ino < 0 || ino >= MagickGetNumberImages (image_wand)) { - image_error ("Invalid image number %qs in image %qs", image, img->spec); + image_error ("Invalid image number `%s' in image `%s'", image, img->spec); DestroyMagickWand (image_wand); return 0; } @@ -8797,7 +8797,7 @@ imagemagick_load_image (struct frame *f, struct image *img, MagickWandTerminus (); /* TODO more cleanup. */ - image_error ("Error parsing IMAGEMAGICK image %qs", img->spec); + image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec); return 0; } @@ -8819,7 +8819,7 @@ imagemagick_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_file (file_name); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", file_name); + image_error ("Cannot find image file `%s'", file_name); return 0; } file = ENCODE_FILE (file); @@ -8837,7 +8837,7 @@ imagemagick_load (struct frame *f, struct image *img) data = image_spec_value (img->spec, QCdata, NULL); if (!STRINGP (data)) { - image_error ("Invalid image data %qs", data); + image_error ("Invalid image data `%s'", data); return 0; } success_p = imagemagick_load_image (f, img, SDATA (data), @@ -9098,7 +9098,7 @@ svg_load (struct frame *f, struct image *img) Lisp_Object file = x_find_image_fd (file_name, &fd); if (!STRINGP (file)) { - image_error ("Cannot find image file %qs", file_name); + image_error ("Cannot find image file `%s'", file_name); return 0; } @@ -9107,7 +9107,7 @@ svg_load (struct frame *f, struct image *img) unsigned char *contents = slurp_file (fd, &size); if (contents == NULL) { - image_error ("Error loading SVG image %qs", file); + image_error ("Error loading SVG image `%s'", file); return 0; } /* If the file was slurped into memory properly, parse it. */ @@ -9124,7 +9124,7 @@ svg_load (struct frame *f, struct image *img) data = image_spec_value (img->spec, QCdata, NULL); if (!STRINGP (data)) { - image_error ("Invalid image data %qs", data); + image_error ("Invalid image data `%s'", data); return 0; } original_filename = BVAR (current_buffer, filename); @@ -9323,7 +9323,7 @@ svg_load_image (struct frame *f, /* Pointer to emacs frame structure. * g_object_unref (rsvg_handle); /* FIXME: Use error->message so the user knows what is the actual problem with the image. */ - image_error ("Error parsing SVG image %qs", img->spec); + image_error ("Error parsing SVG image `%s'", img->spec); g_error_free (err); return 0; } @@ -9497,7 +9497,7 @@ gs_load (struct frame *f, struct image *img) if (!img->pixmap) { - image_error ("Unable to create pixmap for %qs" , img->spec); + image_error ("Unable to create pixmap for `%s'" , img->spec); return 0; } @@ -9609,7 +9609,7 @@ x_kill_gs_process (Pixmap pixmap, struct frame *f) #endif } else - image_error ("Cannot get X image of %qs; colors will not be freed", + image_error ("Cannot get X image of `%s'; colors will not be freed", img->spec); unblock_input (); diff --git a/src/lisp.h b/src/lisp.h index d3dcaec..bb25ebd 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4300,13 +4300,6 @@ extern void set_initial_environment (void); extern void syms_of_callproc (void); /* Defined in doc.c. */ -enum - { - /* Named constants for the UTF-8 encodings of U+2018 LEFT SINGLE - QUOTATION MARK and U+2019 RIGHT SINGLE QUOTATION MARK. */ - uLSQM0 = 0xE2, uLSQM1 = 0x80, uLSQM2 = 0x98, - uRSQM0 = 0xE2, uRSQM1 = 0x80, uRSQM2 = 0x99 - }; enum text_quoting_style { /* Use curved single quotes ‘like this’. */ diff --git a/src/lread.c b/src/lread.c index c342218..21b2f9c 100644 --- a/src/lread.c +++ b/src/lread.c @@ -947,7 +947,7 @@ load_warn_old_style_backquotes (Lisp_Object file) { if (!NILP (Vold_style_backquotes)) { - AUTO_STRING (format, "Loading %qs: old-style backquotes detected!"); + AUTO_STRING (format, "Loading `%s': old-style backquotes detected!"); CALLN (Fmessage, format, file); } } diff --git a/src/xdisp.c b/src/xdisp.c index 8be7497..f752936 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -9838,7 +9838,7 @@ vadd_to_log (char const *format, va_list ap) struct gcpro gcpro1, gcpro2; GCPRO2 (args[1], msg); gcpro1.nvars = form_nargs; - msg = Fformat (nargs, args); + msg = Fformat_message (nargs, args); ptrdiff_t len = SBYTES (msg) + 1; USE_SAFE_ALLOCA; diff --git a/src/xfaces.c b/src/xfaces.c index b599e6a..ce300e7 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -797,7 +797,7 @@ load_pixmap (struct frame *f, Lisp_Object name) if (bitmap_id < 0) { - add_to_log ("Invalid or undefined bitmap %qs", name); + add_to_log ("Invalid or undefined bitmap `%s'", name); bitmap_id = 0; } else diff --git a/src/xselect.c b/src/xselect.c index d4d4dc0..3e5778d 100644 --- a/src/xselect.c +++ b/src/xselect.c @@ -2148,7 +2148,7 @@ static Lisp_Object x_clipboard_manager_error_1 (Lisp_Object err) { AUTO_STRING (format, "X clipboard manager error: %s\n\ -If the problem persists, set %qs to nil."); +If the problem persists, set `%s' to nil."); AUTO_STRING (varname, "x-select-enable-clipboard-manager"); CALLN (Fmessage, format, CAR (CDR (err)), varname); return Qnil; commit ef4c2eac6c6e1df8f40efde52d737d911cf2dcf9 Author: Eli Zaretskii Date: Tue Aug 25 20:27:35 2015 +0300 Minor fixes in doc/emacs/search.texi * doc/emacs/search.texi (Basic Isearch): Fix a typo. (Special Isearch): Use @w{} to generate several consecutive spaces with Texinfo 6. (Bug#21345) diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 3562f8a..34d4e8f 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -80,10 +80,10 @@ past the end of the next occurrence of those characters in the buffer. For instance, if you type @kbd{C-s} and then @kbd{F}, that puts the cursor after the first @samp{F} that occurs in the buffer after the -starting point. Then if you then type @kbd{O}, the cursor moves to -just after the first @samp{FO}; the @samp{F} in that @samp{FO} might -not be the first @samp{F} previously found. After another @kbd{O}, -the cursor moves to just after the first @samp{FOO}. +starting point. If you then type @kbd{O}, the cursor moves to just +after the first @samp{FO}; the @samp{F} in that @samp{FO} might not be +the first @samp{F} previously found. After another @kbd{O}, the +cursor moves to just after the first @samp{FOO}. @cindex faces for highlighting search matches @cindex isearch face @@ -227,11 +227,11 @@ special effects. By default, incremental search performs @dfn{lax space matching}: each space, or sequence of spaces, matches any sequence of one or more spaces in the text. Hence, @samp{foo bar} matches @samp{foo bar}, -@samp{foo bar}, @samp{foo bar}, and so on (but not @samp{foobar}). -More precisely, Emacs matches each sequence of space characters in the -search string to a regular expression specified by the variable -@code{search-whitespace-regexp}. For example, to make spaces match -sequences of newlines as well as spaces, set it to +@samp{foo@w{ }bar}, @samp{foo@w{ }bar}, and so on (but not +@samp{foobar}). More precisely, Emacs matches each sequence of space +characters in the search string to a regular expression specified by +the variable @code{search-whitespace-regexp}. For example, to make +spaces match sequences of newlines as well as spaces, set it to @samp{"[[:space:]\n]+"}. To toggle lax space matching, type @kbd{M-s @key{SPC}} commit 46709093bea8d12c0ef4a8f6401be8f5856b466b Author: Michael Albinus Date: Tue Aug 25 16:05:21 2015 +0200 * lisp/net/tramp-sh.el (tramp-awk-encode, tramp-awk-decode) (tramp-awk-coding-test): New defconsts. (tramp-remote-coding-commands): Use them. (tramp-find-inline-encoding): Check for Perl only if necessary. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 3239107..9bd22d2 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -873,6 +873,72 @@ Escape sequence %s is replaced with name of Perl binary.") "Perl program to use for decoding a file. Escape sequence %s is replaced with name of Perl binary.") +(defconst tramp-awk-encode + "od -v -t x1 -A n | busybox awk '\\ +BEGIN { + b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\" + b16 = \"0123456789abcdef\" +} +{ + for (c=1; c<=length($0); c++) { + d=index(b16, substr($0,c,1)) + if (d--) { + for (b=1; b<=4; b++) { + o=o*2+int(d/8); d=(d*2)%%16 + if (++obc==6) { + printf substr(b64,o+1,1) + if (++rc>75) { printf \"\\n\"; rc=0 } + obc=0; o=0 + } + } + } + } +} +END { + if (obc) { + tail=(obc==2) ? \"==\\n\" : \"=\\n\" + while (obc++<6) { o=o*2 } + printf \"%%c\", substr(b64,o+1,1) + } else { + tail=\"\\n\" + } + printf tail +}'" + "Awk program to use for encoding a file. +This string is passed to `format', so percent characters need to be doubled.") + +(defconst tramp-awk-decode + "busybox awk '\\ +BEGIN { + b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\" +} +{ + for (i=1; i<=length($0); i++) { + c=index(b64, substr($0,i,1)) + if(c--) { + for(b=0; b<6; b++) { + o=o*2+int(c/32); c=(c*2)%%64 + if(++obc==8) { + if (o) { + printf \"%%c\", o + } else { + system(\"dd if=/dev/zero bs=1 count=1 2>/dev/null\") + } + obc=0; o=0 + } + } + } + } +}'" + "Awk program to use for decoding a file. +This string is passed to `format', so percent characters need to be doubled.") + +(defconst tramp-awk-coding-test + "test -c /dev/zero && \ +od -v -t x1 -A n Date: Tue Aug 25 06:18:40 2015 -0400 ; Auto-commit of loaddefs files. diff --git a/lisp/dired.el b/lisp/dired.el index 965049b..215906a 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -4398,7 +4398,7 @@ instead. ;;;*** -;;;### (autoloads nil "dired-x" "dired-x.el" "183a6677a0dfc9e853e24b05abda5490") +;;;### (autoloads nil "dired-x" "dired-x.el" "9ded283aad4a1a9dd1a6c62ef35332ec") ;;; Generated autoloads from dired-x.el (autoload 'dired-jump "dired-x" "\ diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index b8c4835..3e97343 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -2597,7 +2597,7 @@ will be inserted before the group at point." ;;; Start of automatically extracted autoloads. -;;;### (autoloads nil "ibuf-ext" "ibuf-ext.el" "442bac528ce7a9a20bb191d0eb08cbd8") +;;;### (autoloads nil "ibuf-ext" "ibuf-ext.el" "65ef908165926cf48da6f43fd01ef50b") ;;; Generated autoloads from ibuf-ext.el (autoload 'ibuffer-auto-mode "ibuf-ext" "\ diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index f1a917d..f95f4fa 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -2932,7 +2932,7 @@ When LEVEL is non-nil, increase section numbers on that level. ;;;*** -;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "2689a4cea701a9d284e0967c313da989") +;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "35c0c8fcf8eebfc4366bf0f78aed7f2f") ;;; Generated autoloads from reftex-ref.el (autoload 'reftex-label-location "reftex-ref" "\ @@ -3046,7 +3046,7 @@ During a selection process, these are the local bindings. ;;;*** -;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "70daa7ce5ba54f2c8d469337f64636c1") +;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "e3514ef292edfce6722c75225456ffa1") ;;; Generated autoloads from reftex-toc.el (autoload 'reftex-toc "reftex-toc" "\ commit 073972b363cea6a60820a60af02cfc4841e828b5 Author: Xue Fuqiao Date: Tue Aug 25 17:21:03 2015 +0800 * doc/lispintro/emacs-lisp-intro.texi (Run a Program): Add some index entries for the special form `quote'. diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index f4e8d93..4406958 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -1240,6 +1240,10 @@ command to do something. (Usually, of course, it is the last of these three things that you really want!) @c use code for the single apostrophe, not samp. +@findex quote +@cindex @code{'} for quoting +@cindex quoting using apostrophe +@cindex apostrophe for quoting The single apostrophe, @code{'}, that I put in front of some of the example lists in preceding sections is called a @dfn{quote}; when it precedes a list, it tells Lisp to do nothing with the list, other than