diff options
Diffstat (limited to 'lisp')
337 files changed, 6831 insertions, 7637 deletions
diff --git a/lisp/ChangeLog.16 b/lisp/ChangeLog.16 index 457c1511af8..bc5267aadba 100644 --- a/lisp/ChangeLog.16 +++ b/lisp/ChangeLog.16 @@ -5030,8 +5030,7 @@ * mouse.el (mouse-yank-primarY): Look for frame-type w32, not system-type windows-nt. - * server.el (server-create-window-system-frame): Look for window - type. + * server.el (server-create-window-system-frame): Look for window type. (server-proces-filter): Only force a window system when windows-nt _and_ w32. Explain why. diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17 index 8984f48882a..a40f8f3d67a 100644 --- a/lisp/ChangeLog.17 +++ b/lisp/ChangeLog.17 @@ -502,7 +502,7 @@ 2015-03-20 Alan Mackenzie <acm@muc.de> - Fix debbugs#20146 + Fix Bug#20146 * font-lock.el (font-lock-extend-jit-lock-region-after-change): Return the calculated values, as per spec. @@ -693,7 +693,7 @@ 2015-03-16 Alan Mackenzie <acm@muc.de> - Edebug: Allow "S" to work during trace mode. Fixes debbugs #20074. + Edebug: Allow "S" to work during trace mode. Fixes Bug#20074. Also display the overlay arrow in go and go-nonstop modes. * emacs-lisp/edebug.el (edebug--display-1): Move the diff --git a/lisp/allout-widgets.el b/lisp/allout-widgets.el index 164cd3192ac..3c71a810bfb 100644 --- a/lisp/allout-widgets.el +++ b/lisp/allout-widgets.el @@ -348,7 +348,7 @@ to `allout-body-modification-handler', and is always reset by images with lists containing the name of the icon directory (as found on the `load-path') and the icon name. -Set this variable to `nil' to empty the cache, and have it replenish from the +Set this variable to nil to empty the cache, and have it replenish from the filesystem.") ;;;_ = allout-widgets-unset-inhibit-read-only (defvar allout-widgets-unset-inhibit-read-only nil diff --git a/lisp/allout.el b/lisp/allout.el index 689bed5efc1..dcdd35eb488 100644 --- a/lisp/allout.el +++ b/lisp/allout.el @@ -322,7 +322,7 @@ With value nil, inhibit any automatic allout-mode activation." "Default allout outline layout specification. This setting specifies the outline exposure to use when -`allout-layout' has the local value `t'. This docstring describes the +`allout-layout' has the local value t. This docstring describes the layout specifications. A list value specifies a default layout for the current buffer, @@ -933,7 +933,7 @@ followed by the equivalent of `(allout-expose-topic 0 : -1 -1 0)'. \(This is the layout used for the allout.el source file.) `allout-default-layout' describes the specification format. -`allout-layout' can additionally have the value `t', in which +`allout-layout' can additionally have the value t, in which case the value of `allout-default-layout' is used.") (make-variable-buffer-local 'allout-layout) ;;;###autoload @@ -6051,8 +6051,8 @@ See `allout-toggle-current-subtree-encryption' for more details." (declare-function epg-decrypt-string "epg" (context cipher)) (declare-function epg-encrypt-string "epg" (context plain recipients &optional sign always-trust)) -(declare-function epg-user-id-string "epg" (user-id)) -(declare-function epg-key-user-id-list "epg" (key)) +(declare-function epg-user-id-string "epg" (user-id) t) +(declare-function epg-key-user-id-list "epg" (key) t) ;;;_ > allout-encrypt-string (text decrypt allout-buffer keymode-cue ;;; &optional rejected) diff --git a/lisp/arc-mode.el b/lisp/arc-mode.el index 063e4ba9dcb..5f2fc8f3804 100644 --- a/lisp/arc-mode.el +++ b/lisp/arc-mode.el @@ -1811,11 +1811,38 @@ This doesn't recover lost files, it just undoes changes in the buffer itself." (defun archive-zip-summarize () (goto-char (- (point-max) (- 22 18))) (search-backward-regexp "[P]K\005\006") - (let ((p (+ (point-min) (archive-l-e (+ (point) 16) 4))) + (let ((p (archive-l-e (+ (point) 16) 4)) (maxlen 8) (totalsize 0) files - visual) + visual + emacs-int-has-32bits) + (when (= p -1) + ;; If the offset of end-of-central-directory is -1, this is a + ;; Zip64 extended ZIP file format, and we need to glean the info + ;; from Zip64 records instead. + ;; + ;; First, find the Zip64 end-of-central-directory locator. + (search-backward "PK\006\007") + ;; Pay attention: the offset of Zip64 end-of-central-directory + ;; is a 64-bit field, so it could overflow the Emacs integer + ;; even on a 64-bit host, let alone 32-bit one. But since we've + ;; already read the zip file into a buffer, and this is a byte + ;; offset into the file we've read, it must be short enough, so + ;; such an overflow can never happen, and we can safely read + ;; these 8 bytes into an Emacs integer. Moreover, on host with + ;; 32-bit Emacs integer we can only read 4 bytes, since they are + ;; stored in little-endian byte order. + (setq emacs-int-has-32bits (<= most-positive-fixnum #x1fffffff)) + (setq p (+ (point-min) + (archive-l-e (+ (point) 8) (if emacs-int-has-32bits 4 8)))) + (goto-char p) + ;; We should be at Zip64 end-of-central-directory record now. + (or (string= "PK\006\006" (buffer-substring p (+ p 4))) + (error "Unrecognized ZIP file format")) + ;; Offset to central directory: + (setq p (+ (point-min) + (archive-l-e (+ p 48) (if emacs-int-has-32bits 4 8))))) (while (string= "PK\001\002" (buffer-substring p (+ p 4))) (let* ((creator (byte-after (+ p 5))) ;; (method (archive-l-e (+ p 10) 2)) diff --git a/lisp/autorevert.el b/lisp/autorevert.el index 357916c6b4d..2ff7c0115f3 100644 --- a/lisp/autorevert.el +++ b/lisp/autorevert.el @@ -1,4 +1,4 @@ -;;; autorevert.el --- revert buffers when files on disk change +;;; autorevert.el --- revert buffers when files on disk change -*- lexical-binding:t -*- ;; Copyright (C) 1997-1999, 2001-2015 Free Software Foundation, Inc. @@ -95,7 +95,7 @@ ;; mode. For example, the following line will activate Auto-Revert ;; Mode in all C mode buffers: ;; -;; (add-hook 'c-mode-hook 'turn-on-auto-revert-mode) +;; (add-hook 'c-mode-hook #'turn-on-auto-revert-mode) ;;; Code: @@ -260,10 +260,9 @@ buffers. CPU usage depends on the version control system." :type 'boolean :version "22.1") -(defvar global-auto-revert-ignore-buffer nil +(defvar-local global-auto-revert-ignore-buffer nil "When non-nil, Global Auto-Revert Mode will not revert this buffer. This variable becomes buffer local when set in any fashion.") -(make-variable-buffer-local 'global-auto-revert-ignore-buffer) (defcustom auto-revert-remote-files nil "If non-nil remote files are also reverted." @@ -315,9 +314,9 @@ the list of old buffers.") "Position of last known end of file.") (add-hook 'find-file-hook - (lambda () - (set (make-local-variable 'auto-revert-tail-pos) - (nth 7 (file-attributes buffer-file-name))))) + (lambda () + (setq-local auto-revert-tail-pos + (nth 7 (file-attributes buffer-file-name))))) (defvar auto-revert-notify-watch-descriptor-hash-list (make-hash-table :test 'equal) @@ -326,15 +325,13 @@ Hash key is a watch descriptor, hash value is a list of buffers which are related to files being watched and carrying the same default directory.") -(defvar auto-revert-notify-watch-descriptor nil +(defvar-local auto-revert-notify-watch-descriptor nil "The file watch descriptor active for the current buffer.") -(make-variable-buffer-local 'auto-revert-notify-watch-descriptor) (put 'auto-revert-notify-watch-descriptor 'permanent-local t) -(defvar auto-revert-notify-modified-p nil +(defvar-local auto-revert-notify-modified-p nil "Non-nil when file has been modified on the file system. This has been reported by a file notification event.") -(make-variable-buffer-local 'auto-revert-notify-modified-p) ;; Functions: @@ -370,7 +367,7 @@ without being changed in the part that is already in the buffer." "Turn on Auto-Revert Mode. This function is designed to be added to hooks, for example: - (add-hook 'c-mode-hook 'turn-on-auto-revert-mode)" + (add-hook 'c-mode-hook #'turn-on-auto-revert-mode)" (auto-revert-mode 1)) @@ -420,8 +417,8 @@ Perform a full revert? ") ;; else we might reappend our own end when we save (add-hook 'before-save-hook (lambda () (auto-revert-tail-mode 0)) nil t) (or (local-variable-p 'auto-revert-tail-pos) ; don't lose prior position - (set (make-local-variable 'auto-revert-tail-pos) - (nth 7 (file-attributes buffer-file-name)))) + (setq-local auto-revert-tail-pos + (nth 7 (file-attributes buffer-file-name)))) ;; let auto-revert-mode set up the mechanism for us if it isn't already (or auto-revert-mode (let ((auto-revert-tail-mode t)) @@ -434,7 +431,7 @@ Perform a full revert? ") "Turn on Auto-Revert Tail mode. This function is designed to be added to hooks, for example: - (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode)" + (add-hook 'my-logfile-mode-hook #'turn-on-auto-revert-tail-mode)" (auto-revert-tail-mode 1)) @@ -495,7 +492,7 @@ will use an up-to-date value of `auto-revert-interval'" (ignore-errors (file-notify-rm-watch auto-revert-notify-watch-descriptor))))) auto-revert-notify-watch-descriptor-hash-list) - (remove-hook 'kill-buffer-hook 'auto-revert-notify-rm-watch)) + (remove-hook 'kill-buffer-hook #'auto-revert-notify-rm-watch)) (setq auto-revert-notify-watch-descriptor nil auto-revert-notify-modified-p nil)) @@ -508,7 +505,7 @@ will use an up-to-date value of `auto-revert-interval'" (file-symlink-p (or buffer-file-name default-directory))) ;; Fallback to file checks. - (set (make-local-variable 'auto-revert-use-notify) nil) + (setq-local auto-revert-use-notify nil) (when (not auto-revert-notify-watch-descriptor) (setq auto-revert-notify-watch-descriptor @@ -530,10 +527,10 @@ will use an up-to-date value of `auto-revert-interval'" (gethash auto-revert-notify-watch-descriptor auto-revert-notify-watch-descriptor-hash-list)) auto-revert-notify-watch-descriptor-hash-list) - (add-hook (make-local-variable 'kill-buffer-hook) - 'auto-revert-notify-rm-watch)) + (add-hook 'kill-buffer-hook + #'auto-revert-notify-rm-watch nil t)) ;; Fallback to file checks. - (set (make-local-variable 'auto-revert-use-notify) nil))))) + (setq-local auto-revert-use-notify nil))))) ;; If we have file notifications, we want to update the auto-revert buffers ;; immediately when a notification occurs. Since file updates can happen very diff --git a/lisp/calc/calc-aent.el b/lisp/calc/calc-aent.el index 23de53e0f0c..cc048ebc223 100644 --- a/lisp/calc/calc-aent.el +++ b/lisp/calc/calc-aent.el @@ -1034,7 +1034,7 @@ in Calc algebraic input.") (defun math-restore-placeholders (x) "Replace placeholders by the proper characters in the symbol x. -This includes `#' for `_' and `'' for `%'. +This includes ‘#’ for ‘_’ and ‘'’ for ‘%’. If the current Calc language does not use placeholders, return nil." (if (or (memq calc-language calc-lang-allow-underscores) (memq calc-language calc-lang-allow-percentsigns)) diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el index 17e5b0fdead..b2e7df1b718 100644 --- a/lisp/calc/calc-help.el +++ b/lisp/calc/calc-help.el @@ -364,23 +364,21 @@ C-w Describe how there is no warranty for Calc." (error "Can't find `%s' in %s" thing where))) (let (Info-history) (Info-goto-node (buffer-substring (match-beginning 1) (match-end 1)))) - (or (let ((case-fold-search nil)) - (or (re-search-forward (format "\\[`%s'\\]\\|(`%s')\\|\\<The[ \n]`%s'" - (or target (regexp-quote thing)) - (or target (regexp-quote thing)) - (or target (regexp-quote thing))) nil t) - (and not-quoted - (let ((case-fold-search t)) - (search-forward (or target thing) nil t))) - (search-forward (format "`%s'" (or target thing)) nil t) - (search-forward (or target thing) nil t))) - (let ((case-fold-search t)) - (or (re-search-forward (format "\\[`%s'\\]\\|(`%s')\\|\\<The[ \n]`%s'" - (or target (regexp-quote thing)) - (or target (regexp-quote thing)) - (or target (regexp-quote thing))) nil t) - (search-forward (format "`%s'" (or target thing)) nil t) - (search-forward (or target thing) nil t)))) + (let* ((string-target (or target thing)) + (quoted (format "['`‘]%s['’]" (regexp-quote string-target))) + (bracketed (format "\\[%s\\]\\|(%s)\\|\\<The[ \n]%s" + quoted quoted quoted))) + (or (let ((case-fold-search nil)) + (or (re-search-forward bracketed nil t) + (and not-quoted + (let ((case-fold-search t)) + (search-forward string-target nil t))) + (re-search-forward quoted nil t) + (search-forward string-target nil t))) + (let ((case-fold-search t)) + (or (re-search-forward bracketed nil t) + (re-search-forward quoted nil t) + (search-forward string-target nil t))))) (beginning-of-line) (message "Found `%s' in %s" thing where))) diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el index 9c5d7184149..60c6fb9782c 100644 --- a/lisp/calc/calc-misc.el +++ b/lisp/calc/calc-misc.el @@ -89,7 +89,7 @@ For use with Embedded mode: N calc-embedded-next. Advance cursor to next known formula in buffer. P calc-embedded-previous. Advance cursor to previous known formula. U calc-embedded-update-formula. Re-evaluate formula at point. - ` calc-embedded-edit. Use calc-edit to edit formula at point. + \\=` calc-embedded-edit. Use calc-edit to edit formula at point. Documentation: I calc-info. Read the Calculator manual in the Emacs Info system. @@ -225,7 +225,7 @@ Calc user interface as before (either C-x * C or C-x * K; initially C-x * C). "Letter keys: SHIFT + Num-eval; More-recn; eXec-kbd-macro; Keep-args" "Other keys: +, -, *, /, ^, \\ (int div), : (frac div)" "Other keys: & (1/x), | (concat), % (modulo), ! (factorial)" - "Other keys: ' (alg-entry), = (eval), ` (edit); M-RET (last-args)" + "Other keys: ' (alg-entry), = (eval), \\=` (edit); M-RET (last-args)" "Other keys: SPC/RET (enter/dup), LFD (over); < > (scroll horiz)" "Other keys: DEL (drop), M-DEL (drop-above); { } (scroll vert)" "Other keys: TAB (swap/roll-dn), M-TAB (roll-up)" diff --git a/lisp/calc/calc-yank.el b/lisp/calc/calc-yank.el index 726a7202a8a..923df5d577f 100644 --- a/lisp/calc/calc-yank.el +++ b/lisp/calc/calc-yank.el @@ -149,7 +149,7 @@ as well as set the contents of the Emacs register REGISTER to TEXT." "Return the CALCVAL portion of the contents of the Calc register REG, unless the TEXT portion doesn't match the contents of the Emacs register REG, in which case either return the contents of the Emacs register (if it is -text) or `nil'." +text) or nil." (let ((cval (cdr (assq reg calc-register-alist))) (val (cdr (assq reg register-alist)))) (if (stringp val) diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 58bbdb81289..52ed5d7eb3d 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -154,6 +154,7 @@ (declare-function math-parse-date "calc-forms" (math-pd-str)) (declare-function math-lessp "calc-ext" (a b)) (declare-function math-compare "calc-ext" (a b)) +(declare-function math-zerop "calc-misc" (a)) (declare-function calc-embedded-finish-command "calc-embed" ()) (declare-function calc-embedded-select-buffer "calc-embed" ()) (declare-function calc-embedded-mode-line-change "calc-embed" ()) @@ -2033,7 +2034,7 @@ See calc-keypad for details." ;; (YEAR MONTH DAY math-date-from-gregorian-dt(YEAR MONTH DAY)) for speed. (defcustom calc-gregorian-switch nil "The first day the Gregorian calendar is used by Calc's date forms. -This is `nil' (the default) if the Gregorian calendar is the only one used. +This is nil (the default) if the Gregorian calendar is the only one used. Otherwise, it should be a list `(YEAR MONTH DAY)' when Calc begins to use the Gregorian calendar; Calc will use the Julian calendar for earlier dates. The dates in which different regions of the world began to use the diff --git a/lisp/calculator.el b/lisp/calculator.el index 0aef07b1750..4027887fb07 100644 --- a/lisp/calculator.el +++ b/lisp/calculator.el @@ -1203,10 +1203,10 @@ arguments." ;; f is an expression (let ((TX (and X (calculator-truncate X))) (TY (and Y (calculator-truncate Y))) - (DX (if (and X calculator-deg) (/ (* X pi) 180) X)) + (DX (if (and X calculator-deg) (degrees-to-radians X) X)) (L calculator-saved-list) (fF `(calculator-funcall ',f x y)) - (fD `(if calculator-deg (/ (* x 180) float-pi) x))) + (fD `(if calculator-deg (* radians-to-degrees x) x))) (eval `(cl-flet ((F (&optional x y) ,fF) (D (x) ,fD)) (let ((X ,X) (Y ,Y) (DX ,DX) (TX ,TX) (TY ,TY) (L ',L)) ,f)) diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index e42a0100696..1612f48a019 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -2182,7 +2182,7 @@ in `calendar-month-name-array'. These abbreviations are used in the calendar menu entries, and can also be used in the diary file. Do not include a trailing `.' in the strings specified in this variable, though you may use such in the diary file. By -default, each string is the first ``calendar-abbrev-length' +default, each string is the first `calendar-abbrev-length' characters of the corresponding full name." :group 'calendar :set-after '(calendar-abbrev-length calendar-month-name-array) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 29364b55b6c..d5bd26a9277 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -104,9 +104,9 @@ are: `string', `symbol', `int', `tnil', `stringtnil.'" (choice (const string :tag "A string") (const symbol :tag "A symbol") (const int :tag "An integer") - (const tnil :tag "`t' or `nil'") + (const tnil :tag "t or nil") (const stringtnil - :tag "A string, `t', or `nil'")))) + :tag "A string, t, or nil")))) :group 'diary) (defcustom diary-glob-file-regexp-prefix "^\\#" @@ -1671,7 +1671,7 @@ DAY MONTH YEAR in the European style). %%(diary-date MONTH DAY YEAR &optional MARK) text Entry applies if date is MONTH, DAY, YEAR. DAY, MONTH, and YEAR can - be a list of integers, `t' (meaning all values), or an integer. + be a list of integers, t (meaning all values), or an integer. %%(diary-float MONTH DAYNAME N &optional DAY MARK) text Entry will appear on the Nth DAYNAME after/before MONTH DAY. @@ -1679,7 +1679,7 @@ DAY MONTH YEAR in the European style). If N>0, use the Nth DAYNAME after MONTH DAY. If N<0, use the Nth DAYNAME before MONTH DAY. DAY defaults to 1 if N>0, and MONTH's last day otherwise. - MONTH can be a list of months, a single month, or `t' to + MONTH can be a list of months, a single month, or t to specify all months. %%(diary-block M1 D1 Y1 M2 D2 Y2 &optional MARK) text @@ -1814,7 +1814,7 @@ form used internally by the calendar and diary." (defun diary-date (month day year &optional mark) "Specific date(s) diary entry. Entry applies if date is MONTH, DAY, YEAR. Each parameter can be a -list of integers, `t' (meaning all values), or an integer. The order +list of integers, t (meaning all values), or an integer. The order of the input parameters changes according to `calendar-date-style' \(e.g. to DAY MONTH YEAR in the European style). @@ -1863,7 +1863,7 @@ DAYNAME=0 means Sunday, DAYNAME=1 means Monday, and so on. If N>0, use the Nth DAYNAME after MONTH DAY. If N<0, use the Nth DAYNAME before MONTH DAY. DAY defaults to 1 if N>0, and MONTH's last day otherwise. -MONTH can be a list of months, an integer, or `t' (meaning all months). +MONTH can be a list of months, an integer, or t (meaning all months). Optional MARK specifies a face or single-character string to use when highlighting the day in the calendar." ;; This is messy because the diary entry may apply, but the date on which it diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index 25a24eeffeb..a2f9d58585a 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el @@ -346,7 +346,7 @@ If SUNRISE-FLAG is non-nil, only calculate longitude and inclination." (solar-cosine-degrees (* 2 l))) (* -0.5 y y (solar-sin-degrees (* 4 l))) (* -1.25 ecc ecc (solar-sin-degrees (* 2 m))))) - 3.1415926535)))) + float-pi)))) (list app i time-eq nut))) (defun solar-ephemeris-correction (year) diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index dcc960fb9bf..7369ec28c29 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -2606,7 +2606,8 @@ meaning to raise or lower the item's priority by one." ;; separator. (when (looking-back (concat "^" (regexp-quote todo-category-done) - "\n")) + "\n") + (line-beginning-position 0)) (todo-backward-item)))) (todo-insert-with-overlays item) ;; If item was marked, restore the mark. @@ -4231,7 +4232,8 @@ the values of FILTER and FILE-LIST." (if (and (eobp) (looking-back (concat (regexp-quote todo-done-string) - "\n"))) + "\n") + (line-beginning-position 0))) (delete-region (point) (progn (forward-line -2) (point)))))) @@ -4648,7 +4650,7 @@ name in `todo-directory'. See also the documentation string of ;; If the item ends with a non-comment parenthesis not ;; followed by a period, we lose (but we inherit that ;; problem from the legacy code). - (when (looking-back "(\\(.*\\)) ") + (when (looking-back "(\\(.*\\)) " (line-beginning-position)) (setq comment (match-string 1)) (replace-match "") (insert "[" todo-comment-string ": " comment "]")) @@ -5342,7 +5344,8 @@ of each other." (looking-at todo-done-string-start) (looking-back (concat "^" (regexp-quote todo-category-done) - "\n"))) + "\n") + (line-beginning-position 0))) (setq num 1 done t)) (setq prefix (concat (propertize @@ -5440,7 +5443,7 @@ dynamically create item insertion commands.") The list consists of item insertion parameters that can be passed as insertion command arguments in fixed positions. If a position in the list is not occupied by the corresponding parameter, it is -occupied by `nil'." +occupied by nil." (let* ((arg (list (car todo-insert-item--args))) (args (nconc (cdr todo-insert-item--args) (list (car (todo-insert-item--argsleft diff --git a/lisp/cedet/ede.el b/lisp/cedet/ede.el index 074fda97862..43660a8bb71 100644 --- a/lisp/cedet/ede.el +++ b/lisp/cedet/ede.el @@ -339,7 +339,7 @@ Argument MENU-DEF is the menu definition to use." (progn (while (and class (slot-exists-p class 'menu)) ;;(message "Looking at class %S" class) - (setq menu (append menu (oref class menu)) + (setq menu (append menu (oref-default class menu)) class (eieio-class-parent class)) (if (listp class) (setq class (car class)))) (append diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el index 7e8df6b89af..482632f294a 100644 --- a/lisp/cedet/ede/auto.el +++ b/lisp/cedet/ede/auto.el @@ -86,7 +86,7 @@ into memory.") ;; If the thing to match is stored in a config file. ((stringp fc) (when (file-exists-p fc) - (let ((matchstring + (let ((matchstring (if (slot-boundp dirmatch 'configdatastash) (oref dirmatch configdatastash) nil))) @@ -123,7 +123,7 @@ into memory.") (not (= (match-end 0) (length file)))) ) ))) - + ;; Add new matches here ;; ((stringp somenewslot ...) ;; ) @@ -155,9 +155,9 @@ into memory.") Specifying this matcher object will allow EDE to perform a complex check without loading the project. -NOTE: If you use dirmatch, you may need to set :root-only to `nil'. +NOTE: If you use dirmatch, you may need to set :root-only to nil. While it may be a root based project, all subdirs will happen to return -true for the dirmatch, so for scanning purposes, set it to `nil'.") +true for the dirmatch, so for scanning purposes, set it to nil.") (proj-root :initarg :proj-root :type function :documentation "A function symbol to call for the project root. @@ -280,7 +280,7 @@ added. Possible values are: (if f (and f (file-exists-p f)) (let ((dirmatch (oref this proj-root-dirmatch))) - (cond + (cond ((stringp dirmatch) nil) ; <- do something here - maybe obsolete the option? ((ede-project-autoload-dirmatch-p dirmatch) @@ -312,7 +312,7 @@ NOTE: Do not call this - it should only be called from `ede-load-project-file'." -;;; -------- Old Methods +;;; -------- Old Methods ;; See if we can do without them. ;; @FIXME - delete from loaddefs to remove this. diff --git a/lisp/cedet/ede/config.el b/lisp/cedet/ede/config.el index f91a6c1751c..f5578a21883 100644 --- a/lisp/cedet/ede/config.el +++ b/lisp/cedet/ede/config.el @@ -268,6 +268,8 @@ programs from a project.") (cmdsym (intern-soft (car cmdsplit)))) (call-interactively cmdsym t))) +(declare-function ede-shell-run-something "ede/shell") + (cl-defmethod project-run-target ((target ede-target-with-config-program)) "Run the current project derived from TARGET." (let* ((proj (ede-target-parent target)) @@ -358,8 +360,14 @@ parsed again.")) This target brings in methods used by Semantic to query the preprocessor map, and include paths.") +(declare-function semanticdb-file-table-object "semantic/db" + (file &optional dontload)) +(declare-function semanticdb-needs-refresh-p "semantic/db" (arg &rest args)) +(declare-function semanticdb-refresh-table "semantic/db" (arg &rest args)) + (cl-defmethod ede-preprocessor-map ((this ede-target-with-config-c)) "Get the pre-processor map for some generic C code." + (require 'semantic/sb) (let* ((proj (ede-target-parent this)) (root (ede-project-root proj)) (config (ede-config-get-configuration proj)) diff --git a/lisp/cedet/ede/files.el b/lisp/cedet/ede/files.el index 1922337feb0..4ba823adeee 100644 --- a/lisp/cedet/ede/files.el +++ b/lisp/cedet/ede/files.el @@ -41,7 +41,7 @@ (declare-function ede-locate-flush-hash "ede/locate") (defvar ede--disable-inode nil - "Set to 't' to simulate systems w/out inode support.") + "Set to t to simulate systems w/out inode support.") ;;; Code: ;;;###autoload diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el index 7e1425f1318..9e6fc978376 100644 --- a/lisp/cedet/ede/generic.el +++ b/lisp/cedet/ede/generic.el @@ -230,7 +230,7 @@ If one doesn't exist, create a new one for this directory." (when ext (dolist (C classes) (let* ((classsym (intern (car C))) - (extreg (oref classsym extension))) + (extreg (oref-default classsym extension))) (when (and (not (string= extreg "")) (string-match (concat "\\`\\(?:" extreg "\\)\\'") ext)) (setq cls classsym))))) diff --git a/lisp/cedet/ede/locate.el b/lisp/cedet/ede/locate.el index 2ff83418f78..a076c46513c 100644 --- a/lisp/cedet/ede/locate.el +++ b/lisp/cedet/ede/locate.el @@ -353,7 +353,7 @@ that created this EDE locate object." (cl-defmethod ede-locate-create/update-root-database ((loc (subclass ede-locate-cscope)) root) - "Create or update the GNU Global database for the current project." + "Create or update the Cscope database for the current project." (require 'cedet-cscope) (cedet-cscope-create/update-database root)) diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el index 3c176aeaf05..35363337aee 100644 --- a/lisp/cedet/mode-local.el +++ b/lisp/cedet/mode-local.el @@ -598,15 +598,16 @@ PROMPT, INITIAL, HIST, and DEFAULT are the same as for `completing-read'." (defun overload-docstring-extension (overload) "Return the doc string that augments the description of OVERLOAD." (let ((doc "\n\This function can be overloaded\ - with `define-mode-local-override'.") + with ‘define-mode-local-override’.") (sym (overload-obsoleted-by overload))) (when sym - (setq doc (format "%s\nIt has made the overload `%s' obsolete since %s." + (setq doc (format "%s\nIt has made the overload ‘%s’ obsolete since %s." doc sym (get sym 'overload-obsoleted-since)))) (setq sym (overload-that-obsolete overload)) (when sym - (setq doc (format "%s\nThis overload is obsolete since %s;\nUse `%s' instead." - doc (get overload 'overload-obsoleted-since) sym))) + (setq doc (format + "%s\nThis overload is obsolete since %s;\nuse ‘%s’ instead." + doc (get overload 'overload-obsoleted-since) sym))) doc)) (defun mode-local-augment-function-help (symbol) @@ -629,9 +630,9 @@ SYMBOL is a function that can be overridden." (defun mode-local-print-binding (symbol) "Print the SYMBOL binding." (let ((value (symbol-value symbol))) - (princ (format "\n `%s' value is\n " symbol)) + (princ (format "\n ‘%s’ value is\n " symbol)) (if (and value (symbolp value)) - (princ (format "`%s'" value)) + (princ (format "‘%s’" value)) (let ((pt (point))) (pp value) (save-excursion @@ -689,7 +690,7 @@ SYMBOL is a function that can be overridden." ) ((symbolp buffer-or-mode) (setq mode buffer-or-mode) - (princ (format "`%s'\n" buffer-or-mode)) + (princ (format "‘%s’\n" buffer-or-mode)) ) ((signal 'wrong-type-argument (list 'buffer-or-mode buffer-or-mode)))) @@ -699,7 +700,7 @@ SYMBOL is a function that can be overridden." (while mode (setq table (get mode 'mode-local-symbol-table)) (when table - (princ (format "\n- From `%s'\n" mode)) + (princ (format "\n- From ‘%s’\n" mode)) (mode-local-print-bindings table)) (setq mode (get-mode-local-parent mode))))) diff --git a/lisp/cedet/pulse.el b/lisp/cedet/pulse.el index 89d44c20a6f..39ba13c33df 100644 --- a/lisp/cedet/pulse.el +++ b/lisp/cedet/pulse.el @@ -121,7 +121,7 @@ http://www.emacswiki.org/cgi-bin/wiki/hexrgb.el" :group 'pulse :type 'number) (defcustom pulse-delay .03 - "Delay between face lightening iterations, as used by `sit-for'." + "Delay between face lightening iterations." :group 'pulse :type 'number) @@ -133,7 +133,8 @@ Return t if there is more drift to do, nil if completed." (let* ((frame (color-values (face-background 'default))) (start (color-values (face-background (get 'pulse-highlight-face - :startface)))) + :startface) + nil t))) (frac (list (/ (- (nth 0 frame) (nth 0 start)) pulse-iterations) (/ (- (nth 1 frame) (nth 1 start)) pulse-iterations) (/ (- (nth 2 frame) (nth 2 start)) pulse-iterations))) @@ -154,35 +155,28 @@ Return t if there is more drift to do, nil if completed." "Reset the pulse highlighting FACE." (set-face-background 'pulse-highlight-face (if face - (face-background face) + (face-background face nil t) (face-background 'pulse-highlight-start-face) )) (put 'pulse-highlight-face :startface (or face 'pulse-highlight-start-face)) (put 'pulse-highlight-face :iteration 0)) -(defun pulse (&optional face) - "Pulse the colors on our highlight face. -If optional FACE is provided, reset the face to FACE color, -instead of `pulse-highlight-start-face'. -Be sure to call `pulse-reset-face' after calling pulse." - (unwind-protect - (progn - (pulse-reset-face face) - (while (and (pulse-lighten-highlight) - (sit-for pulse-delay)) - nil)))) - ;;; Convenience Functions ;; (defvar pulse-momentary-overlay nil "The current pulsing overlay.") +(defvar pulse-momentary-timer nil + "The current pulsing timer.") + (defun pulse-momentary-highlight-overlay (o &optional face) "Pulse the overlay O, unhighlighting before next command. Optional argument FACE specifies the face to do the highlighting." + ;; We don't support simultaneous highlightings. + (pulse-momentary-unhighlight) (overlay-put o 'original-face (overlay-get o 'face)) - (add-to-list 'pulse-momentary-overlay o) + (setq pulse-momentary-overlay o) (if (eq pulse-flag 'never) nil (if (or (not pulse-flag) (not (pulse-available-p))) @@ -191,39 +185,46 @@ Optional argument FACE specifies the face to do the highlighting." (overlay-put o 'face (or face 'pulse-highlight-start-face)) (add-hook 'pre-command-hook 'pulse-momentary-unhighlight)) - ;; pulse it. - (unwind-protect - (progn - (overlay-put o 'face 'pulse-highlight-face) - ;; The pulse function puts FACE onto 'pulse-highlight-face. - ;; Thus above we put our face on the overlay, but pulse - ;; with a reference face needed for the color. - (pulse face)) - (pulse-momentary-unhighlight))))) + ;; Pulse it. + (overlay-put o 'face 'pulse-highlight-face) + ;; The pulse function puts FACE onto 'pulse-highlight-face. + ;; Thus above we put our face on the overlay, but pulse + ;; with a reference face needed for the color. + (pulse-reset-face face) + (setq pulse-momentary-timer + (run-with-timer 0 pulse-delay #'pulse-tick + (time-add (current-time) + (* pulse-delay pulse-iterations))))))) + +(defun pulse-tick (stop-time) + (if (time-less-p (current-time) stop-time) + (pulse-lighten-highlight) + (pulse-momentary-unhighlight))) (defun pulse-momentary-unhighlight () "Unhighlight a line recently highlighted." - ;; If someone passes in an overlay, then pulse-momentary-overlay - ;; will still be nil, and won't need modifying. (when pulse-momentary-overlay ;; clear the starting face - (mapc - (lambda (ol) - (overlay-put ol 'face (overlay-get ol 'original-face)) - (overlay-put ol 'original-face nil) - ;; Clear the overlay if it needs deleting. - (when (overlay-get ol 'pulse-delete) (delete-overlay ol))) - pulse-momentary-overlay) + (let ((ol pulse-momentary-overlay)) + (overlay-put ol 'face (overlay-get ol 'original-face)) + (overlay-put ol 'original-face nil) + ;; Clear the overlay if it needs deleting. + (when (overlay-get ol 'pulse-delete) (delete-overlay ol))) ;; Clear the variable. - (setq pulse-momentary-overlay nil)) + (setq pulse-momentary-overlay nil) + + ;; Reset the pulsing face. + (pulse-reset-face)) - ;; Reset the pulsing face. - (pulse-reset-face) + ;; Cancel the timer. + (when pulse-momentary-timer + (cancel-timer pulse-momentary-timer)) ;; Remove this hook. (remove-hook 'pre-command-hook 'pulse-momentary-unhighlight)) +;;;###autoload (defun pulse-momentary-highlight-one-line (point &optional face) "Highlight the line around POINT, unhighlighting before next command. Optional argument FACE specifies the face to do the highlighting." @@ -237,6 +238,7 @@ Optional argument FACE specifies the face to do the highlighting." (point)))) (pulse-momentary-highlight-region start end face)))) +;;;###autoload (defun pulse-momentary-highlight-region (start end &optional face) "Highlight between START and END, unhighlighting before next command. Optional argument FACE specifies the face to do the highlighting." diff --git a/lisp/cedet/semantic/bovine/c.el b/lisp/cedet/semantic/bovine/c.el index aa93e246cc8..e86f09c114d 100644 --- a/lisp/cedet/semantic/bovine/c.el +++ b/lisp/cedet/semantic/bovine/c.el @@ -498,12 +498,12 @@ code to parse." (parsedtokelist (condition-case nil ;; This is imperfect, so always assume on error. - (hif-canonicalize) + (hif-canonicalize hif-ifx-regexp) (error nil)))) (let ((eval-form (condition-case err (eval parsedtokelist) - (error + (error (semantic-push-parser-warning (format "Hideif forms produced an error. Assuming false.\n%S" err) (point) (1+ (point))) diff --git a/lisp/cedet/semantic/bovine/gcc.el b/lisp/cedet/semantic/bovine/gcc.el index 19d149112c6..fe7a14451f5 100644 --- a/lisp/cedet/semantic/bovine/gcc.el +++ b/lisp/cedet/semantic/bovine/gcc.el @@ -86,13 +86,11 @@ to give to the program." (let ((chars (append line nil))) (when (= 32 (nth 0 chars)) (let ((path (substring line 1))) - (when (file-accessible-directory-p path) - (when (if (memq system-type '(windows-nt)) - (/= ?/ (nth 1 chars)) - (= ?/ (nth 1 chars))) - (add-to-list 'inc-path - (expand-file-name (substring line 1)) - t))))))))) + (when (and (file-accessible-directory-p path) + (file-name-absolute-p path)) + (add-to-list 'inc-path + (expand-file-name path) + t)))))))) inc-path)) @@ -166,8 +164,9 @@ It should also include other symbols GCC was compiled with.") (host (or (cdr (assoc 'target fields)) (cdr (assoc '--target fields)) (cdr (assoc '--host fields)))) - (prefix (cdr (assoc '--prefix fields))) + ;; (prefix (cdr (assoc '--prefix fields))) ;; gcc output supplied paths + ;; FIXME: Where are `c-include-path' and `c++-include-path' used? (c-include-path (semantic-gcc-get-include-paths "c")) (c++-include-path (semantic-gcc-get-include-paths "c++")) (gcc-exe (locate-file "gcc" exec-path exec-suffixes 'executable)) diff --git a/lisp/cedet/semantic/db-el.el b/lisp/cedet/semantic/db-el.el index b20a756f6b7..432f638475a 100644 --- a/lisp/cedet/semantic/db-el.el +++ b/lisp/cedet/semantic/db-el.el @@ -223,11 +223,11 @@ TOKTYPE is a hint to the type of tag desired." (symbol-name sym) "class" (semantic-elisp-desymbolify - (let ((class (find-class sym))) - (if (fboundp 'eieio-slot-descriptor-name) - (mapcar #'eieio-slot-descriptor-name - (eieio-class-slots class)) - (eieio--class-public-a class)))) + (let ((class (find-class sym))) + (if (fboundp 'eieio--class-public-a) ; Emacs < 25.1 + (eieio--class-public-a class) + (mapcar #'eieio-slot-descriptor-name + (eieio-class-slots class))))) (semantic-elisp-desymbolify (eieio-class-parents sym)) ;; parents )) ((not toktype) diff --git a/lisp/cedet/semantic/grammar-wy.el b/lisp/cedet/semantic/grammar-wy.el index fba8adfcd75..4b59e17f1e0 100644 --- a/lisp/cedet/semantic/grammar-wy.el +++ b/lisp/cedet/semantic/grammar-wy.el @@ -387,12 +387,12 @@ (let ((s $1)) (if - (string-match "^{[
\n ]*" s) + (string-match "^{[\r\n\t ]*" s) (setq s (substring s (match-end 0)))) (if - (string-match "[
\n ]*}$" s) + (string-match "[\r\n\t ]*}$" s) (setq s (substring s 0 (match-beginning 0)))) diff --git a/lisp/cedet/semantic/grammar.el b/lisp/cedet/semantic/grammar.el index 7a92a12ed53..fc7e9e61a16 100644 --- a/lisp/cedet/semantic/grammar.el +++ b/lisp/cedet/semantic/grammar.el @@ -628,39 +628,38 @@ The symbols in the list are local variables in t) (match-string 0)))) +(defun semantic-grammar--template-expand (template env) + (mapconcat (lambda (S) + (if (stringp S) S + (let ((x (assq S env))) + (cond + (x (cdr x)) + ((symbolp S) (symbol-value S)))))) + template "")) + (defun semantic-grammar-header () "Return text of a generated standard header." - (let ((file (semantic-grammar-buffer-file + (semantic-grammar--template-expand + semantic-grammar-header-template + `((file . ,(semantic-grammar-buffer-file semantic--grammar-output-buffer)) - (gram (semantic-grammar-buffer-file)) - (date (format-time-string "%Y-%m-%d %T%z")) - (vcid (concat "$" "Id" "$")) ;; Avoid expansion - ;; Try to get the copyright from the input grammar, or - ;; generate a new one if not found. - (copy (or (semantic-grammar-copyright-line) + (gram . ,(semantic-grammar-buffer-file)) + (date . ,(format-time-string "%Y-%m-%d %T%z")) + (vcid . ,(concat "$" "Id" "$")) ;; Avoid expansion + ;; Try to get the copyright from the input grammar, or + ;; generate a new one if not found. + (copy . ,(or (semantic-grammar-copyright-line) (concat (format-time-string ";; Copyright (C) %Y ") - user-full-name))) - (out "")) - (dolist (S semantic-grammar-header-template) - (cond ((stringp S) - (setq out (concat out S))) - ((symbolp S) - (setq out (concat out (symbol-value S)))))) - out)) + user-full-name)))))) (defun semantic-grammar-footer () "Return text of a generated standard footer." - (let* ((file (semantic-grammar-buffer-file - semantic--grammar-output-buffer)) - (libr (or semantic--grammar-provide - semantic--grammar-package)) - (out "")) - (dolist (S semantic-grammar-footer-template) - (cond ((stringp S) - (setq out (concat out S))) - ((symbolp S) - (setq out (concat out (symbol-value S)))))) - out)) + (semantic-grammar--template-expand + semantic-grammar-footer-template + `((file . ,(semantic-grammar-buffer-file + semantic--grammar-output-buffer)) + (libr . ,(or semantic--grammar-provide + semantic--grammar-package))))) (defun semantic-grammar-token-data () "Return the string value of the table of lexical tokens." @@ -714,7 +713,7 @@ Block definitions are read from the current table of lexical types." (let* ((blocks (cdr (semantic-lex-type-value "block" t))) (open-delims (cdr (semantic-lex-type-value "open-paren" t))) (close-delims (cdr (semantic-lex-type-value "close-paren" t))) - olist clist block-spec delim-spec open-spec close-spec) + olist clist delim-spec open-spec close-spec) (dolist (block-spec blocks) (setq delim-spec (semantic-grammar--lex-delim-spec block-spec) open-spec (assq (car delim-spec) open-delims) @@ -818,7 +817,7 @@ Block definitions are read from the current table of lexical types." ;;; Generation of the grammar support file. ;; -(defcustom semantic-grammar-file-regexp "\\.[wb]y$" +(defcustom semantic-grammar-file-regexp "\\.[wb]y\\'" "Regexp which matches grammar source files." :group 'semantic :type 'regexp) @@ -1073,7 +1072,7 @@ See also the variable `semantic-grammar-file-regexp'." (defvar semantic--grammar-macros-regexp-2 nil) (make-variable-buffer-local 'semantic--grammar-macros-regexp-2) -(defun semantic--grammar-clear-macros-regexp-2 (&rest ignore) +(defun semantic--grammar-clear-macros-regexp-2 (&rest _) "Clear the cached regexp that match macros local in this grammar. IGNORE arguments. Added to `before-change-functions' hooks to be run before each text @@ -1659,21 +1658,17 @@ Select the buffer containing the tag's definition, and move point there." ) "Association of syntax elements, and the corresponding help.") -(declare-function eldoc-function-argstring "eldoc") -(declare-function eldoc-docstring-format-sym-doc "eldoc") -(declare-function eldoc-last-data-store "eldoc") -(declare-function eldoc-get-fnsym-args-string "eldoc") -(declare-function eldoc-get-var-docstring "eldoc") - (defvar semantic-grammar-eldoc-last-data (cons nil nil)) (defun semantic-grammar-eldoc-get-macro-docstring (macro expander) "Return a one-line docstring for the given grammar MACRO. EXPANDER is the name of the function that expands MACRO." (require 'eldoc) - (if (eq expander (car semantic-grammar-eldoc-last-data)) - (cdr semantic-grammar-eldoc-last-data) - (let ((doc (help-split-fundoc (documentation expander t) expander))) + (cond + ((eq expander (car semantic-grammar-eldoc-last-data)) + (cdr semantic-grammar-eldoc-last-data)) + ((fboundp 'eldoc-function-argstring) ;; Emacs<25 + (let* ((doc (help-split-fundoc (documentation expander t) expander))) (cond (doc (setq doc (car doc)) @@ -1686,7 +1681,16 @@ EXPANDER is the name of the function that expands MACRO." (eldoc-docstring-format-sym-doc macro (format "==> %s %s" expander doc) 'default)) (setq semantic-grammar-eldoc-last-data (cons expander doc))) - doc))) + doc)) + ((fboundp 'elisp-get-fnsym-args-string) ;; Emacs≥25 + (elisp-get-fnsym-args-string + expander nil + (concat (propertize (symbol-name macro) + 'face 'font-lock-keyword-face) + " ==> " + (propertize (symbol-name macro) + 'face 'font-lock-function-name-face) + ": "))))) (define-mode-local-override semantic-idle-summary-current-symbol-info semantic-grammar-mode () @@ -1717,10 +1721,14 @@ Otherwise return nil." (setq val (semantic-grammar-eldoc-get-macro-docstring elt val))) ;; Function ((and elt (fboundp elt)) - (setq val (eldoc-get-fnsym-args-string elt))) + (setq val (if (fboundp 'eldoc-get-fnsym-args-string) + (eldoc-get-fnsym-args-string elt) + (elisp-get-fnsym-args-string elt)))) ;; Variable ((and elt (boundp elt)) - (setq val (eldoc-get-var-docstring elt))) + (setq val (if (fboundp 'eldoc-get-var-docstring) + (eldoc-get-var-docstring elt) + (elisp-get-var-docstring elt)))) (t nil))) (or val (semantic-idle-summary-current-symbol-info-default)))) diff --git a/lisp/cedet/semantic/mru-bookmark.el b/lisp/cedet/semantic/mru-bookmark.el index b75408f6a9d..b2a2c8c7619 100644 --- a/lisp/cedet/semantic/mru-bookmark.el +++ b/lisp/cedet/semantic/mru-bookmark.el @@ -207,7 +207,7 @@ The resulting bookmark is then sorted within the ring." ))) (defun semantic-mrub-cache-flush-fcn () - "Function called in the `semantic-before-toplevel-cache-flush-hook`. + "Function called in the `semantic-before-toplevel-cache-flush-hook'. Cause tags in the ring to become unlinked." (let* ((ring (oref semantic-mru-bookmark-ring ring)) (len (ring-length ring)) diff --git a/lisp/cedet/semantic/symref.el b/lisp/cedet/semantic/symref.el index 10293d9496c..ca5dd7dd073 100644 --- a/lisp/cedet/semantic/symref.el +++ b/lisp/cedet/semantic/symref.el @@ -351,7 +351,7 @@ until the next command is executed." (setq semantic-symref-recently-opened-buffers nil) (remove-hook 'post-command-hook 'semantic-symref-cleanup-recent-buffers-fcn) ) - + (cl-defmethod semantic-symref-result-get-tags ((result semantic-symref-result) &optional open-buffers) "Get the list of tags from the symref result RESULT. @@ -472,8 +472,12 @@ buffers that were opened." (goto-char (point-min)) (forward-line (1- line)) - ;; Search forward for the matching text - (when (re-search-forward (regexp-quote searchtxt) + ;; Search forward for the matching text. + ;; FIXME: This still fails if the regexp uses something specific + ;; to the extended syntax, like grouping. + (when (re-search-forward (if (memq searchtype '(regexp tagregexp)) + searchtxt + (regexp-quote searchtxt)) (point-at-eol) t) (goto-char (match-beginning 0)) @@ -508,7 +512,7 @@ buffers that were opened." (searchtype :initarg :searchtype :type symbol :documentation "The type of search to do. -Values could be `symbol, `regexp, 'tagname, or 'completion.") +Values could be 'symbol, 'regexp, 'tagname, or 'completion.") (searchscope :initarg :searchscope :type symbol :documentation diff --git a/lisp/cedet/semantic/symref/grep.el b/lisp/cedet/semantic/symref/grep.el index 981dab8a8b5..cea6d4f07cd 100644 --- a/lisp/cedet/semantic/symref/grep.el +++ b/lisp/cedet/semantic/symref/grep.el @@ -46,9 +46,11 @@ and those hits returned.") '((c-mode "*.[ch]") (c++-mode "*.[chCH]" "*.[ch]pp" "*.cc" "*.hh") (html-mode "*.s?html" "*.php") + (ruby-mode "*.r[bu]" "*.rake" "*.gemspec" "*.erb" "*.haml" + "Rakefile" "Thorfile" "Capfile" "Guardfile" "Vagrantfile") ) - "List of major modes and file extension pattern regexp. -See find -regex man page for format.") + "List of major modes and file extension pattern. +See find -name man page for format.") (defun semantic-symref-derive-find-filepatterns (&optional mode) "Derive a list of file patterns for the current buffer. @@ -85,6 +87,9 @@ Optional argument MODE specifies the `major-mode' to test." (error "Customize `semantic-symref-filepattern-alist' for %s" major-mode)) ))) +(defvar grepflags) +(defvar greppattern) + (defvar semantic-symref-grep-expand-keywords (condition-case nil (let* ((kw (copy-alist grep-expand-keywords)) @@ -96,7 +101,7 @@ Optional argument MODE specifies the `major-mode' to test." (error nil)) "Grep expand keywords used when expanding templates for symref.") -(defun semantic-symref-grep-use-template (rootdir filepattern grepflags greppattern) +(defun semantic-symref-grep-use-template (rootdir filepattern flags pattern) "Use the grep template expand feature to create a grep command. ROOTDIR is the root location to run the `find' from. FILEPATTERN is a string representing find flags for searching file patterns. @@ -104,18 +109,29 @@ GREPFLAGS are flags passed to grep, such as -n or -l. GREPPATTERN is the pattern used by grep." ;; We have grep-compute-defaults. Let's use it. (grep-compute-defaults) - (let* ((grep-expand-keywords semantic-symref-grep-expand-keywords) - (cmd (grep-expand-template grep-find-template - greppattern - filepattern - rootdir))) - ;; For some reason, my default has no <D> in it. + (let* ((grepflags flags) + (greppattern pattern) + (grep-expand-keywords semantic-symref-grep-expand-keywords) + (cmd (grep-expand-template + (if (memq system-type '(windows-nt ms-dos)) + ;; grep-find uses '--color=always' on MS-Windows + ;; because it wants the colorized output, to show + ;; it to the user. By contrast, here we don't show + ;; the output, and the SGR escapes get in the way + ;; of parsing the output. + (replace-regexp-in-string "--color=always" "" + grep-find-template t t) + grep-find-template) + greppattern + filepattern + rootdir))) + ;; http://debbugs.gnu.org/20719 (when (string-match "find \\(\\.\\)" cmd) (setq cmd (replace-match rootdir t t cmd 1))) ;;(message "New command: %s" cmd) cmd)) -(defcustom semantic-symref-grep-shell "sh" +(defcustom semantic-symref-grep-shell shell-file-name "The shell command to use for executing find/grep. This shell should support pipe redirect syntax." :group 'semantic @@ -125,22 +141,28 @@ This shell should support pipe redirect syntax." "Perform a search with Grep." ;; Grep doesn't support some types of searches. (let ((st (oref tool :searchtype))) - (when (not (eq st 'symbol)) + (when (not (memq st '(symbol regexp))) (error "Symref impl GREP does not support searchtype of %s" st)) ) ;; Find the root of the project, and do a find-grep... (let* (;; Find the file patterns to use. - (pat (cdr (assoc major-mode semantic-symref-filepattern-alist))) (rootdir (semantic-symref-calculate-rootdir)) (filepattern (semantic-symref-derive-find-filepatterns)) ;; Grep based flags. (grepflags (cond ((eq (oref tool :resulttype) 'file) - "-l ") - (t "-n "))) - (greppat (cond ((eq (oref tool :searchtype) 'regexp) - (oref tool searchfor)) - (t - (concat "'\\<" (oref tool searchfor) "\\>'")))) + "-l ") + ((eq (oref tool :searchtype) 'regexp) + "-nE ") + (t "-n "))) + (greppat (shell-quote-argument + (cond ((eq (oref tool :searchtype) 'regexp) + (oref tool searchfor)) + (t + ;; Can't use the word boundaries: Grep + ;; doesn't always agrees with the language + ;; syntax on those. + (format "\\(^\\|\\W\\)%s\\(\\W\\|$\\)" + (oref tool searchfor)))))) ;; Misc (b (get-buffer-create "*Semantic SymRef*")) (ans nil) @@ -158,10 +180,12 @@ This shell should support pipe redirect syntax." (let ((cmd (concat "find " default-directory " -type f " filepattern " -print0 " "| xargs -0 grep -H " grepflags "-e " greppat))) ;;(message "Old command: %s" cmd) - (call-process semantic-symref-grep-shell nil b nil "-c" cmd) + (call-process semantic-symref-grep-shell nil b nil + shell-command-switch cmd) ) (let ((cmd (semantic-symref-grep-use-template rootdir filepattern grepflags greppat))) - (call-process semantic-symref-grep-shell nil b nil "-c" cmd)) + (call-process semantic-symref-grep-shell nil b nil + shell-command-switch cmd)) )) (setq ans (semantic-symref-parse-tool-output tool b)) ;; Return the answer diff --git a/lisp/cedet/semantic/symref/idutils.el b/lisp/cedet/semantic/symref/idutils.el index c22a6a3b7fb..655b000ccdd 100644 --- a/lisp/cedet/semantic/symref/idutils.el +++ b/lisp/cedet/semantic/symref/idutils.el @@ -60,7 +60,7 @@ Moves cursor to end of the match." (when (re-search-forward "^\\([^ ]+\\) " nil t) (match-string 1))) (t - (when (re-search-forward "^\\([^ :]+\\):+\\([0-9]+\\):" nil t) + (when (re-search-forward "^\\(\\(?:[a-zA-Z]:\\)?[^:\n]+\\):\\([0-9]+\\):" nil t) (cons (string-to-number (match-string 2)) (expand-file-name (match-string 1) default-directory)) )))) diff --git a/lisp/cedet/semantic/symref/list.el b/lisp/cedet/semantic/symref/list.el index c99fc5f1932..f72499bf88e 100644 --- a/lisp/cedet/semantic/symref/list.el +++ b/lisp/cedet/semantic/symref/list.el @@ -84,9 +84,13 @@ This command uses the currently configured references tool within the current project to find references to the input SYM. The references are the organized by file and the name of the function they are used in. -Display the references in`semantic-symref-results-mode'." - (interactive (list (semantic-tag-name (semantic-complete-read-tag-buffer-deep - "Symrefs for: ")))) +Display the references in `semantic-symref-results-mode'." + (interactive (list (let ((tag (semantic-current-tag))) + (read-string " Symrefs for: " nil nil + (when tag + (regexp-quote (semantic-tag-name tag))))))) + ;; FIXME: Shouldn't the input be in Emacs regexp format, for + ;; consistency? Converting it to extended is not hard. (semantic-fetch-tags) (message "Gathering References...") ;; Gather results and tags diff --git a/lisp/cedet/semantic/tag.el b/lisp/cedet/semantic/tag.el index 3ad192b8b8f..545ca914d19 100644 --- a/lisp/cedet/semantic/tag.el +++ b/lisp/cedet/semantic/tag.el @@ -621,7 +621,7 @@ buffer, the originating buffer file name is kept in the `:filename' property of the copied tag. If KEEP-FILE is a string, and the originating buffer is NOT available, then KEEP-FILE is stored on the `:filename' property. -This runs the tag hook `unlink-copy-hook`." +This runs the tag hook `unlink-copy-hook'." ;; Right now, TAG is a list. (let ((copy (semantic-tag-clone tag name))) @@ -958,7 +958,7 @@ Return nil if TAG is not of class 'alias." "Return a list of components for TAG. A Component is a part of TAG which itself may be a TAG. Examples include the elements of a structure in a -tag of class `type, or the list of arguments to a +tag of class 'type, or the list of arguments to a tag of class 'function." ) diff --git a/lisp/cedet/semantic/wisent/wisent.el b/lisp/cedet/semantic/wisent/wisent.el index fd00080f543..fb77cb36947 100644 --- a/lisp/cedet/semantic/wisent/wisent.el +++ b/lisp/cedet/semantic/wisent/wisent.el @@ -44,11 +44,11 @@ " /\\_.-^^^-._/\\ The GNU \\_ _/ - ( `o ` (European ;-) Bison - \\ ` / + ( \\=`o \\=` (European ;-) Bison + \\ \\=` / ( D ,\" for Emacs! - ` ~ ,\" - `\"\"" + \\=` ~ ,\" + \\=`\"\"" :group 'semantic) diff --git a/lisp/cedet/srecode/compile.el b/lisp/cedet/srecode/compile.el index c93a6f72a9a..a8d6a5008bb 100644 --- a/lisp/cedet/srecode/compile.el +++ b/lisp/cedet/srecode/compile.el @@ -116,19 +116,19 @@ additional static argument data.")) Plain text strings are not handled via this baseclass." :abstract t) -(cl-defmethod srecode-parse-input ((ins srecode-template-inserter) - tag input STATE) +(cl-defmethod srecode-parse-input ((_ins srecode-template-inserter) + _tag input _STATE) "For the template inserter INS, parse INPUT. Shorten input only by the amount needed. Return the remains of INPUT. STATE is the current compilation state." input) -(cl-defmethod srecode-match-end ((ins srecode-template-inserter) name) +(cl-defmethod srecode-match-end ((_ins srecode-template-inserter) _name) "For the template inserter INS, do I end a section called NAME?" nil) -(cl-defmethod srecode-inserter-apply-state ((ins srecode-template-inserter) STATE) +(cl-defmethod srecode-inserter-apply-state ((_ins srecode-template-inserter) _STATE) "For the template inserter INS, apply information from STATE." nil) @@ -415,7 +415,7 @@ If END-NAME is specified, and the input string" (match-end 0))) (namestart (match-end 0)) (junk (string-match regexend what namestart)) - end tail name key) + end tail name) ;; Add string to compiled output (when (> (length prefix) 0) (setq comp (cons prefix comp))) @@ -453,8 +453,7 @@ If END-NAME is specified, and the input string" (semantic-tag-name tag))) ) ;; Add string to compiled output - (setq name (substring what namestart end) - key nil) + (setq name (substring what namestart end)) ;; Trim WHAT back. (setq what (substring what tail)) ;; Get the inserter @@ -523,7 +522,7 @@ to the inserter constructor." (setq classes (append classes (eieio-class-children (car classes)))) ;; Do we have a match? (when (and (not (class-abstract-p (car classes))) - (equal (oref (car classes) key) key)) + (equal (oref-default (car classes) key) key)) ;; Create the new class, and apply state. (setq new (apply (car classes) name props)) (srecode-inserter-apply-state new STATE) @@ -642,7 +641,7 @@ Argument INDENT specifies the indentation level for the list." (princ "\n")))) ) -(cl-defmethod srecode-dump ((ins srecode-template-inserter) indent) +(cl-defmethod srecode-dump ((ins srecode-template-inserter) _indent) "Dump the state of the SRecode template inserter INS." (princ "INS: \"") (princ (eieio-object-name-string ins)) diff --git a/lisp/cedet/srecode/cpp.el b/lisp/cedet/srecode/cpp.el index ec92ae30ba6..e77e05c40b9 100644 --- a/lisp/cedet/srecode/cpp.el +++ b/lisp/cedet/srecode/cpp.el @@ -84,7 +84,7 @@ HEADER - Shown section if in a header file." ;;;###autoload (defun srecode-semantic-handle-:cpp (dict) "Add macros into the dictionary DICT based on the current c file. -Calls `srecode-semantic-handle-:c. +Calls `srecode-semantic-handle-:c'. Also adds the following: - nothing -" (srecode-semantic-handle-:c dict) diff --git a/lisp/cedet/srecode/dictionary.el b/lisp/cedet/srecode/dictionary.el index 97d3310a2ae..27e730f9d6a 100644 --- a/lisp/cedet/srecode/dictionary.el +++ b/lisp/cedet/srecode/dictionary.el @@ -195,8 +195,8 @@ associated with a buffer or parent." initfrombuff t))) ;; Create the new dictionary object. - (let ((dict (srecode-dictionary - major-mode + (let ((dict (make-instance + 'srecode-dictionary :buffer buffer :parent parent :namehash (make-hash-table :test 'equal diff --git a/lisp/cedet/srecode/insert.el b/lisp/cedet/srecode/insert.el index 0c13ee51e34..c2a70fe030f 100644 --- a/lisp/cedet/srecode/insert.el +++ b/lisp/cedet/srecode/insert.el @@ -35,7 +35,6 @@ (require 'srecode/args) (require 'srecode/filters) -(defvar srecode-template-inserter-point) (declare-function srecode-overlaid-activate "srecode/fields") (declare-function srecode-template-inserted-region "srecode/fields") @@ -145,7 +144,7 @@ has set everything up already." ) (set-buffer standard-output) (setq end-mark (point-marker)) - (goto-char (oref srecode-template-inserter-point point))) + (goto-char (oref-default 'srecode-template-inserter-point point))) (oset-default 'srecode-template-inserter-point point eieio-unbound) ;; Return the end-mark. @@ -264,13 +263,12 @@ Optional argument TEMP is the template that is getting its arguments resolved." "Push the srecoder template ST onto the active stack." (oset st active (cons st (oref st active)))) -(cl-defmethod srecode-pop ((st (subclass srecode-template))) - "Pop the srecoder template ST onto the active stack. -ST can be a class, or an object." +(cl-defmethod srecode-pop ((st srecode-template)) + "Pop the srecoder template ST onto the active stack." (oset st active (cdr (oref st active)))) -(cl-defmethod srecode-peek ((st (subclass srecode-template))) - "Fetch the topmost active template record. ST can be a class." +(cl-defmethod srecode-peek ((st srecode-template)) + "Fetch the topmost active template record." (car (oref st active))) (cl-defmethod srecode-insert-method ((st srecode-template) dictionary) @@ -363,7 +361,7 @@ occur in your template.") ((stringp i) (princ i)))))) -(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) indent) +(cl-defmethod srecode-dump ((ins srecode-template-inserter-newline) _indent) "Dump the state of the SRecode template inserter INS." (cl-call-next-method) (when (oref ins hard) @@ -425,8 +423,8 @@ Specify the :blank argument to enable this inserter.") ) "Allow comments within template coding. This inserts nothing.") -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-comment)) - escape-start escape-end) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-comment)) + escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (princ " ") @@ -436,8 +434,8 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (terpri) ) -(cl-defmethod srecode-insert-method ((sti srecode-template-inserter-comment) - dictionary) +(cl-defmethod srecode-insert-method ((_sti srecode-template-inserter-comment) + _dictionary) "Don't insert anything for comment macros in STI." nil) @@ -491,7 +489,7 @@ If SECONDNAME is nil, return VALUE." (setq val (srecode-insert-variable-secondname-handler sti dictionary val fcnpart))) ;; Compound data value - ((srecode-dictionary-compound-value-child-p val) + ((cl-typep val 'srecode-dictionary-compound-value) ;; Force FCN to be a symbol (when fcnpart (setq fcnpart (read fcnpart))) ;; Convert compound value to a string with the fcn. @@ -502,7 +500,7 @@ If SECONDNAME is nil, return VALUE." (setq do-princ nil))) ;; Dictionaries... not allowed in this style - ((srecode-dictionary-child-p val) + ((cl-typep val 'srecode-dictionary) (srecode-insert-report-error dictionary "Macro %s cannot insert a dictionary - use section macros instead" @@ -661,7 +659,7 @@ Use DICTIONARY to resolve values." ;; across multiple locations. compound-value)) -(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) indent) +(cl-defmethod srecode-dump ((ins srecode-template-inserter-ask) _indent) "Dump the state of the SRecode template inserter INS." (cl-call-next-method) (princ " : \"") @@ -682,7 +680,7 @@ to 10 characters, with spaces added to the left. Use `right' for adding spaces to the right.") (cl-defmethod srecode-insert-variable-secondname-handler - ((sti srecode-template-inserter-width) dictionary value width) + ((_sti srecode-template-inserter-width) dictionary value width) "For VALUE handle WIDTH behaviors for this variable inserter. Return the result as a string. By default, treat as a function name." @@ -714,8 +712,8 @@ By default, treat as a function name." (concat padchars value) (concat value padchars)))))) -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-width)) - escape-start escape-end) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-width)) + escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (princ " ") @@ -750,8 +748,8 @@ The cursor is placed at the ^ macro after insertion. Some inserter macros, such as `srecode-template-inserter-include-wrap' will place text at the ^ macro from the included macro.") -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-point)) - escape-start escape-end) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-point)) + escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (princ " ") @@ -787,8 +785,8 @@ generalized marker will do something else. See "Wrap a section of a template under the control of a macro." :abstract t) -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-subtemplate)) - escape-start escape-end) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-subtemplate)) + escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." (cl-call-next-method) @@ -805,7 +803,7 @@ Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." dict slot) "Insert a subtemplate for the inserter STI with dictionary DICT." ;; Make sure that only dictionaries are used. - (unless (srecode-dictionary-child-p dict) + (unless (cl-typep dict 'srecode-dictionary) (srecode-insert-report-error dict "Only section dictionaries allowed for `%s'" @@ -889,8 +887,8 @@ Return the remains of INPUT." "All template segments between the section-start and section-end are treated specially.") -(cl-defmethod srecode-insert-method ((sti srecode-template-inserter-section-end) - dictionary) +(cl-defmethod srecode-insert-method ((_sti srecode-template-inserter-section-end) + _dictionary) "Insert the STI inserter." ) @@ -912,7 +910,7 @@ are treated specially.") The included template will have additional dictionary entries from the subdictionary stored specified by this macro.") -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-include)) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-include)) escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." @@ -1017,7 +1015,7 @@ stored specified by this macro. If the included macro includes a ^ macro, then the text between this macro and the end macro will be inserted at the ^ macro.") -(cl-defmethod srecode-inserter-prin-example ((ins (subclass srecode-template-inserter-include-wrap)) +(cl-defmethod srecode-inserter-prin-example ((_ins (subclass srecode-template-inserter-include-wrap)) escape-start escape-end) "Insert an example using inserter INS. Arguments ESCAPE-START and ESCAPE-END are the current escape sequences in use." diff --git a/lisp/cedet/srecode/texi.el b/lisp/cedet/srecode/texi.el index 5c3f21c32a2..6c8f7a6e3ca 100644 --- a/lisp/cedet/srecode/texi.el +++ b/lisp/cedet/srecode/texi.el @@ -241,11 +241,11 @@ This is to take advantage of TeXinfo's markup symbols." For instances where CLASS is the class being referenced, do not Xref that class. - `function' => @dfn{function} - `variable' => @code{variable} - `class' => @code{class} @xref{class} - `unknown' => @code{unknown} - \"text\" => ``text'' + function => @dfn{function} + variable => @code{variable} + class => @code{class} @xref{class} + unknown => @code{unknown} + \"text\" => \\=`\\=`text'' 'quoteme => @code{quoteme} non-nil => non-@code{nil} t => @code{t} @@ -253,7 +253,7 @@ that class. [ stuff ] => @code{[ stuff ]} Key => @kbd{Key} (key is C\\-h, M\\-h, SPC, RET, TAB and the like) ... => @dots{}" - (while (string-match "`\\([-a-zA-Z0-9<>.]+\\)'" string) + (while (string-match "[`‘]\\([-a-zA-Z0-9<>.]+\\)['’]" string) (let* ((vs (substring string (match-beginning 1) (match-end 1))) (v (intern-soft vs))) (setq string diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 9cc2fa81d07..1d9a9d6d426 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1965,7 +1965,7 @@ Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where STATE is one of the following symbols: -`nil' +nil For internal use, should never occur. `unknown' For internal use, should never occur. @@ -3115,7 +3115,7 @@ face attributes (as specified by a `default' defface entry)." widget (widget-get widget :default-face-attributes))) entry) - (unless (looking-back "^ *") + (unless (looking-back "^ *" (line-beginning-position)) (insert ?\n)) (insert-char ?\s (widget-get widget :extra-offset)) (if (or alist defaults show-all) @@ -4377,7 +4377,8 @@ if only the first line of the docstring is shown.")) (defun custom-file (&optional no-error) "Return the file name for saving customizations." - (if (null user-init-file) + (if (or (null user-init-file) + (and (null custom-file) init-file-had-error)) ;; Started with -q, i.e. the file containing Custom settings ;; hasn't been read. Saving settings there won't make much ;; sense. diff --git a/lisp/cus-start.el b/lisp/cus-start.el index 29ef371669c..b4d2139022c 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -169,7 +169,12 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (shell-file-name execute file) (exec-path execute (repeat (choice (const :tag "default directory" nil) - (directory :format "%v")))) + (directory :format "%v"))) + nil + :standard + (mapcar 'directory-file-name + (append (parse-colon-path (getenv "PATH")) + (list exec-directory)))) (exec-suffixes execute (repeat string)) ;; charset.c (charset-map-path installation @@ -433,6 +438,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (const super)) "23.1") (ns-antialias-text ns boolean "23.1") (ns-auto-hide-menu-bar ns boolean "24.1") + (ns-confirm-quit ns boolean "25.1") (ns-use-native-fullscreen ns boolean "24.4") (ns-use-fullscreen-animation ns boolean "25.1") (ns-use-srgb-colorspace ns boolean "24.4") diff --git a/lisp/cus-theme.el b/lisp/cus-theme.el index 224d2c541b2..1321fbc4b7e 100644 --- a/lisp/cus-theme.el +++ b/lisp/cus-theme.el @@ -492,10 +492,10 @@ It includes all faces in list FACES." '("" "c"))) doc) (when fn - (princ " in `") + (princ " in ‘") (help-insert-xref-button (file-name-nondirectory fn) 'help-theme-def fn) - (princ "'")) + (princ "’")) (princ ".\n") (if (custom-theme-p theme) (progn @@ -517,7 +517,7 @@ It includes all faces in list FACES." (setq doc (nth 2 sexp))))))) (princ "\n\nDocumentation:\n") (princ (if (stringp doc) - doc + (substitute-command-keys doc) "No documentation available."))) (princ "\n\nYou can ") (help-insert-xref-button "customize" 'help-theme-edit theme) diff --git a/lisp/custom.el b/lisp/custom.el index e5fe0ebaedd..ea5ab7a4773 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -449,8 +449,7 @@ information." ;; Record the group on the `current' list. (let ((elt (assoc load-file-name custom-current-group-alist))) (if elt (setcdr elt symbol) - (push (cons (purecopy load-file-name) symbol) - custom-current-group-alist))) + (push (cons load-file-name symbol) custom-current-group-alist))) (run-hooks 'custom-define-hook) symbol) diff --git a/lisp/descr-text.el b/lisp/descr-text.el index d6f64c77e61..c8641aed8bb 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -161,8 +161,8 @@ otherwise." ;; Buttons (when (and button (not (widgetp wid-button))) (newline) - (insert "Here is a `" (format "%S" button-type) - "' button labeled `" button-label "'.\n\n")) + (insert "Here is a ‘" (format "%S" button-type) + "’ button labeled ‘" button-label "’.\n\n")) ;; Overlays (when overlays (newline) @@ -618,7 +618,14 @@ relevant to POS." 'help-args '(,current-input-method)) "input method") (list - "type \"C-x 8 RET HEX-CODEPOINT\" or \"C-x 8 RET NAME\""))))) + (let ((name + (or (get-char-code-property char 'name) + (get-char-code-property char 'old-name)))) + (if name + (format + "type \"C-x 8 RET %x\" or \"C-x 8 RET %s\"" + char name) + (format "type \"C-x 8 RET %x\"" char)))))))) ("buffer code" ,(if multibyte-p (encoded-string-description @@ -731,7 +738,7 @@ relevant to POS." (when face (insert (propertize " " 'display '(space :align-to 5)) "face: ") - (insert (concat "`" (symbol-name face) "'")) + (insert (concat "‘" (symbol-name face) "’")) (insert "\n"))))) (insert "these terminal codes:\n") (dotimes (i (length disp-vector)) diff --git a/lisp/desktop.el b/lisp/desktop.el index fb803b4df5b..c168f9c9d9a 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -83,8 +83,10 @@ ;; (add-to-list 'desktop-minor-mode-handlers ;; '(bar-mode . bar-desktop-restore)) -;; in the module itself, and make sure that the mode function is -;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and +;; in the module itself. The mode function must either be autoloaded, +;; or of the form "foobar-mode" and defined in library "foobar", so that +;; desktop can guess how to load its definition. +;; See the docstrings of `desktop-buffer-mode-handlers' and ;; `desktop-minor-mode-handlers' for more info. ;; Minor modes. @@ -520,7 +522,9 @@ code like (add-to-list 'desktop-buffer-mode-handlers '(foo-mode . foo-restore-desktop-buffer)) -Furthermore the major mode function must be autoloaded.") +The major mode function must either be autoloaded, or of the form +\"foobar-mode\" and defined in library \"foobar\", so that desktop +can guess how to load the mode's definition.") ;;;###autoload (put 'desktop-buffer-mode-handlers 'risky-local-variable t) @@ -585,7 +589,9 @@ code like (add-to-list 'desktop-minor-mode-handlers '(foo-mode . foo-desktop-restore)) -Furthermore the minor mode function must be autoloaded. +The minor mode function must either be autoloaded, or of the form +\"foobar-mode\" and defined in library \"foobar\", so that desktop +can guess how to load the mode's definition. See also `desktop-minor-mode-table'.") @@ -1352,9 +1358,18 @@ after that many seconds of idle time." nil))) (defun desktop-load-file (function) - "Load the file where auto loaded FUNCTION is defined." - (when (fboundp function) - (autoload-do-load (symbol-function function) function))) + "Load the file where auto loaded FUNCTION is defined. +If FUNCTION is not currently defined, guess the library that defines it +and try to load that." + (if (fboundp function) + (autoload-do-load (symbol-function function) function) + ;; Guess that foobar-mode is defined in foobar. + ;; TODO rather than guessing or requiring an autoload, the desktop + ;; file should record the name of the library. + (let ((name (symbol-name function))) + (if (string-match "\\`\\(.*\\)-mode\\'" name) + (with-demoted-errors "Require error in desktop-load-file: %S" + (require (intern (match-string 1 name)) nil t)))))) ;; ---------------------------------------------------------------------------- ;; Create a buffer, load its file, set its mode, ...; @@ -1572,9 +1587,6 @@ If there are no buffers left to create, kill the timer." (desktop-read) (setq inhibit-startup-screen t))))) -;; So we can restore vc-dir buffers. -(autoload 'vc-dir-mode "vc-dir" nil t) - (provide 'desktop) ;;; desktop.el ends here diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index b4e2dc0a937..18a3c887aad 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -413,12 +413,15 @@ into the minibuffer." ;; Now the original list FILES has been put back as it was. (nconc past pending)))) +(defvar lpr-printer-switch) + ;;;###autoload (defun dired-do-print (&optional arg) "Print the marked (or next ARG) files. Uses the shell command coming from variables `lpr-command' and `lpr-switches' as default." (interactive "P") + (require 'lpr) (let* ((file-list (dired-get-marked-files t arg)) (lpr-switches (if (and (stringp printer-name) @@ -2254,7 +2257,7 @@ of marked files. If KILL-ROOT is non-nil, kill DIRNAME as well." ;; components are string-lessp. ;; Thus ("/usr/" "/usr/bin") and ("/usr/a/" "/usr/b/") are tree-lessp. ;; string-lessp could arguably be replaced by file-newer-than-file-p - ;; if dired-actual-switches contained `t'. + ;; if dired-actual-switches contained t. (setq dir1 (file-name-as-directory dir1) dir2 (file-name-as-directory dir2)) (let ((components-1 (dired-split "/" dir1)) diff --git a/lisp/dired.el b/lisp/dired.el index cc16c8c9c53..e523b941295 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -3889,7 +3889,7 @@ Ask means pop up a menu for the user to select one of copy, move or link." ;;; Start of automatically extracted autoloads. -;;;### (autoloads nil "dired-aux" "dired-aux.el" "65f8aa57ace423283926d92dff903ca7") +;;;### (autoloads nil "dired-aux" "dired-aux.el" "45867cb96abef86d29a9850ee2113cf2") ;;; Generated autoloads from dired-aux.el (autoload 'dired-diff "dired-aux" "\ diff --git a/lisp/dirtrack.el b/lisp/dirtrack.el index d1957a259b1..d1c46dd8550 100644 --- a/lisp/dirtrack.el +++ b/lisp/dirtrack.el @@ -51,7 +51,7 @@ ;; which matches your prompt up to and including the pathname part. ;; The second is a number which tells which regular expression group to ;; match to extract only the pathname. If you use a multi-line prompt, -;; add 't' as a third element. Note that some of the functions in +;; add t as a third element. Note that some of the functions in ;; 'comint.el' assume a single-line prompt (eg, comint-bol). ;; ;; Determining this information may take some experimentation. Using diff --git a/lisp/dom.el b/lisp/dom.el index 42131073a04..091197a8f9d 100644 --- a/lisp/dom.el +++ b/lisp/dom.el @@ -25,6 +25,7 @@ ;;; Code: (require 'cl-lib) +(eval-when-compile (require 'subr-x)) (defsubst dom-tag (node) "Return the NODE tag." diff --git a/lisp/elec-pair.el b/lisp/elec-pair.el index 562b29467c1..db812c9e121 100644 --- a/lisp/elec-pair.el +++ b/lisp/elec-pair.el @@ -475,7 +475,8 @@ happened." (when (and (not (and unconditional (eq syntax ?\"))) (setq skip-whitespace-info - (if (functionp electric-pair-skip-whitespace) + (if (and (not (eq electric-pair-skip-whitespace 'chomp)) + (functionp electric-pair-skip-whitespace)) (funcall electric-pair-skip-whitespace) electric-pair-skip-whitespace))) (electric-pair--skip-whitespace)) diff --git a/lisp/electric.el b/lisp/electric.el index dd7767fd5eb..88b28352ac0 100644 --- a/lisp/electric.el +++ b/lisp/electric.el @@ -413,6 +413,114 @@ The variable `electric-layout-rules' says when and how to insert newlines." (remove-hook 'post-self-insert-hook #'electric-layout-post-self-insert-function)))) +;;; Electric quoting. + +(defcustom electric-quote-comment t + "Non-nil means to use electric quoting in program comments." + :type 'boolean :safe 'booleanp :group 'electricity) + +(defcustom electric-quote-string nil + "Non-nil means to use electric quoting in program strings." + :type 'boolean :safe 'booleanp :group 'electricity) + +(defcustom electric-quote-paragraph t + "Non-nil means to use electric quoting in text paragraphs." + :type 'boolean :safe 'booleanp :group 'electricity) + +(defun electric--insertable-p (string) + (not (unencodable-char-position nil nil buffer-file-coding-system + nil string))) + +(defun electric-quote-post-self-insert-function () + "Function that ‘electric-quote-mode’ adds to ‘post-self-insert-hook’. +This requotes when a quoting key is typed." + (when (and electric-quote-mode + (memq last-command-event '(?\' ?\`))) + (let ((start + (if comment-start + (when (or electric-quote-comment electric-quote-string) + (let ((syntax (syntax-ppss))) + (and (or (and electric-quote-comment (nth 4 syntax)) + (and electric-quote-string (nth 3 syntax))) + (nth 8 syntax)))) + (and electric-quote-paragraph + (derived-mode-p 'text-mode) + (or (eq last-command-event ?\`) + (save-excursion (backward-paragraph) (point))))))) + (when start + (save-excursion + (if (eq last-command-event ?\`) + (cond ((and (electric--insertable-p "“") + (re-search-backward "[`‘]`" (- (point) 2) t)) + (replace-match "“") + (when (and electric-pair-mode + (eq (cdr-safe + (assq ?‘ electric-pair-text-pairs)) + (char-after))) + (delete-char 1)) + (setq last-command-event ?“)) + ((and (electric--insertable-p "‘") + (search-backward "`" (1- (point)) t)) + (replace-match "‘") + (setq last-command-event ?‘))) + (let ((pos (point))) + (if (memq (char-before (1- (point))) '(?\' ?’)) + (when (and (search-backward "“" start t) + (eq pos (re-search-forward + "“\\(\\([^‘”]\\|‘[^‘’”]*’\\)*\\)['’]'" + pos t))) + (replace-match "“\\1”") + (setq last-command-event ?”)) + (when (and (search-backward "‘" start t) + (eq pos (re-search-forward + "‘\\([^’]*\\)'" pos t))) + (replace-match "‘\\1’") + (setq last-command-event ?’)))))))))) + +(put 'electric-quote-post-self-insert-function 'priority 10) + +;;;###autoload +(define-minor-mode electric-quote-mode + "Toggle on-the-fly requoting (Electric Quote mode). +With a prefix argument ARG, enable Electric Quote mode if +ARG is positive, and disable it otherwise. If called from Lisp, +enable the mode if ARG is omitted or nil. + +When enabled, this replaces \\=`foo bar' with ‘foo bar’ and replaces +\\=`\\=`foo bar'' with “foo bar” as you type. This occurs only in +comments, strings, and text paragraphs, and these are selectively +controlled with ‘electric-quote-comment’, +‘electric-quote-string’, and ‘electric-quote-paragraph’. + +This is a global minor mode. To toggle the mode in a single buffer, +use ‘electric-quote-local-mode’." + :global t :group 'electricity + :initialize 'custom-initialize-delay + :init-value nil + (if (not electric-quote-mode) + (unless (catch 'found + (dolist (buf (buffer-list)) + (with-current-buffer buf + (if electric-quote-mode (throw 'found t))))) + (remove-hook 'post-self-insert-hook + #'electric-quote-post-self-insert-function)) + (add-hook 'post-self-insert-hook + #'electric-quote-post-self-insert-function) + (electric--sort-post-self-insertion-hook))) + +;;;###autoload +(define-minor-mode electric-quote-local-mode + "Toggle ‘electric-quote-mode’ only in this buffer." + :variable (buffer-local-value 'electric-quote-mode (current-buffer)) + (cond + ((eq electric-quote-mode (default-value 'electric-quote-mode)) + (kill-local-variable 'electric-quote-mode)) + ((not (default-value 'electric-quote-mode)) + ;; Locally enabled, but globally disabled. + (electric-quote-mode 1) ; Setup the hooks. + (setq-default electric-quote-mode nil) ; But keep it globally disabled. + ))) + (provide 'electric) ;;; electric.el ends here diff --git a/lisp/emacs-lisp/advice.el b/lisp/emacs-lisp/advice.el index 212ae909866..907f03bde45 100644 --- a/lisp/emacs-lisp/advice.el +++ b/lisp/emacs-lisp/advice.el @@ -2149,7 +2149,6 @@ the cache-id will clear the cache." (defun ad-arglist (definition) "Return the argument list of DEFINITION." - (require 'help-fns) (help-function-arglist (if (or (macrop definition) (ad-advice-p definition)) (cdr definition) @@ -2474,8 +2473,6 @@ Example: `(ad-map-arglists '(a &rest args) '(w x y z))' will return (capitalize (symbol-name class)) (ad-advice-name advice))))))) -(require 'help-fns) ;For help-split-fundoc and help-add-fundoc-usage. - (defun ad--make-advised-docstring (function &optional style) "Construct a documentation string for the advised FUNCTION. Concatenate the original documentation with the documentation diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 206d5bb4434..a6fefebf3f5 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -32,7 +32,6 @@ (require 'lisp-mode) ;for `doc-string-elt' properties. (require 'lisp-mnt) -(require 'help-fns) ;for help-add-fundoc-usage. (eval-when-compile (require 'cl-lib)) (defvar generated-autoload-file nil diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el index d5cdca2b1b5..dc61e156130 100644 --- a/lisp/emacs-lisp/backquote.el +++ b/lisp/emacs-lisp/backquote.el @@ -99,9 +99,9 @@ places where expressions are evaluated and inserted or spliced in. For example: b => (ba bb bc) ; assume b has this value -`(a b c) => (a b c) ; backquote acts like quote -`(a ,b c) => (a (ba bb bc) c) ; insert the value of b -`(a ,@b c) => (a ba bb bc c) ; splice in the value of b +\\=`(a b c) => (a b c) ; backquote acts like quote +\\=`(a ,b c) => (a (ba bb bc) c) ; insert the value of b +\\=`(a ,@b c) => (a ba bb bc c) ; splice in the value of b Vectors work just like lists. Nested backquotes are permitted." (cdr (backquote-process structure))) diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 06a11063025..30147931adc 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -566,7 +566,7 @@ (cons fn args))))))) (defun byte-optimize-all-constp (list) - "Non-nil if all elements of LIST satisfy `macroexp-const-p" + "Non-nil if all elements of LIST satisfy `macroexp-const-p'." (let ((constant t)) (while (and list constant) (unless (macroexp-const-p (car list)) @@ -1225,7 +1225,7 @@ window-left-child window-left-column window-margins window-minibuffer-p window-next-buffers window-next-sibling window-new-normal window-new-total window-normal-size window-parameter window-parameters - window-parent window-pixel-edges window-point window-prev-buffers + window-parent window-pixel-edges window-point window-prev-buffers window-prev-sibling window-redisplay-end-trigger window-scroll-bars window-start window-text-height window-top-child window-top-line window-total-height window-total-width window-use-time window-vscroll diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 51bbf8a2944..efd43898b60 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -348,7 +348,7 @@ else the global value will be modified." ;;;###autoload (defun byte-compile-enable-warning (warning) "Change `byte-compile-warnings' to enable WARNING. -If `byte-compile-warnings' is `t', do nothing. Otherwise, if the +If `byte-compile-warnings' is t, do nothing. Otherwise, if the first element is `not', remove WARNING, else add it. Normally you should let-bind `byte-compile-warnings' before calling this, else the global value will be modified." @@ -979,17 +979,6 @@ Each function's symbol gets added to `byte-compile-noruntime-functions'." (lambda (x) (if (symbolp x) (list 'prin1-to-string x) x)) args)))))) -(defvar byte-compile--interactive nil - "Determine if `byte-compile--message' uses the minibuffer.") - -(defun byte-compile--message (format &rest args) - "Like `message', except sometimes don't print to minibuffer. -If the variable `byte-compile--interactive' is nil, the message -is not displayed on the minibuffer." - (apply #'message format args) - (unless byte-compile--interactive - (message nil))) - ;; Log something that isn't a warning. (defun byte-compile-log-1 (string) (with-current-buffer byte-compile-log-buffer @@ -997,7 +986,7 @@ is not displayed on the minibuffer." (goto-char (point-max)) (byte-compile-warning-prefix nil nil) (cond (noninteractive - (byte-compile--message " %s" string)) + (message " %s" string)) (t (insert (format "%s\n" string))))))) @@ -1601,10 +1590,7 @@ extra args." "Recompile every `.el' file in DIRECTORY that already has a `.elc' file. Files in subdirectories of DIRECTORY are processed also." (interactive "DByte force recompile (directory): ") - (let ((byte-compile--interactive - (or byte-compile--interactive - (called-interactively-p 'any)))) - (byte-recompile-directory directory nil t))) + (byte-recompile-directory directory nil t)) ;;;###autoload (defun byte-recompile-directory (directory &optional arg force) @@ -1634,9 +1620,6 @@ that already has a `.elc' file." (compilation-mode)) (let ((directories (list default-directory)) (default-directory default-directory) - (byte-compile--interactive - (or byte-compile--interactive - (called-interactively-p 'any))) (skip-count 0) (fail-count 0) (file-count 0) @@ -1645,7 +1628,7 @@ that already has a `.elc' file." (displaying-byte-compile-warnings (while directories (setq directory (car directories)) - (byte-compile--message "Checking %s..." directory) + (message "Checking %s..." directory) (dolist (file (directory-files directory)) (let ((source (expand-file-name file directory))) (if (file-directory-p source) @@ -1670,13 +1653,13 @@ that already has a `.elc' file." (`t file-count) (_ fail-count))) (or noninteractive - (byte-compile--message "Checking %s..." directory)) + (message "Checking %s..." directory)) (if (not (eq last-dir directory)) (setq last-dir directory dir-count (1+ dir-count))) ))))) (setq directories (cdr directories)))) - (byte-compile--message "Done (Total of %d file%s compiled%s%s%s)" + (message "Done (Total of %d file%s compiled%s%s%s)" file-count (if (= file-count 1) "" "s") (if (> fail-count 0) (format ", %d failed" fail-count) "") (if (> skip-count 0) (format ", %d skipped" skip-count) "") @@ -1723,10 +1706,7 @@ If compilation is needed, this functions returns the result of current-prefix-arg))) (let ((dest (byte-compile-dest-file filename)) ;; Expand now so we get the current buffer's defaults - (filename (expand-file-name filename)) - (byte-compile--interactive - (or byte-compile--interactive - (called-interactively-p 'any)))) + (filename (expand-file-name filename))) (if (if (file-exists-p dest) ;; File was already compiled ;; Compile if forced to, or filename newer @@ -1738,7 +1718,7 @@ If compilation is needed, this functions returns the result of filename "? "))))) (progn (if (and noninteractive (not byte-compile-verbose)) - (byte-compile--message "Compiling %s..." filename)) + (message "Compiling %s..." filename)) (byte-compile-file filename load)) (when load (load (if (file-exists-p dest) dest filename))) @@ -1782,9 +1762,6 @@ The value is non-nil if there were no errors, nil if errors." (let ((byte-compile-current-file filename) (byte-compile-current-group nil) (set-auto-coding-for-load t) - (byte-compile--interactive - (or byte-compile--interactive - (called-interactively-p 'any))) target-file input-buffer output-buffer byte-compile-dest-file) (setq target-file (byte-compile-dest-file filename)) @@ -1840,14 +1817,14 @@ The value is non-nil if there were no errors, nil if errors." ;; (byte-compile-abbreviate-file filename) ;; (with-current-buffer input-buffer no-byte-compile)) (when (file-exists-p target-file) - (byte-compile--message "%s deleted because of `no-byte-compile: %s'" + (message "%s deleted because of `no-byte-compile: %s'" (byte-compile-abbreviate-file target-file) (buffer-local-value 'no-byte-compile input-buffer)) (condition-case nil (delete-file target-file) (error nil))) ;; We successfully didn't compile this file. 'no-byte-compile) (when byte-compile-verbose - (byte-compile--message "Compiling %s..." filename)) + (message "Compiling %s..." filename)) (setq byte-compiler-error-flag nil) ;; It is important that input-buffer not be current at this call, ;; so that the value of point set in input-buffer @@ -1859,7 +1836,7 @@ The value is non-nil if there were no errors, nil if errors." (if byte-compiler-error-flag nil (when byte-compile-verbose - (byte-compile--message "Compiling %s...done" filename)) + (message "Compiling %s...done" filename)) (kill-buffer input-buffer) (with-current-buffer output-buffer (goto-char (point-max)) @@ -1885,7 +1862,7 @@ The value is non-nil if there were no errors, nil if errors." ;; recompiled). Previously this was accomplished by ;; deleting target-file before writing it. (rename-file tempfile target-file t) - (or noninteractive (byte-compile--message "Wrote %s" target-file))) + (or noninteractive (message "Wrote %s" target-file))) ;; This is just to give a better error message than write-region (signal 'file-error (list "Opening output file" @@ -1919,9 +1896,6 @@ With argument ARG, insert value in current buffer after the form." (byte-compile-read-position (point)) (byte-compile-last-position byte-compile-read-position) (byte-compile-last-warned-form 'nothing) - (byte-compile--interactive - (or byte-compile--interactive - (called-interactively-p 'any))) (value (eval (let ((read-with-symbol-positions (current-buffer)) (read-symbol-positions-list nil)) @@ -1929,10 +1903,10 @@ With argument ARG, insert value in current buffer after the form." (byte-compile-sexp (read (current-buffer))))) lexical-binding))) (cond (arg - (byte-compile--message "Compiling from buffer... done.") + (message "Compiling from buffer... done.") (prin1 value (current-buffer)) (insert "\n")) - ((byte-compile--message "%s" (prin1-to-string value))))))) + ((message "%s" (prin1-to-string value))))))) (defun byte-compile-from-buffer (inbuffer) (let ((byte-compile-current-buffer inbuffer) @@ -2436,7 +2410,7 @@ not to take responsibility for the actual compilation of the code." (byte-compile-arglist-warn name arglist macro)) (if byte-compile-verbose - (byte-compile--message "Compiling %s... (%s)" + (message "Compiling %s... (%s)" (or byte-compile-current-file "") name)) (cond ((not (or macro (listp body))) ;; We do not know positively if the definition is a macro @@ -2606,7 +2580,7 @@ If FORM is a lambda or a macro, byte-compile it as a function." ;; error to a simple message for the known case where signaling an error ;; causes problems. ((byte-code-function-p fun) - (byte-compile--message "Function %s is already compiled" + (message "Function %s is already compiled" (if (symbolp form) form "provided")) fun) (t @@ -2946,11 +2920,17 @@ for symbols generated by the byte compiler itself." ;; Special macro-expander used during byte-compilation. (defun byte-compile-macroexpand-declare-function (fn file &rest args) - (push (cons fn - (if (and (consp args) (listp (car args))) - (list 'declared (car args)) - t)) ; Arglist not specified. - byte-compile-function-environment) + (let ((gotargs (and (consp args) (listp (car args)))) + (unresolved (assq fn byte-compile-unresolved-functions))) + (when unresolved ; function was called before declaration + (if (and gotargs (byte-compile-warning-enabled-p 'callargs)) + (byte-compile-arglist-warn fn (car args) nil) + (setq byte-compile-unresolved-functions + (delq unresolved byte-compile-unresolved-functions)))) + (push (cons fn (if gotargs + (list 'declared (car args)) + t)) ; Arglist not specified. + byte-compile-function-environment)) ;; We are stating that it _will_ be defined at runtime. (setq byte-compile-noruntime-functions (delq fn byte-compile-noruntime-functions)) @@ -4424,8 +4404,8 @@ binding slots have been popped." name macro arglist body rest) (when macro (if (null fun) - (byte-compile--message "Macro %s unrecognized, won't work in file" name) - (byte-compile--message "Macro %s partly recognized, trying our luck" name) + (message "Macro %s unrecognized, won't work in file" name) + (message "Macro %s partly recognized, trying our luck" name) (push (cons name (eval fun)) byte-compile-macro-environment))) (byte-compile-keep-pending form)))) @@ -4551,11 +4531,11 @@ The call tree also lists those functions which are not known to be called \(that is, to which no calls have been compiled\), and which cannot be invoked interactively." (interactive) - (byte-compile--message "Generating call tree...") + (message "Generating call tree...") (with-output-to-temp-buffer "*Call-Tree*" (set-buffer "*Call-Tree*") (erase-buffer) - (byte-compile--message "Generating call tree... (sorting on %s)" + (message "Generating call tree... (sorting on %s)" byte-compile-call-tree-sort) (insert "Call tree for " (cond ((null byte-compile-current-file) (or filename "???")) diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el index 851b3bfc6fd..06601252a4c 100644 --- a/lisp/emacs-lisp/chart.el +++ b/lisp/emacs-lisp/chart.el @@ -280,7 +280,7 @@ START and END represent the boundary." "Draw axis information based upon a range to be spread along the edge. A is the chart to draw. DIR is the direction. MARGIN, ZONE, START, and END specify restrictions in chart space." - (call-next-method) + (cl-call-next-method) ;; We prefer about 5 spaces between each value (let* ((i (car (oref a bounds))) (e (cdr (oref a bounds))) @@ -333,7 +333,7 @@ Automatically compensates for direction." "Draw axis information based upon A range to be spread along the edge. Optional argument DIR is the direction of the chart. Optional arguments MARGIN, ZONE, START and END specify boundaries of the drawing." - (call-next-method) + (cl-call-next-method) ;; We prefer about 5 spaces between each value (let* ((i 0) (s (oref a items)) diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el index 8fc299d7e93..ecdb6d8983c 100644 --- a/lisp/emacs-lisp/check-declare.el +++ b/lisp/emacs-lisp/check-declare.el @@ -98,7 +98,7 @@ don't know how to recognize (e.g. some macros)." (stringp (setq fnfile (nth 2 form))) (setq fnfile (check-declare-locate fnfile (expand-file-name file))) - ;; Use `t' to distinguish unspecified arglist from empty one. + ;; Use t to distinguish unspecified arglist from empty one. (or (eq t (setq arglist (if (> len 3) (nth 3 form) t))) @@ -157,6 +157,7 @@ is a string giving details of the error." (setq re (format (if cflag "^[ \t]*\\(DEFUN\\)[ \t]*([ \t]*\"%s\"" "^[ \t]*(\\(fset[ \t]+'\\|\ +cl-def\\(?:generic\\|method\\)\\|\ def\\(?:un\\|subst\\|foo\\|method\\|class\\|\ ine-\\(?:derived\\|generic\\|\\(?:global\\(?:ized\\)?-\\)?minor\\)-mode\\|\ \\(?:ine-obsolete-function-\\)?alias[ \t]+'\\|\ @@ -200,8 +201,8 @@ ine-overloadable-function\\)\\)\ type) 'obsolete) ;; Can't easily check arguments in these cases. - ((string-match "\\`\\(def\\(alias\\|\ -method\\|class\\)\\|fset\\)\\>" type) + ((string-match "\\`\\(def\\(alias\\|class\\)\\|\ +fset\\|\\(?:cl-\\)?defmethod\\)\\>" type) t) ((looking-at "\\((\\|nil\\)") (byte-compile-arglist-signature @@ -284,6 +285,8 @@ TYPE is a string giving the nature of the error. Warning is displayed in type) nil check-declare-warning-buffer))) +(declare-function compilation-forget-errors "compile" ()) + (defun check-declare-files (&rest files) "Check veracity of all `declare-function' statements in FILES. Return a list of any errors found." diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 777fed082d9..4761ac5e6fc 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -1524,7 +1524,7 @@ may require more formatting") ;; Instead, use the `\\[...]' construct to stand for them. (save-excursion (let ((f nil) (m nil) (start (point)) - (re "[^`A-Za-z0-9_]\\([CMA]-[a-zA-Z]\\|\\(\\([CMA]-\\)?\ + (re "[^`‘A-Za-z0-9_]\\([CMA]-[a-zA-Z]\\|\\(\\([CMA]-\\)?\ mouse-[0-3]\\)\\)\\>")) ;; Find the first key sequence not in a sample (while (and (not f) (setq m (re-search-forward re e t))) @@ -1554,7 +1554,8 @@ mouse-[0-3]\\)\\)\\>")) (save-excursion (let ((case-fold-search t) (ret nil) mb me) - (while (and (re-search-forward "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'" e t) + (while (and (re-search-forward + "[`‘]\\(\\sw\\(\\sw\\|\\s_\\)+\\)['’]" e t) (not ret)) (let* ((ms1 (match-string 1)) (sym (intern-soft ms1))) @@ -1615,8 +1616,8 @@ function,command,variable,option or symbol." ms1)))))) (or ;; * The documentation string for a variable that is a ;; yes-or-no flag should start with words such as Non-nil - ;; means..., to make it clear that all non-`nil' values are - ;; equivalent and indicate explicitly what `nil' and non-`nil' + ;; means..., to make it clear that all non-nil values are + ;; equivalent and indicate explicitly what nil and non-nil ;; mean. ;; * If a user option variable records a true-or-false ;; condition, give it a name that ends in `-flag'. @@ -1785,16 +1786,17 @@ Replace with \"%s\"? " original replace) ))) ;;* When a documentation string refers to a Lisp symbol, write it as ;; it would be printed (which usually means in lower case), with - ;; single-quotes around it. For example: `lambda'. There are two - ;; exceptions: write t and nil without single-quotes. (In this - ;; manual, we normally do use single-quotes for those symbols.) + ;; single-quotes around it. For example: ‘lambda’. There are two + ;; exceptions: write t and nil without single-quotes. (For + ;; compatibility with an older Emacs style, quoting with ` and ' + ;; also works, e.g., `lambda' is treated like ‘lambda’.) (save-excursion (let ((found nil) (start (point)) (msg nil) (ms nil)) (while (and (not msg) (re-search-forward ;; Ignore manual page references like ;; git-config(1). - "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^](']" + "[^-([`'‘’:a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^]('’]" e t)) (setq ms (match-string 1)) ;; A . is a \s_ char, so we must remove periods from @@ -1812,7 +1814,7 @@ Replace with \"%s\"? " original replace) (if (checkdoc-autofix-ask-replace (match-beginning 1) (+ (match-beginning 1) (length ms)) - msg (concat "`" ms "'") t) + msg (concat "‘" ms "’") t) (setq msg nil) (setq msg (format "Lisp symbol `%s' should appear in quotes" @@ -1824,7 +1826,7 @@ Replace with \"%s\"? " original replace) nil))) ;; t and nil case (save-excursion - (if (re-search-forward "\\(`\\(t\\|nil\\)'\\)" e t) + (if (re-search-forward "\\([`‘]\\(t\\|nil\\)['’]\\)" e t) (if (checkdoc-autofix-ask-replace (match-beginning 1) (match-end 1) (format "%s should not appear in quotes. Remove? " @@ -1989,7 +1991,7 @@ If the offending word is in a piece of quoted text, then it is skipped." (if (and (not (save-excursion (goto-char b) (forward-char -1) - (looking-at "`\\|\"\\|\\.\\|\\\\"))) + (looking-at "[`\".‘]\\|\\\\"))) ;; surrounded by /, as in a URL or filename: /emacs/ (not (and (= ?/ (char-after e)) (= ?/ (char-before b)))) @@ -2405,7 +2407,7 @@ Argument END is the maximum bounds to search in." According to the documentation for the function `error', the error list should not end with a period, and should start with a capital letter. The function `y-or-n-p' has similar constraints. -Argument TYPE specifies the type of question, such as `error or `y-or-n-p." +Argument TYPE specifies the type of question, such as `error' or `y-or-n-p'." ;; If type is nil, then attempt to derive it. (if (not type) (save-excursion @@ -2613,9 +2615,12 @@ function called to create the messages." (count-lines (point-min) (or point (point-min)))) ": " msg))) (with-current-buffer (get-buffer checkdoc-diagnostic-buffer) - (goto-char (point-max)) - (let ((inhibit-read-only t)) - (apply #'insert text))))) + (let ((inhibit-read-only t) + (pt (point-max))) + (goto-char pt) + (apply #'insert text) + (when noninteractive + (warn (buffer-substring pt (point-max)))))))) (defun checkdoc-show-diagnostics () "Display the checkdoc diagnostic buffer in a temporary window." diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index fb11a3e25a1..96b86aa21cc 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -54,6 +54,15 @@ ;; - The standard method combination supports ":extra STRING" qualifiers ;; which simply allows adding more methods for the same ;; specializers&qualifiers. +;; - Methods can dispatch on the context. For that, a method needs to specify +;; context arguments, introduced by `&context' (which need to come right +;; after the mandatory arguments and before anything like +;; &optional/&rest/&key). Each context argument is given as (EXP SPECIALIZER) +;; which means that EXP is taken as an expression which computes some context +;; and this value is then used to dispatch. +;; E.g. (foo &context (major-mode (eql c-mode))) is an arglist specifying +;; that this method will only be applicable when `major-mode' has value +;; `c-mode'. ;; Efficiency considerations: overall, I've made an effort to make this fairly ;; efficient for the expected case (e.g. no constant redefinition of methods). @@ -222,25 +231,25 @@ BODY, if present, is used as the body of a default method. ,@(mapcar (lambda (method) `(cl-defmethod ,name ,@method)) (nreverse methods))))) -(defun cl--generic-mandatory-args (args) - (let ((res ())) - (while (not (memq (car args) '(nil &rest &optional &key))) - (push (pop args) res)) - (nreverse res))) - ;;;###autoload (defun cl-generic-define (name args options) - (let ((generic (cl-generic-ensure-function name)) - (mandatory (cl--generic-mandatory-args args)) - (apo (assq :argument-precedence-order options))) - (setf (cl--generic-dispatches generic) nil) + (pcase-let* ((generic (cl-generic-ensure-function name)) + (`(,spec-args . ,_) (cl--generic-split-args args)) + (mandatory (mapcar #'car spec-args)) + (apo (assq :argument-precedence-order options))) + (unless (fboundp name) + ;; If the generic function was fmakunbound, throw away previous methods. + (setf (cl--generic-dispatches generic) nil) + (setf (cl--generic-method-table generic) nil)) (when apo (dolist (arg (cdr apo)) (let ((pos (memq arg mandatory))) (unless pos (error "%S is not a mandatory argument" arg)) - (push (list (- (length mandatory) (length pos))) - (cl--generic-dispatches generic))))) - (setf (cl--generic-method-table generic) nil) + (let* ((argno (- (length mandatory) (length pos))) + (dispatches (cl--generic-dispatches generic)) + (dispatch (or (assq argno dispatches) (list argno)))) + (setf (cl--generic-dispatches generic) + (cons dispatch (delq dispatch dispatches))))))) (setf (cl--generic-options generic) options) (cl--generic-make-function generic))) @@ -259,52 +268,70 @@ This macro can only be used within the lexical scope of a cl-generic method." (and (memq sexp vars) (not (memq sexp res)) (push sexp res)) res)) - (defun cl--generic-lambda (args body) - "Make the lambda expression for a method with ARGS and BODY." + (defun cl--generic-split-args (args) + "Return (SPEC-ARGS . PLAIN-ARGS)." (let ((plain-args ()) (specializers nil) (mandatory t)) (dolist (arg args) (push (pcase arg ((or '&optional '&rest '&key) (setq mandatory nil) arg) - ((and `(,name . ,type) (guard mandatory)) + ('&context + (unless mandatory + (error "&context not immediately after mandatory args")) + (setq mandatory 'context) nil) + ((let 'nil mandatory) arg) + ((let 'context mandatory) + (unless (consp arg) + (error "Invalid &context arg: %S" arg)) + (push `((&context . ,(car arg)) . ,(cadr arg)) specializers) + nil) + (`(,name . ,type) (push (cons name (car type)) specializers) name) - (_ arg)) + (_ + (push (cons arg t) specializers) + arg)) plain-args)) - (setq plain-args (nreverse plain-args)) - (let ((fun `(cl-function (lambda ,plain-args ,@body))) - (macroenv (cons `(cl-generic-current-method-specializers - . ,(lambda () specializers)) - macroexpand-all-environment))) - (require 'cl-lib) ;Needed to expand `cl-flet' and `cl-function'. - ;; First macroexpand away the cl-function stuff (e.g. &key and - ;; destructuring args, `declare' and whatnot). - (pcase (macroexpand fun macroenv) - (`#'(lambda ,args . ,body) - (let* ((parsed-body (macroexp-parse-body body)) - (cnm (make-symbol "cl--cnm")) - (nmp (make-symbol "cl--nmp")) - (nbody (macroexpand-all - `(cl-flet ((cl-call-next-method ,cnm) - (cl-next-method-p ,nmp)) - ,@(cdr parsed-body)) - macroenv)) - ;; FIXME: Rather than `grep' after the fact, the - ;; macroexpansion should directly set some flag when cnm - ;; is used. - ;; FIXME: Also, optimize the case where call-next-method is - ;; only called with explicit arguments. - (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody))) - (cons (not (not uses-cnm)) - `#'(lambda (,@(if uses-cnm (list cnm)) ,@args) - ,@(car parsed-body) - ,(if (not (memq nmp uses-cnm)) - nbody - `(let ((,nmp (lambda () - (cl--generic-isnot-nnm-p ,cnm)))) - ,nbody)))))) - (f (error "Unexpected macroexpansion result: %S" f))))))) + (cons (nreverse specializers) + (nreverse (delq nil plain-args))))) + + (defun cl--generic-lambda (args body) + "Make the lambda expression for a method with ARGS and BODY." + (pcase-let* ((`(,spec-args . ,plain-args) + (cl--generic-split-args args)) + (fun `(cl-function (lambda ,plain-args ,@body))) + (macroenv (cons `(cl-generic-current-method-specializers + . ,(lambda () spec-args)) + macroexpand-all-environment))) + (require 'cl-lib) ;Needed to expand `cl-flet' and `cl-function'. + ;; First macroexpand away the cl-function stuff (e.g. &key and + ;; destructuring args, `declare' and whatnot). + (pcase (macroexpand fun macroenv) + (`#'(lambda ,args . ,body) + (let* ((parsed-body (macroexp-parse-body body)) + (cnm (make-symbol "cl--cnm")) + (nmp (make-symbol "cl--nmp")) + (nbody (macroexpand-all + `(cl-flet ((cl-call-next-method ,cnm) + (cl-next-method-p ,nmp)) + ,@(cdr parsed-body)) + macroenv)) + ;; FIXME: Rather than `grep' after the fact, the + ;; macroexpansion should directly set some flag when cnm + ;; is used. + ;; FIXME: Also, optimize the case where call-next-method is + ;; only called with explicit arguments. + (uses-cnm (cl--generic-fgrep (list cnm nmp) nbody))) + (cons (not (not uses-cnm)) + `#'(lambda (,@(if uses-cnm (list cnm)) ,@args) + ,@(car parsed-body) + ,(if (not (memq nmp uses-cnm)) + nbody + `(let ((,nmp (lambda () + (cl--generic-isnot-nnm-p ,cnm)))) + ,nbody)))))) + (f (error "Unexpected macroexpansion result: %S" f)))))) ;;;###autoload @@ -375,21 +402,26 @@ which case this method will be invoked when the argument is `eql' to VAL. ;;;###autoload (defun cl-generic-define-method (name qualifiers args uses-cnm function) - (let* ((generic (cl-generic-ensure-function name)) - (mandatory (cl--generic-mandatory-args args)) - (specializers - (mapcar (lambda (arg) (if (consp arg) (cadr arg) t)) mandatory)) - (method (cl--generic-make-method - specializers qualifiers uses-cnm function)) - (mt (cl--generic-method-table generic)) - (me (cl--generic-member-method specializers qualifiers mt)) - (dispatches (cl--generic-dispatches generic)) - (i 0)) - (dolist (specializer specializers) - (let* ((generalizers (cl-generic-generalizers specializer)) - (x (assq i dispatches))) + (pcase-let* + ((generic (cl-generic-ensure-function name)) + (`(,spec-args . ,_) (cl--generic-split-args args)) + (specializers (mapcar (lambda (spec-arg) + (if (eq '&context (car-safe (car spec-arg))) + spec-arg (cdr spec-arg))) + spec-args)) + (method (cl--generic-make-method + specializers qualifiers uses-cnm function)) + (mt (cl--generic-method-table generic)) + (me (cl--generic-member-method specializers qualifiers mt)) + (dispatches (cl--generic-dispatches generic)) + (i 0)) + (dolist (spec-arg spec-args) + (let* ((key (if (eq '&context (car-safe (car spec-arg))) + (car spec-arg) i)) + (generalizers (cl-generic-generalizers (cdr spec-arg))) + (x (assoc key dispatches))) (unless x - (setq x (cons i (cl-generic-generalizers t))) + (setq x (cons key (cl-generic-generalizers t))) (setf (cl--generic-dispatches generic) (setq dispatches (cons x dispatches)))) (dolist (generalizer generalizers) @@ -400,8 +432,10 @@ which case this method will be invoked when the argument is `eql' to VAL. (> (cl--generic-generalizer-priority x) (cl--generic-generalizer-priority y))))))) (setq i (1+ i)))) - (if me (setcar me method) - (setf (cl--generic-method-table generic) (cons method mt))) + ;; We used to (setcar me method), but that can cause false positives in + ;; the hash-consing table of the method-builder (bug#20644). + ;; See the related FIXME in cl--generic-build-combined-method. + (setf (cl--generic-method-table generic) (cons method (delq (car me) mt))) (cl-pushnew `(cl-defmethod . (,(cl--generic-name generic) . ,specializers)) current-load-list :test #'equal) ;; FIXME: Try to avoid re-constructing a new function if the old one @@ -411,7 +445,14 @@ which case this method will be invoked when the argument is `eql' to VAL. ;; the generic function. current-load-list) ;; For aliases, cl--generic-name gives us the actual name. - (defalias (cl--generic-name generic) gfun)))) + (let ((purify-flag + ;; BEWARE! Don't purify this function definition, since that leads + ;; to memory corruption if the hash-tables it holds are modified + ;; (the GC doesn't trace those pointers). + nil)) + ;; But do use `defalias', so that it interacts properly with nadvice, + ;; e.g. for tracing/debug-on-entry. + (defalias (cl--generic-name generic) gfun))))) (defmacro cl--generic-with-memoization (place &rest code) (declare (indent 1) (debug t)) @@ -427,6 +468,7 @@ which case this method will be invoked when the argument is `eql' to VAL. (defun cl--generic-get-dispatcher (dispatch) (cl--generic-with-memoization (gethash dispatch cl--generic-dispatchers) + ;; (message "cl--generic-get-dispatcher (%S)" dispatch) (let* ((dispatch-arg (car dispatch)) (generalizers (cdr dispatch)) (lexical-binding t) @@ -437,13 +479,14 @@ which case this method will be invoked when the argument is `eql' to VAL. 'arg)) generalizers)) (typescodes - (mapcar (lambda (generalizer) - `(funcall ',(cl--generic-generalizer-specializers-function - generalizer) - ,(funcall (cl--generic-generalizer-tagcode-function - generalizer) - 'arg))) - generalizers)) + (mapcar + (lambda (generalizer) + `(funcall ',(cl--generic-generalizer-specializers-function + generalizer) + ,(funcall (cl--generic-generalizer-tagcode-function + generalizer) + 'arg))) + generalizers)) (tag-exp ;; Minor optimization: since this tag-exp is ;; only used to lookup the method-cache, it @@ -452,23 +495,30 @@ which case this method will be invoked when the argument is `eql' to VAL. `(or ,@(if (macroexp-const-p (car (last tagcodes))) (butlast tagcodes) tagcodes))) - (extraargs ())) - (dotimes (_ dispatch-arg) - (push (make-symbol "arg") extraargs)) + (fixedargs '(arg)) + (dispatch-idx dispatch-arg) + (bindings nil)) + (when (eq '&context (car-safe dispatch-arg)) + (setq bindings `((arg ,(cdr dispatch-arg)))) + (setq fixedargs nil) + (setq dispatch-idx 0)) + (dotimes (i dispatch-idx) + (push (make-symbol (format "arg%d" (- dispatch-idx i 1))) fixedargs)) ;; FIXME: For generic functions with a single method (or with 2 methods, ;; one of which always matches), using a tagcode + hash-table is ;; overkill: better just use a `cl-typep' test. (byte-compile `(lambda (generic dispatches-left methods) (let ((method-cache (make-hash-table :test #'eql))) - (lambda (,@extraargs arg &rest args) - (apply (cl--generic-with-memoization - (gethash ,tag-exp method-cache) - (cl--generic-cache-miss - generic ',dispatch-arg dispatches-left methods - ,(if (cdr typescodes) - `(append ,@typescodes) (car typescodes)))) - ,@extraargs arg args)))))))) + (lambda (,@fixedargs &rest args) + (let ,bindings + (apply (cl--generic-with-memoization + (gethash ,tag-exp method-cache) + (cl--generic-cache-miss + generic ',dispatch-arg dispatches-left methods + ,(if (cdr typescodes) + `(append ,@typescodes) (car typescodes)))) + ,@fixedargs args))))))))) (defun cl--generic-make-function (generic) (cl--generic-make-next-function generic @@ -480,7 +530,7 @@ which case this method will be invoked when the argument is `eql' to VAL. (progn (while (and dispatches (let ((x (nth 1 (car dispatches)))) - ;; No need to dispatch for `t' specializers. + ;; No need to dispatch for t specializers. (or (null x) (equal x cl--generic-t-generalizer)))) (setq dispatches (cdr dispatches))) (pop dispatches)))) @@ -593,8 +643,11 @@ FUN is the function that should be called when METHOD calls dispatch-arg dispatches-left methods-left types) (let ((methods '())) (dolist (method methods-left) - (let* ((specializer (or (nth dispatch-arg - (cl--generic-method-specializers method)) + (let* ((specializer (or (if (integerp dispatch-arg) + (nth dispatch-arg + (cl--generic-method-specializers method)) + (cdr (assoc dispatch-arg + (cl--generic-method-specializers method)))) t)) (m (member specializer types))) (when m @@ -653,10 +706,34 @@ methods.") #'cl--generic-standard-method-combination) (cl-defmethod cl-generic-generalizers (specializer) - "Support for the catch-all `t' specializer." + "Support for the catch-all t specializer." (if (eq specializer t) (list cl--generic-t-generalizer) (error "Unknown specializer %S" specializer))) +(eval-when-compile + ;; This macro is brittle and only really important in order to be + ;; able to preload cl-generic without also preloading the byte-compiler, + ;; So we use `eval-when-compile' so as not keep it available longer than + ;; strictly needed. +(defmacro cl--generic-prefill-dispatchers (arg-or-context specializer) + (unless (integerp arg-or-context) + (setq arg-or-context `(&context . ,arg-or-context))) + (unless (fboundp 'cl--generic-get-dispatcher) + (require 'cl-generic)) + (let ((fun (cl--generic-get-dispatcher + `(,arg-or-context ,@(cl-generic-generalizers specializer) + ,cl--generic-t-generalizer)))) + ;; Recompute dispatch at run-time, since the generalizers may be slightly + ;; different (e.g. byte-compiled rather than interpreted). + ;; FIXME: There is a risk that the run-time generalizer is not equivalent + ;; to the compile-time one, in which case `fun' may not be correct + ;; any more! + `(let ((dispatch `(,',arg-or-context + ,@(cl-generic-generalizers ',specializer) + ,cl--generic-t-generalizer))) + ;; (message "Prefilling for %S with \n%S" dispatch ',fun) + (puthash dispatch ',fun cl--generic-dispatchers))))) + (cl-defmethod cl-generic-combine-methods (generic methods) "Standard support for :after, :before, :around, and `:extra NAME' qualifiers." (cl--generic-standard-method-combination generic methods)) @@ -729,8 +806,6 @@ Can only be used from within the lexical body of a primary or around method." specializers qualifiers (cl--generic-method-table (cl--generic generic))))) -(defalias 'cl-method-qualifiers 'cl--generic-method-qualifiers) - ;;; Add support for describe-function (defun cl--generic-search-method (met-name) @@ -783,6 +858,9 @@ Can only be used from within the lexical body of a primary or around method." (add-hook 'help-fns-describe-function-functions #'cl--generic-describe) (defun cl--generic-describe (function) + ;; Supposedly this is called from help-fns, so help-fns should be loaded at + ;; this point. + (declare-function help-fns-short-filename "help-fns" (filename)) (let ((generic (if (symbolp function) (cl--generic function)))) (when generic (require 'help-mode) ;Needed for `help-function-def' button! @@ -798,11 +876,11 @@ Can only be used from within the lexical body of a primary or around method." (cl--generic-method-specializers method))) (file (find-lisp-object-file-name met-name 'cl-defmethod))) (when file - (insert " in `") + (insert " in ‘") (help-insert-xref-button (help-fns-short-filename file) 'help-function-def met-name file 'cl-defmethod) - (insert "'.\n"))) + (insert "’.\n"))) (insert "\n" (or (nth 2 info) "Undocumented") "\n\n"))))))) ;;; Support for (head <val>) specializers. @@ -840,6 +918,8 @@ Can only be used from within the lexical body of a primary or around method." (gethash (cadr specializer) cl--generic-head-used) specializer) (list cl--generic-head-generalizer))) +(cl--generic-prefill-dispatchers 0 (head eql)) + ;;; Support for (eql <val>) specializers. (defvar cl--generic-eql-used (make-hash-table :test #'eql)) @@ -854,6 +934,9 @@ Can only be used from within the lexical body of a primary or around method." (puthash (cadr specializer) specializer cl--generic-eql-used) (list cl--generic-eql-generalizer)) +(cl--generic-prefill-dispatchers 0 (eql nil)) +(cl--generic-prefill-dispatchers window-system (eql nil)) + ;;; Support for cl-defstructs specializers. (defun cl--generic-struct-tag (name) @@ -910,6 +993,8 @@ Can only be used from within the lexical body of a primary or around method." (list cl--generic-struct-generalizer)))) (cl-call-next-method))) +(cl--generic-prefill-dispatchers 0 cl--generic-generalizer) + ;;; Dispatch on "system types". (defconst cl--generic-typeof-types @@ -948,39 +1033,7 @@ Can only be used from within the lexical body of a primary or around method." (list cl--generic-typeof-generalizer))) (cl-call-next-method))) -;;; Just for kicks: dispatch on major-mode -;; -;; Here's how you'd use it: -;; (cl-defmethod foo ((x (major-mode text-mode)) y z) ...) -;; And then -;; (foo 'major-mode toto titi) -;; -;; FIXME: Better would be to do that via dispatch on an "implicit argument". -;; E.g. (cl-defmethod foo (y z &context (major-mode text-mode)) ...) - -;; (defvar cl--generic-major-modes (make-hash-table :test #'eq)) -;; -;; (add-function :before-until cl-generic-generalizer-function -;; #'cl--generic-major-mode-tagcode) -;; (defun cl--generic-major-mode-tagcode (type name) -;; (if (eq 'major-mode (car-safe type)) -;; `(50 . (if (eq ,name 'major-mode) -;; (cl--generic-with-memoization -;; (gethash major-mode cl--generic-major-modes) -;; `(cl--generic-major-mode . ,major-mode)))))) -;; -;; (add-function :before-until cl-generic-tag-types-function -;; #'cl--generic-major-mode-types) -;; (defun cl--generic-major-mode-types (tag) -;; (when (eq (car-safe tag) 'cl--generic-major-mode) -;; (if (eq tag 'fundamental-mode) '(fundamental-mode t) -;; (let ((types `((major-mode ,(cdr tag))))) -;; (while (get (car types) 'derived-mode-parent) -;; (push (list 'major-mode (get (car types) 'derived-mode-parent)) -;; types)) -;; (unless (eq 'fundamental-mode (car types)) -;; (push '(major-mode fundamental-mode) types)) -;; (nreverse types))))) +(cl--generic-prefill-dispatchers 0 integer) ;; Local variables: ;; generated-autoload-file: "cl-loaddefs.el" diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el index 5e75406cf22..57da7159d5c 100644 --- a/lisp/emacs-lisp/cl-indent.el +++ b/lisp/emacs-lisp/cl-indent.el @@ -140,13 +140,13 @@ If non-nil, alignment is done with the first parameter (defcustom lisp-indent-backquote-substitution-mode t "How to indent substitutions in backquotes. -If `t', the default, indent substituted forms normally. -If `nil', do not apply special indentation rule to substituted +If t, the default, indent substituted forms normally. +If nil, do not apply special indentation rule to substituted forms. If `corrected', subtract the `,' or `,@' from the form column, indenting as if this character sequence were not present. In any case, do not backtrack beyond a backquote substitution. -Until Emacs 25.1, the `nil' behavior was hard-wired." +Until Emacs 25.1, the nil behavior was hard-wired." :version "25.1" :type '(choice (const corrected) (const nil) (const t)) :group 'lisp-indent) diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el index 6b43c126130..b6f3a793be6 100644 --- a/lisp/emacs-lisp/cl-lib.el +++ b/lisp/emacs-lisp/cl-lib.el @@ -731,9 +731,10 @@ If ALIST is non-nil, the new pairs are prepended to it." ;;; Miscellaneous. (provide 'cl-lib) -(or (load "cl-loaddefs" 'noerror 'quiet) - ;; When bootstrapping, cl-loaddefs hasn't been built yet! - (require 'cl-macs)) +(unless (load "cl-loaddefs" 'noerror 'quiet) + ;; When bootstrapping, cl-loaddefs hasn't been built yet! + (require 'cl-macs) + (require 'cl-seq)) ;; Local variables: ;; byte-compile-dynamic: t diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 5bab84ed312..636c5433a97 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -294,7 +294,6 @@ FORM is of the form (ARGS . BODY)." ;; apparently harmless computation, so it should not ;; touch the match-data. (save-match-data - (require 'help-fns) (cons (help-add-fundoc-usage (if (stringp (car header)) (pop header)) ;; Be careful with make-symbol and (back)quote, @@ -1787,7 +1786,8 @@ Labels have lexical scope and dynamic extent." (unless (eq 'go (car-safe (car-safe block))) (push `(go cl--exit) block)) (push (nreverse block) blocks)) - (let ((catch-tag (make-symbol "cl--tagbody-tag"))) + (let ((catch-tag (make-symbol "cl--tagbody-tag")) + (cl--tagbody-alist cl--tagbody-alist)) (push (cons 'cl--exit catch-tag) cl--tagbody-alist) (dolist (block blocks) (push (cons (car block) catch-tag) cl--tagbody-alist)) diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el index 5624accf66a..3aea67ad11b 100644 --- a/lisp/emacs-lisp/cl-seq.el +++ b/lisp/emacs-lisp/cl-seq.el @@ -1018,4 +1018,6 @@ Atoms are compared by `eql'; cons cells are compared recursively. ;; generated-autoload-file: "cl-loaddefs.el" ;; End: +(provide 'cl-seq) + ;;; cl-seq.el ends here diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el index 564a44457d8..c966ace3852 100644 --- a/lisp/emacs-lisp/cl.el +++ b/lisp/emacs-lisp/cl.el @@ -626,6 +626,8 @@ You can replace this form with `gv-define-setter'. ;; ...the rest, and build the 5-tuple)) (make-obsolete 'get-setf-method 'gv-letplace "24.3") +(declare-function cl--arglist-args "cl-macs" (args)) + (defmacro define-modify-macro (name arglist func &optional doc) "Define a `setf'-like modify macro. If NAME is called, it combines its PLACE argument with the other @@ -639,6 +641,7 @@ You can replace this macro with `gv-letplace'." symbolp &optional stringp))) (if (memq '&key arglist) (error "&key not allowed in define-modify-macro")) + (require 'cl-macs) ;For cl--arglist-args. (let ((place (make-symbol "--cl-place--"))) `(cl-defmacro ,name (,place ,@arglist) ,doc diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index ce5c7863c3c..77d6332feee 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -54,7 +54,7 @@ the middle is discarded, and just the beginning and end are displayed." The value affects the behavior of operations on any window previously showing the debugger buffer. -`nil' means that if its window is not deleted when exiting the +nil means that if its window is not deleted when exiting the debugger, invoking `switch-to-prev-buffer' will usually show the debugger buffer again. @@ -731,7 +731,8 @@ Complete list of commands: (buffer-substring (line-beginning-position 0) (line-end-position 0))))) -(declare-function help-xref-interned "help-mode" (symbol)) +(declare-function help-xref-interned "help-mode" + (symbol &optional buffer frame)) (defun debug-help-follow (&optional pos) "Follow cross-reference at POS, defaulting to point. diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 98fb7e9888c..b5b68d268f6 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -561,7 +561,7 @@ already is one.)" (defun edebug-install-read-eval-functions () (interactive) (add-function :around load-read-function #'edebug--read) - (advice-add 'eval-defun :override 'edebug-eval-defun)) + (advice-add 'eval-defun :override #'edebug-eval-defun)) (defun edebug-uninstall-read-eval-functions () (interactive) @@ -600,7 +600,7 @@ list of a symbol.") (defun edebug-get-form-data-entry (pnt &optional end-point) ;; Find the edebug form data entry which is closest to PNT. ;; If END-POINT is supplied, match must be exact. - ;; Return `nil' if none found. + ;; Return nil if none found. (let ((rest edebug-form-data) closest-entry (closest-dist 999999)) ;; Need maxint here. diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index 59d834837b0..bf3f44206c4 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el @@ -88,7 +88,7 @@ Currently under control of this var: (cl-defstruct (eieio--class (:constructor nil) - (:constructor eieio--class-make (name &aux (tag 'defclass))) + (:constructor eieio--class-make (name)) (:include cl--class) (:copier nil)) children @@ -277,12 +277,12 @@ See `defclass' for more information." (setq eieio-hook nil) (let* ((oldc (let ((c (eieio--class-v cname))) (if (eieio--class-p c) c))) - (newc (if (and oldc (not (eieio--class-default-object-cache oldc))) - ;; The oldc class is a stub setup by eieio-defclass-autoload. - ;; Reuse it instead of creating a new one, so that existing - ;; references stay valid. - oldc - (eieio--class-make cname))) + (newc (or oldc + ;; Reuse `oldc' instead of creating a new one, so that + ;; existing references stay valid. E.g. when + ;; reloading the file that does the `defclass', we don't + ;; want to create a new class object. + (eieio--class-make cname))) (groups nil) ;; list of groups id'd from slots (clearparent nil)) @@ -292,7 +292,13 @@ See `defclass' for more information." ;; method table breakage, particularly when the users is only ;; byte compiling an EIEIO file. (if oldc - (setf (eieio--class-children newc) (eieio--class-children oldc)) + (progn + (cl-assert (eq newc oldc)) + ;; Reset the fields. + (setf (eieio--class-parents newc) nil) + (setf (eieio--class-slots newc) nil) + (setf (eieio--class-initarg-tuples newc) nil) + (setf (eieio--class-class-slots newc) nil)) ;; If the old class did not exist, but did exist in the autoload map, ;; then adopt those children. This is like the above, but deals with ;; autoloads nicely. @@ -724,7 +730,7 @@ Argument FN is the function calling this verifier." (cl-check-type slot symbol) (cl-check-type obj (or eieio-object class)) (let* ((class (cond ((symbolp obj) - (error "eieio-oref called on a class!") + (error "eieio-oref called on a class: %s" obj) (let ((c (eieio--class-v obj))) (if (eieio--class-p c) (eieio-class-un-autoload obj)) c)) diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el index 26fc452f7b1..31d0b85c55a 100644 --- a/lisp/emacs-lisp/eieio-custom.el +++ b/lisp/emacs-lisp/eieio-custom.el @@ -223,6 +223,7 @@ Optional argument IGNORE is an extraneous parameter." ;; Loop over all the slots, creating child widgets. (dotimes (i (length slots)) (let* ((slot (aref slots i)) + (sname (eieio-slot-descriptor-name slot)) (props (cl--slot-descriptor-props slot))) ;; Output this slot if it has a customize flag associated with it. (when (and (alist-get :custom props) @@ -261,13 +262,13 @@ Optional argument IGNORE is an extraneous parameter." (or (eieio--class-slot-initarg (eieio--object-class obj) - (car slots)) - (car slots))))) + sname) + sname)))) (capitalize (if (string-match "^:" s) (substring s (match-end 0)) s))))) - :value (slot-value obj (car slots)) + :value (slot-value obj sname) :doc (or (alist-get :documentation props) "Slot not Documented.") :eieio-custom-visibility 'visible @@ -297,6 +298,13 @@ Optional argument IGNORE is an extraneous parameter." (let* ((slot (aref slots i)) (props (cl--slot-descriptor-props slot)) (cust (alist-get :custom props))) + ;; + ;; Shouldn't I be incremented unconditionally? Or + ;; better shouldn't we simply mapc on the slots vector + ;; avoiding use of this integer variable? PLN Sat May + ;; 2 07:35:45 2015 + ;; + (setq i (+ i 1)) (if (and cust (or eieio-custom-ignore-eieio-co (not master-group) diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el index 7f98730340d..11d99849a97 100644 --- a/lisp/emacs-lisp/eieio-opt.el +++ b/lisp/emacs-lisp/eieio-opt.el @@ -74,6 +74,9 @@ Argument CH-PREFIX is another character prefix to display." ;;; CLASS COMPLETION / DOCUMENTATION +;; Called via help-fns-describe-function-functions. +(declare-function help-fns-short-filename "help-fns" (filename)) + ;;;###autoload (defun eieio-help-class (class) "Print help description for CLASS. @@ -87,11 +90,11 @@ If CLASS is actually an object, then also display current values of that object. " class") (let ((location (find-lisp-object-file-name class 'eieio-defclass))) (when location - (insert " in `") + (insert " in ‘") (help-insert-xref-button (help-fns-short-filename location) 'eieio-class-def class location 'eieio-defclass) - (insert "'"))) + (insert "’"))) (insert ".\n") ;; Parents (let ((pl (eieio-class-parents class)) @@ -100,10 +103,10 @@ If CLASS is actually an object, then also display current values of that object. (insert " Inherits from ") (while (setq cur (pop pl)) (setq cur (eieio--class-name cur)) - (insert "`") + (insert "‘") (help-insert-xref-button (symbol-name cur) 'help-function cur) - (insert (if pl "', " "'"))) + (insert (if pl "’, " "’"))) (insert ".\n"))) ;; Children (let ((ch (eieio-class-children class)) @@ -111,10 +114,10 @@ If CLASS is actually an object, then also display current values of that object. (when ch (insert " Children ") (while (setq cur (pop ch)) - (insert "`") + (insert "‘") (help-insert-xref-button (symbol-name cur) 'help-function cur) - (insert (if ch "', " "'"))) + (insert (if ch "’, " "’"))) (insert ".\n"))) ;; System documentation (let ((doc (documentation-property class 'variable-documentation))) @@ -127,9 +130,9 @@ If CLASS is actually an object, then also display current values of that object. (when generics (insert (propertize "Specialized Methods:\n\n" 'face 'bold)) (dolist (generic generics) - (insert "`") + (insert "‘") (help-insert-xref-button (symbol-name generic) 'help-function generic) - (insert "'") + (insert "’") (pcase-dolist (`(,qualifiers ,args ,doc) (eieio-method-documentation generic class)) (insert (format " %s%S\n" qualifiers args) @@ -242,11 +245,11 @@ are not abstract." (setq location (find-lisp-object-file-name ctr def))) (when location - (insert " in `") + (insert " in ‘") (help-insert-xref-button (help-fns-short-filename location) 'eieio-class-def ctr location 'eieio-defclass) - (insert "'")) + (insert "’")) (insert ".\nCreates an object of class " (symbol-name ctr) ".") (goto-char (point-max)) (if (autoloadp def) diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 111459509bc..8387d81c0c0 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -967,7 +967,7 @@ variable PRINT-FUNCTION. Optional argument NOESCAPE is passed to ;;; Start of automatically extracted autoloads. -;;;### (autoloads nil "eieio-custom" "eieio-custom.el" "813d32fbf76d4248fc6b4dc97ebcd720") +;;;### (autoloads nil "eieio-custom" "eieio-custom.el" "916f54b818479a77a02f3ecccda84a11") ;;; Generated autoloads from eieio-custom.el (autoload 'customize-object "eieio-custom" "\ @@ -978,7 +978,7 @@ Optional argument GROUP is the sub-group of slots to display. ;;;*** -;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "3005b815c6b30eccbf0642170b3f82a5") +;;;### (autoloads nil "eieio-opt" "eieio-opt.el" "4b96541a14ecb2ac82ce5da7da79fd88") ;;; Generated autoloads from eieio-opt.el (autoload 'eieio-browse "eieio-opt" "\ diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index d527d676d51..0091cdb8484 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -354,7 +354,32 @@ return any documentation.") nil)) (eldoc-message (funcall eldoc-documentation-function))))) - +;; If the entire line cannot fit in the echo area, the symbol name may be +;; truncated or eliminated entirely from the output to make room for the +;; description. +(defun eldoc-docstring-format-sym-doc (prefix doc &optional face) + (when (symbolp prefix) + (setq prefix (concat (propertize (symbol-name prefix) 'face face) ": "))) + (let* ((ea-multi eldoc-echo-area-use-multiline-p) + ;; Subtract 1 from window width since emacs will not write + ;; any chars to the last column, or in later versions, will + ;; cause a wraparound and resize of the echo area. + (ea-width (1- (window-width (minibuffer-window)))) + (strip (- (+ (length prefix) (length doc)) ea-width))) + (cond ((or (<= strip 0) + (eq ea-multi t) + (and ea-multi (> (length doc) ea-width))) + (concat prefix doc)) + ((> (length doc) ea-width) + (substring (format "%s" doc) 0 ea-width)) + ((>= strip (string-match-p ":? *\\'" prefix)) + doc) + (t + ;; Show the end of the partial symbol name, rather + ;; than the beginning, since the former is more likely + ;; to be unique given package namespace conventions. + (concat (substring prefix strip) doc))))) + ;; When point is in a sexp, the function args are not reprinted in the echo ;; area after every possible interactive command because some of them print ;; their own messages in the echo area; the eldoc functions would instantly diff --git a/lisp/emacs-lisp/elint.el b/lisp/emacs-lisp/elint.el index 136467046b4..fc66c82c81d 100644 --- a/lisp/emacs-lisp/elint.el +++ b/lisp/emacs-lisp/elint.el @@ -46,8 +46,6 @@ ;;; Code: -(require 'help-fns) - (defgroup elint nil "Linting for Emacs Lisp." :prefix "elint-" @@ -374,7 +372,7 @@ Returns the forms." (let ((elint-current-pos (point))) ;; non-list check could be here too. errors may be out of seq. ;; quoted check cannot be elsewhere, since quotes skipped. - (if (looking-back "'") + (if (looking-back "'" (1- (point))) ;; Eg cust-print.el uses ' as a comment syntax. (elint-warning "Skipping quoted form `'%.20s...'" (read (current-buffer))) diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index 4ffd8cd8558..99c5ede33a0 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -269,7 +269,7 @@ DATA is displayed to the user and should state the reason for skipping." (defun ert--special-operator-p (thing) "Return non-nil if THING is a symbol naming a special operator." (and (symbolp thing) - (let ((definition (indirect-function thing t))) + (let ((definition (indirect-function thing))) (and (subrp definition) (eql (cdr (subr-arity definition)) 'unevalled))))) @@ -1849,7 +1849,9 @@ non-nil, returns the face for expected results.." (when (ert-test-documentation test) (insert " " (propertize - (ert--string-first-line (ert-test-documentation test)) + (ert--string-first-line + (substitute-command-keys + (ert-test-documentation test))) 'font-lock-face 'font-lock-doc-face) "\n")) (cl-etypecase result @@ -2063,7 +2065,7 @@ and how to display message." "--" ["Show backtrace" ert-results-pop-to-backtrace-for-test-at-point] ["Show messages" ert-results-pop-to-messages-for-test-at-point] - ["Show `should' forms" ert-results-pop-to-should-forms-for-test-at-point] + ["Show ‘should’ forms" ert-results-pop-to-should-forms-for-test-at-point] ["Describe test" ert-results-describe-test-at-point] "--" ["Delete test" ert-delete-test] @@ -2375,9 +2377,9 @@ To be used in the ERT results buffer." (ert--print-backtrace backtrace) (debugger-make-xrefs) (goto-char (point-min)) - (insert "Backtrace for test `") + (insert "Backtrace for test ‘") (ert-insert-test-name-button (ert-test-name test)) - (insert "':\n"))))))) + (insert "’:\n"))))))) (defun ert-results-pop-to-messages-for-test-at-point () "Display the part of the *Messages* buffer generated during the test at point. @@ -2396,9 +2398,9 @@ To be used in the ERT results buffer." (ert-simple-view-mode) (insert (ert-test-result-messages result)) (goto-char (point-min)) - (insert "Messages for test `") + (insert "Messages for test ‘") (ert-insert-test-name-button (ert-test-name test)) - (insert "':\n"))))) + (insert "’:\n"))))) (defun ert-results-pop-to-should-forms-for-test-at-point () "Display the list of `should' forms executed during the test at point. @@ -2426,9 +2428,9 @@ To be used in the ERT results buffer." (ert--pp-with-indentation-and-newline form-description) (ert--make-xrefs-region begin (point))))) (goto-char (point-min)) - (insert "`should' forms executed during test `") + (insert "‘should’ forms executed during test ‘") (ert-insert-test-name-button (ert-test-name test)) - (insert "':\n") + (insert "’:\n") (insert "\n") (insert (concat "(Values are shallow copies and may have " "looked different during the test if they\n" @@ -2505,9 +2507,9 @@ To be used in the ERT results buffer." (let ((file-name (and test-name (symbol-file test-name 'ert-deftest)))) (when file-name - (insert " defined in `" (file-name-nondirectory file-name) "'") + (insert " defined in ‘" (file-name-nondirectory file-name) "’") (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function-def test-name file-name))) (insert ".") (fill-region-as-paragraph (point-min) (point)) @@ -2519,8 +2521,9 @@ To be used in the ERT results buffer." "this documentation refers to an old definition.") (fill-region-as-paragraph begin (point))) (insert "\n\n")) - (insert (or (ert-test-documentation test-definition) - "It is not documented.") + (insert (substitute-command-keys + (or (ert-test-documentation test-definition) + "It is not documented.")) "\n"))))))) (defun ert-results-describe-test-at-point () @@ -2537,7 +2540,7 @@ To be used in the ERT results buffer." (add-to-list 'minor-mode-alist '(ert--current-run-stats (:eval (ert--tests-running-mode-line-indicator)))) -(add-to-list 'emacs-lisp-mode-hook 'ert--activate-font-lock-keywords) +(add-hook 'emacs-lisp-mode-hook #'ert--activate-font-lock-keywords) (defun ert--unload-function () "Unload function to undo the side-effects of loading ert.el." @@ -2548,7 +2551,7 @@ To be used in the ERT results buffer." nil) (defvar ert-unload-hook '()) -(add-hook 'ert-unload-hook 'ert--unload-function) +(add-hook 'ert-unload-hook #'ert--unload-function) (provide 'ert) diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index 8251682590e..08e1b7c27a9 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el @@ -90,7 +90,7 @@ ;; Change this function to use `cl-gensym' if you want the generated ;; code to be easier to read and debug. ;; (cl-gensym (apply #'format fmt args)) - `(make-symbol ,fmt)) + `(progn (ignore ,@args) (make-symbol ,fmt))) (defvar cps--dynamic-wrappers '(identity) "List of transformer functions to apply to atomic forms we @@ -308,14 +308,14 @@ don't yield.") collect (if (symbolp binding) (list binding nil) binding))) - (temps (cl-loop for (var value-form) in bindings + (temps (cl-loop for (var _value-form) in bindings collect (cps--add-binding var)))) (cps--transform-1 `(let* ,(append - (cl-loop for (var value-form) in bindings + (cl-loop for (_var value-form) in bindings for temp in temps collect (list temp value-form)) - (cl-loop for (var binding) in bindings + (cl-loop for (var _binding) in bindings for temp in temps collect (list var temp))) ,@body) @@ -704,7 +704,7 @@ of values. Callers can retrieve each value using `iter-next'." (defun iter-next (iterator &optional yield-result) "Extract a value from an iterator. -YIELD-RESULT becomes the return value of `iter-yield` in the +YIELD-RESULT becomes the return value of `iter-yield' in the context of the generator. This routine raises the `iter-end-of-sequence' condition if the diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index fec172d05ca..104c23c2102 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -437,9 +437,9 @@ This can be found in an RCS or SCCS header." ((re-search-forward (concat "@(#)" - (if buffer-file-name + (if buffer-file-name (regexp-quote (file-name-nondirectory buffer-file-name)) - "[^\t\n]*") + "[^\t\n]+") "\t\\([012345679.]*\\)") header-max t) (match-string-no-properties 1))))))) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index 26a21d52370..ab01a109b7a 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -229,248 +229,246 @@ (match-beginning 0))))) (throw 'found t)))))) -(pcase-let - ((`(,vdefs ,tdefs - ,el-defs-re ,cl-defs-re - ,el-kws-re ,cl-kws-re - ,el-errs-re ,cl-errs-re) - (eval-when-compile - (let ((lisp-fdefs '("defmacro" "defsubst" "defun")) - (lisp-vdefs '("defvar")) - (lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1" - "prog2" "lambda" "unwind-protect" "condition-case" - "when" "unless" "with-output-to-string" - "ignore-errors" "dotimes" "dolist" "declare")) - (lisp-errs '("warn" "error" "signal")) - ;; Elisp constructs. Now they are update dynamically - ;; from obarray but they are also used for setting up - ;; the keywords for Common Lisp. - (el-fdefs '("define-advice" "defadvice" "defalias" - "define-derived-mode" "define-minor-mode" - "define-generic-mode" "define-global-minor-mode" - "define-globalized-minor-mode" "define-skeleton" - "define-widget")) - (el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local" - "defface")) - (el-tdefs '("defgroup" "deftheme")) - (el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive" - "pcase-lambda" "pcase-let" "pcase-let*" "save-restriction" - "save-excursion" "save-selected-window" - ;; "eval-after-load" "eval-next-after-load" - "save-window-excursion" "save-current-buffer" - "save-match-data" "combine-after-change-calls" - "condition-case-unless-debug" "track-mouse" - "eval-and-compile" "eval-when-compile" "with-case-table" - "with-category-table" "with-coding-priority" - "with-current-buffer" "with-demoted-errors" - "with-electric-help" "with-eval-after-load" - "with-file-modes" - "with-local-quit" "with-no-warnings" - "with-output-to-temp-buffer" "with-selected-window" - "with-selected-frame" "with-silent-modifications" - "with-syntax-table" "with-temp-buffer" "with-temp-file" - "with-temp-message" "with-timeout" - "with-timeout-handler")) - (el-errs '("user-error")) - ;; Common-Lisp constructs supported by EIEIO. FIXME: namespace. - (eieio-fdefs '("defgeneric" "defmethod")) - (eieio-tdefs '("defclass")) - (eieio-kw '("with-slots")) - ;; Common-Lisp constructs supported by cl-lib. - (cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod")) - (cl-lib-tdefs '("defstruct" "deftype")) - (cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase" - "etypecase" "ccase" "ctypecase" "loop" "do" "do*" - "the" "locally" "proclaim" "declaim" "letf" "go" - ;; "lexical-let" "lexical-let*" - "symbol-macrolet" "flet" "flet*" "destructuring-bind" - "labels" "macrolet" "tagbody" "multiple-value-bind" - "block" "return" "return-from")) - (cl-lib-errs '("assert" "check-type")) - ;; Common-Lisp constructs not supported by cl-lib. - (cl-fdefs '("defsetf" "define-method-combination" - "define-condition" "define-setf-expander" - ;; "define-function"?? - "define-compiler-macro" "define-modify-macro")) - (cl-vdefs '("define-symbol-macro" "defconstant" "defparameter")) - (cl-tdefs '("defpackage" "defstruct" "deftype")) - (cl-kw '("prog" "prog*" "handler-case" "handler-bind" - "in-package" "restart-case" ;; "inline" - "restart-bind" "break" "multiple-value-prog1" - "compiler-let" "with-accessors" "with-compilation-unit" - "with-condition-restarts" "with-hash-table-iterator" - "with-input-from-string" "with-open-file" - "with-open-stream" "with-package-iterator" - "with-simple-restart" "with-standard-io-syntax")) - (cl-errs '("abort" "cerror"))) - - (list (append lisp-vdefs el-vdefs cl-vdefs) - (append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs - (mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs)) - - ;; Elisp and Common Lisp definers. - (regexp-opt (append lisp-fdefs lisp-vdefs - el-fdefs el-vdefs el-tdefs - (mapcar (lambda (s) (concat "cl-" s)) - (append cl-lib-fdefs cl-lib-tdefs)) - eieio-fdefs eieio-tdefs) - t) - (regexp-opt (append lisp-fdefs lisp-vdefs - cl-lib-fdefs cl-lib-tdefs - eieio-fdefs eieio-tdefs - cl-fdefs cl-vdefs cl-tdefs) - t) - - ;; Elisp and Common Lisp keywords. - (regexp-opt (append - lisp-kw el-kw eieio-kw - (cons "go" (mapcar (lambda (s) (concat "cl-" s)) - (remove "go" cl-lib-kw)))) - t) - (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw) - t) - - ;; Elisp and Common Lisp "errors". - (regexp-opt (append (mapcar (lambda (s) (concat "cl-" s)) - cl-lib-errs) - lisp-errs el-errs) - t) - (regexp-opt (append lisp-errs cl-lib-errs cl-errs) t)))))) - - (dolist (v vdefs) - (put (intern v) 'lisp-define-type 'var)) - (dolist (v tdefs) - (put (intern v) 'lisp-define-type 'type)) - - (define-obsolete-variable-alias 'lisp-font-lock-keywords-1 - 'lisp-el-font-lock-keywords-1 "24.4") - (defconst lisp-el-font-lock-keywords-1 - `( ;; Definitions. - (,(concat "(" el-defs-re "\\_>" - ;; Any whitespace and defined object. - "[ \t']*" - "\\(([ \t']*\\)?" ;; An opening paren. - "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") - (1 font-lock-keyword-face) - (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) - (cond ((eq type 'var) font-lock-variable-name-face) - ((eq type 'type) font-lock-type-face) - ;; If match-string 2 is non-nil, we encountered a - ;; form like (defalias (intern (concat s "-p"))), - ;; unless match-string 4 is also there. Then its a - ;; defmethod with (setf foo) as name. - ((or (not (match-string 2)) ;; Normal defun. - (and (match-string 2) ;; Setf method. - (match-string 4))) font-lock-function-name-face))) - nil t)) - ;; Emacs Lisp autoload cookies. Supports the slightly different - ;; forms used by mh-e, calendar, etc. - ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend)) - "Subdued level highlighting for Emacs Lisp mode.") - - (defconst lisp-cl-font-lock-keywords-1 - `( ;; Definitions. - (,(concat "(" cl-defs-re "\\_>" - ;; Any whitespace and defined object. - "[ \t']*" - "\\(([ \t']*\\)?" ;; An opening paren. - "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") - (1 font-lock-keyword-face) - (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) - (cond ((eq type 'var) font-lock-variable-name-face) - ((eq type 'type) font-lock-type-face) - ((or (not (match-string 2)) ;; Normal defun. - (and (match-string 2) ;; Setf function. - (match-string 4))) font-lock-function-name-face))) - nil t))) - "Subdued level highlighting for Lisp modes.") - - (define-obsolete-variable-alias 'lisp-font-lock-keywords-2 - 'lisp-el-font-lock-keywords-2 "24.4") - (defconst lisp-el-font-lock-keywords-2 - (append - lisp-el-font-lock-keywords-1 - `( ;; Regexp negated char group. - ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) - ;; Control structures. Common Lisp forms. - (lisp--el-match-keyword . 1) - ;; Exit/Feature symbols as constants. - (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>" - "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") - (1 font-lock-keyword-face) - (2 font-lock-constant-face nil t)) - ;; Erroneous structures. - (,(concat "(" el-errs-re "\\_>") - (1 font-lock-warning-face)) - ;; Words inside \\[] tend to be for `substitute-command-keys'. - ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]" - (1 font-lock-constant-face prepend)) - ;; Words inside `' tend to be symbol names. - ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" - (1 font-lock-constant-face prepend)) - ;; Constant values. - ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) - ;; ELisp and CLisp `&' keywords as types. - ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) - ;; ELisp regexp grouping constructs - (,(lambda (bound) - (catch 'found - ;; The following loop is needed to continue searching after matches - ;; that do not occur in strings. The associated regexp matches one - ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to - ;; avoid highlighting, for example, `\\(' in `\\\\('. - (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t) - (unless (match-beginning 2) - (let ((face (get-text-property (1- (point)) 'face))) - (when (or (and (listp face) - (memq 'font-lock-string-face face)) - (eq 'font-lock-string-face face)) - (throw 'found t))))))) - (1 'font-lock-regexp-grouping-backslash prepend) - (3 'font-lock-regexp-grouping-construct prepend)) - ;; This is too general -- rms. - ;; A user complained that he has functions whose names start with `do' - ;; and that they get the wrong color. - ;; ;; CL `with-' and `do-' constructs - ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) - (lisp--match-hidden-arg - (0 '(face font-lock-warning-face - help-echo "Hidden behind deeper element; move to another line?"))) - )) - "Gaudy level highlighting for Emacs Lisp mode.") - - (defconst lisp-cl-font-lock-keywords-2 - (append - lisp-cl-font-lock-keywords-1 - `( ;; Regexp negated char group. - ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) - ;; Control structures. Common Lisp forms. - (,(concat "(" cl-kws-re "\\_>") . 1) - ;; Exit/Feature symbols as constants. - (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>" - "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") - (1 font-lock-keyword-face) - (2 font-lock-constant-face nil t)) - ;; Erroneous structures. - (,(concat "(" cl-errs-re "\\_>") - (1 font-lock-warning-face)) - ;; Words inside `' tend to be symbol names. - ("`\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)'" - (1 font-lock-constant-face prepend)) - ;; Constant values. - ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) - ;; ELisp and CLisp `&' keywords as types. - ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) - ;; This is too general -- rms. - ;; A user complained that he has functions whose names start with `do' - ;; and that they get the wrong color. - ;; ;; CL `with-' and `do-' constructs - ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) - (lisp--match-hidden-arg - (0 '(face font-lock-warning-face - help-echo "Hidden behind deeper element; move to another line?"))) - )) - "Gaudy level highlighting for Lisp modes.")) +(let-when-compile + ((lisp-fdefs '("defmacro" "defsubst" "defun")) + (lisp-vdefs '("defvar")) + (lisp-kw '("cond" "if" "while" "let" "let*" "progn" "prog1" + "prog2" "lambda" "unwind-protect" "condition-case" + "when" "unless" "with-output-to-string" + "ignore-errors" "dotimes" "dolist" "declare")) + (lisp-errs '("warn" "error" "signal")) + ;; Elisp constructs. Now they are update dynamically + ;; from obarray but they are also used for setting up + ;; the keywords for Common Lisp. + (el-fdefs '("define-advice" "defadvice" "defalias" + "define-derived-mode" "define-minor-mode" + "define-generic-mode" "define-global-minor-mode" + "define-globalized-minor-mode" "define-skeleton" + "define-widget")) + (el-vdefs '("defconst" "defcustom" "defvaralias" "defvar-local" + "defface")) + (el-tdefs '("defgroup" "deftheme")) + (el-kw '("while-no-input" "letrec" "pcase" "pcase-exhaustive" + "pcase-lambda" "pcase-let" "pcase-let*" "save-restriction" + "save-excursion" "save-selected-window" + ;; "eval-after-load" "eval-next-after-load" + "save-window-excursion" "save-current-buffer" + "save-match-data" "combine-after-change-calls" + "condition-case-unless-debug" "track-mouse" + "eval-and-compile" "eval-when-compile" "with-case-table" + "with-category-table" "with-coding-priority" + "with-current-buffer" "with-demoted-errors" + "with-electric-help" "with-eval-after-load" + "with-file-modes" + "with-local-quit" "with-no-warnings" + "with-output-to-temp-buffer" "with-selected-window" + "with-selected-frame" "with-silent-modifications" + "with-syntax-table" "with-temp-buffer" "with-temp-file" + "with-temp-message" "with-timeout" + "with-timeout-handler")) + (el-errs '("user-error")) + ;; Common-Lisp constructs supported by EIEIO. FIXME: namespace. + (eieio-fdefs '("defgeneric" "defmethod")) + (eieio-tdefs '("defclass")) + (eieio-kw '("with-slots")) + ;; Common-Lisp constructs supported by cl-lib. + (cl-lib-fdefs '("defmacro" "defsubst" "defun" "defmethod")) + (cl-lib-tdefs '("defstruct" "deftype")) + (cl-lib-kw '("progv" "eval-when" "case" "ecase" "typecase" + "etypecase" "ccase" "ctypecase" "loop" "do" "do*" + "the" "locally" "proclaim" "declaim" "letf" "go" + ;; "lexical-let" "lexical-let*" + "symbol-macrolet" "flet" "flet*" "destructuring-bind" + "labels" "macrolet" "tagbody" "multiple-value-bind" + "block" "return" "return-from")) + (cl-lib-errs '("assert" "check-type")) + ;; Common-Lisp constructs not supported by cl-lib. + (cl-fdefs '("defsetf" "define-method-combination" + "define-condition" "define-setf-expander" + ;; "define-function"?? + "define-compiler-macro" "define-modify-macro")) + (cl-vdefs '("define-symbol-macro" "defconstant" "defparameter")) + (cl-tdefs '("defpackage" "defstruct" "deftype")) + (cl-kw '("prog" "prog*" "handler-case" "handler-bind" + "in-package" "restart-case" ;; "inline" + "restart-bind" "break" "multiple-value-prog1" + "compiler-let" "with-accessors" "with-compilation-unit" + "with-condition-restarts" "with-hash-table-iterator" + "with-input-from-string" "with-open-file" + "with-open-stream" "with-package-iterator" + "with-simple-restart" "with-standard-io-syntax")) + (cl-errs '("abort" "cerror"))) + (let ((vdefs (eval-when-compile + (append lisp-vdefs el-vdefs cl-vdefs))) + (tdefs (eval-when-compile + (append el-tdefs eieio-tdefs cl-tdefs cl-lib-tdefs + (mapcar (lambda (s) (concat "cl-" s)) cl-lib-tdefs)))) + ;; Elisp and Common Lisp definers. + (el-defs-re (eval-when-compile + (regexp-opt (append lisp-fdefs lisp-vdefs + el-fdefs el-vdefs el-tdefs + (mapcar (lambda (s) (concat "cl-" s)) + (append cl-lib-fdefs cl-lib-tdefs)) + eieio-fdefs eieio-tdefs) + t))) + (cl-defs-re (eval-when-compile + (regexp-opt (append lisp-fdefs lisp-vdefs + cl-lib-fdefs cl-lib-tdefs + eieio-fdefs eieio-tdefs + cl-fdefs cl-vdefs cl-tdefs) + t))) + ;; Elisp and Common Lisp keywords. + ;; (el-kws-re (eval-when-compile + ;; (regexp-opt (append + ;; lisp-kw el-kw eieio-kw + ;; (cons "go" (mapcar (lambda (s) (concat "cl-" s)) + ;; (remove "go" cl-lib-kw)))) + ;; t))) + (cl-kws-re (eval-when-compile + (regexp-opt (append lisp-kw cl-kw eieio-kw cl-lib-kw) + t))) + ;; Elisp and Common Lisp "errors". + (el-errs-re (eval-when-compile + (regexp-opt (append (mapcar (lambda (s) (concat "cl-" s)) + cl-lib-errs) + lisp-errs el-errs) + t))) + (cl-errs-re (eval-when-compile + (regexp-opt (append lisp-errs cl-lib-errs cl-errs) t)))) + (dolist (v vdefs) + (put (intern v) 'lisp-define-type 'var)) + (dolist (v tdefs) + (put (intern v) 'lisp-define-type 'type)) + + (define-obsolete-variable-alias 'lisp-font-lock-keywords-1 + 'lisp-el-font-lock-keywords-1 "24.4") + (defconst lisp-el-font-lock-keywords-1 + `( ;; Definitions. + (,(concat "(" el-defs-re "\\_>" + ;; Any whitespace and defined object. + "[ \t']*" + "\\(([ \t']*\\)?" ;; An opening paren. + "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") + (1 font-lock-keyword-face) + (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) + (cond ((eq type 'var) font-lock-variable-name-face) + ((eq type 'type) font-lock-type-face) + ;; If match-string 2 is non-nil, we encountered a + ;; form like (defalias (intern (concat s "-p"))), + ;; unless match-string 4 is also there. Then its a + ;; defmethod with (setf foo) as name. + ((or (not (match-string 2)) ;; Normal defun. + (and (match-string 2) ;; Setf method. + (match-string 4))) font-lock-function-name-face))) + nil t)) + ;; Emacs Lisp autoload cookies. Supports the slightly different + ;; forms used by mh-e, calendar, etc. + ("^;;;###\\([-a-z]*autoload\\)" 1 font-lock-warning-face prepend)) + "Subdued level highlighting for Emacs Lisp mode.") + + (defconst lisp-cl-font-lock-keywords-1 + `( ;; Definitions. + (,(concat "(" cl-defs-re "\\_>" + ;; Any whitespace and defined object. + "[ \t']*" + "\\(([ \t']*\\)?" ;; An opening paren. + "\\(\\(setf\\)[ \t]+\\(?:\\sw\\|\\s_\\)+\\|\\(?:\\sw\\|\\s_\\)+\\)?") + (1 font-lock-keyword-face) + (3 (let ((type (get (intern-soft (match-string 1)) 'lisp-define-type))) + (cond ((eq type 'var) font-lock-variable-name-face) + ((eq type 'type) font-lock-type-face) + ((or (not (match-string 2)) ;; Normal defun. + (and (match-string 2) ;; Setf function. + (match-string 4))) font-lock-function-name-face))) + nil t))) + "Subdued level highlighting for Lisp modes.") + + (define-obsolete-variable-alias 'lisp-font-lock-keywords-2 + 'lisp-el-font-lock-keywords-2 "24.4") + (defconst lisp-el-font-lock-keywords-2 + (append + lisp-el-font-lock-keywords-1 + `( ;; Regexp negated char group. + ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) + ;; Control structures. Common Lisp forms. + (lisp--el-match-keyword . 1) + ;; Exit/Feature symbols as constants. + (,(concat "(\\(catch\\|throw\\|featurep\\|provide\\|require\\)\\_>" + "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") + (1 font-lock-keyword-face) + (2 font-lock-constant-face nil t)) + ;; Erroneous structures. + (,(concat "(" el-errs-re "\\_>") + (1 font-lock-warning-face)) + ;; Words inside \\[] tend to be for `substitute-command-keys'. + ("\\\\\\\\\\[\\(\\(?:\\sw\\|\\s_\\)+\\)\\]" + (1 font-lock-constant-face prepend)) + ;; Words inside ‘’ and `' tend to be symbol names. + ("[`‘]\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)['’]" + (1 font-lock-constant-face prepend)) + ;; Constant values. + ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) + ;; ELisp and CLisp `&' keywords as types. + ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) + ;; ELisp regexp grouping constructs + (,(lambda (bound) + (catch 'found + ;; The following loop is needed to continue searching after matches + ;; that do not occur in strings. The associated regexp matches one + ;; of `\\\\' `\\(' `\\(?:' `\\|' `\\)'. `\\\\' has been included to + ;; avoid highlighting, for example, `\\(' in `\\\\('. + (while (re-search-forward "\\(\\\\\\\\\\)\\(?:\\(\\\\\\\\\\)\\|\\((\\(?:\\?[0-9]*:\\)?\\|[|)]\\)\\)" bound t) + (unless (match-beginning 2) + (let ((face (get-text-property (1- (point)) 'face))) + (when (or (and (listp face) + (memq 'font-lock-string-face face)) + (eq 'font-lock-string-face face)) + (throw 'found t))))))) + (1 'font-lock-regexp-grouping-backslash prepend) + (3 'font-lock-regexp-grouping-construct prepend)) + ;; This is too general -- rms. + ;; A user complained that he has functions whose names start with `do' + ;; and that they get the wrong color. + ;; ;; CL `with-' and `do-' constructs + ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) + (lisp--match-hidden-arg + (0 '(face font-lock-warning-face + help-echo "Hidden behind deeper element; move to another line?"))) + )) + "Gaudy level highlighting for Emacs Lisp mode.") + + (defconst lisp-cl-font-lock-keywords-2 + (append + lisp-cl-font-lock-keywords-1 + `( ;; Regexp negated char group. + ("\\[\\(\\^\\)" 1 font-lock-negation-char-face prepend) + ;; Control structures. Common Lisp forms. + (,(concat "(" cl-kws-re "\\_>") . 1) + ;; Exit/Feature symbols as constants. + (,(concat "(\\(catch\\|throw\\|provide\\|require\\)\\_>" + "[ \t']*\\(\\(?:\\sw\\|\\s_\\)+\\)?") + (1 font-lock-keyword-face) + (2 font-lock-constant-face nil t)) + ;; Erroneous structures. + (,(concat "(" cl-errs-re "\\_>") + (1 font-lock-warning-face)) + ;; Words inside ‘’ and `' tend to be symbol names. + ("[`‘]\\(\\(?:\\sw\\|\\s_\\)\\(?:\\sw\\|\\s_\\)+\\)['’]" + (1 font-lock-constant-face prepend)) + ;; Constant values. + ("\\_<:\\(?:\\sw\\|\\s_\\)+\\_>" 0 font-lock-builtin-face) + ;; ELisp and CLisp `&' keywords as types. + ("\\_<\\&\\(?:\\sw\\|\\s_\\)+\\_>" . font-lock-type-face) + ;; This is too general -- rms. + ;; A user complained that he has functions whose names start with `do' + ;; and that they get the wrong color. + ;; ;; CL `with-' and `do-' constructs + ;;("(\\(\\(do-\\|with-\\)\\(\\s_\\|\\w\\)*\\)" 1 font-lock-keyword-face) + (lisp--match-hidden-arg + (0 '(face font-lock-warning-face + help-echo "Hidden behind deeper element; move to another line?"))) + )) + "Gaudy level highlighting for Lisp modes."))) (define-obsolete-variable-alias 'lisp-font-lock-keywords 'lisp-el-font-lock-keywords "24.4") @@ -855,9 +853,10 @@ is the buffer position of the start of the containing expression." ;; Handle prefix characters and whitespace ;; following an open paren. (Bug#1012) (backward-prefix-chars) - (while (and (not (looking-back "^[ \t]*\\|([ \t]+")) - (or (not containing-sexp) - (< (1+ containing-sexp) (point)))) + (while (not (or (looking-back "^[ \t]*\\|([ \t]+" + (line-beginning-position)) + (and containing-sexp + (>= (1+ containing-sexp) (point))))) (forward-sexp -1) (backward-prefix-chars)) (setq calculate-lisp-indent-last-sexp (point))) diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 67d14872b3a..7b7b48c66de 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -736,22 +736,20 @@ character." ) (call-interactively 'minibuffer-complete))) -(defun lisp-complete-symbol (&optional predicate) +(defun lisp-complete-symbol (&optional _predicate) "Perform completion on Lisp symbol preceding point. Compare that symbol against the known Lisp symbols. If no characters can be completed, display a list of possible completions. Repeating the command at that point scrolls the list. -When called from a program, optional arg PREDICATE is a predicate -determining which symbols are considered, e.g. `commandp'. -If PREDICATE is nil, the context determines which symbols are -considered. If the symbol starts just after an open-parenthesis, only -symbols with function definitions are considered. Otherwise, all -symbols with function definitions, values or properties are -considered." - (declare (obsolete completion-at-point "24.4")) +The context determines which symbols are considered. If the +symbol starts just after an open-parenthesis, only symbols with +function definitions are considered. Otherwise, all symbols with +function definitions, values or properties are considered." + (declare (obsolete completion-at-point "24.4") + (advertised-calling-convention () "25.1")) (interactive) - (let* ((data (lisp-completion-at-point predicate)) + (let* ((data (elisp-completion-at-point)) (plist (nthcdr 3 data))) (if (null data) (minibuffer-message "Nothing to complete") diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index f0410f87447..05ffa8d52cc 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -343,7 +343,7 @@ definitions to shadow the loaded ones for use in file byte-compilation." (defmacro macroexp-let2 (test var exp &rest exps) "Bind VAR to a copyable expression that returns the value of EXP. -This is like `(let ((v ,EXP)) ,EXPS) except that `v' is a new generated +This is like \\=`(let ((v ,EXP)) ,EXPS) except that `v' is a new generated symbol which EXPS can find in VAR. TEST should be the name of a predicate on EXP checking whether the `let' can be skipped; if nil, as is usual, `macroexp-const-p' is used." diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el index 6955ce8f5a6..81d0b834722 100644 --- a/lisp/emacs-lisp/package-x.el +++ b/lisp/emacs-lisp/package-x.el @@ -156,6 +156,7 @@ DESCRIPTION is the text of the news item." archive-url)) (declare-function lm-commentary "lisp-mnt" (&optional file)) +(defvar tar-data-buffer) (defun package-upload-buffer-internal (pkg-desc extension &optional archive-url) "Upload a package whose contents are in the current buffer. diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 2fb54f0d944..6fecd9a837d 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -185,7 +185,6 @@ and before `after-init-hook'. Activation is not done if Even if the value is nil, you can type \\[package-initialize] to activate the package system at any time." :type 'boolean - :group 'package :version "24.1") (defcustom package-load-list '(all) @@ -203,7 +202,6 @@ If VERSION is a string, only that version is ever loaded. If VERSION is nil, the package is not loaded (it is \"disabled\")." :type '(repeat symbol) :risky t - :group 'package :version "24.1") (defcustom package-archives '(("gnu" . "http://elpa.gnu.org/packages/")) @@ -222,9 +220,31 @@ a package can run arbitrary code." :type '(alist :key-type (string :tag "Archive name") :value-type (string :tag "URL or directory name")) :risky t - :group 'package :version "24.1") +(defcustom package-menu-hide-low-priority 'archive + "If non-nil, hide low priority packages from the packages menu. +A package is considered low priority if there's another version +of it available such that: + (a) the archive of the other package is higher priority than + this one, as per `package-archive-priorities'; + or + (b) they both have the same archive priority but the other + package has a higher version number. + +This variable has three possible values: + nil: no packages are hidden; + archive: only criteria (a) is used; + t: both criteria are used. + +This variable has no effect if `package-menu--hide-obsolete' is +nil, so it can be toggled with \\<package-menu-mode-map> \\[package-menu-hide-obsolete]." + :type '(choice (const :tag "Don't hide anything" nil) + (const :tag "Hide per package-archive-priorities" + archive) + (const :tag "Hide per archive and version number" t)) + :version "25.1") + (defcustom package-archive-priorities nil "An alist of priorities for packages. @@ -235,11 +255,12 @@ number from the archive with the highest priority is selected. When higher versions are available from archives with lower priorities, the user has to select those manually. -Archives not in this list have the priority 0." +Archives not in this list have the priority 0. + +See also `package-menu-hide-low-priority'." :type '(alist :key-type (string :tag "Archive name") :value-type (integer :tag "Priority (default is 0)")) :risky t - :group 'package :version "25.1") (defcustom package-pinned-packages nil @@ -263,7 +284,6 @@ the package will be unavailable." ;; via an entry (PACKAGE . NON-EXISTING). Which could be an issue ;; if PACKAGE has a known vulnerability that is fixed in newer versions. :risky t - :group 'package :version "24.4") (defcustom package-user-dir (locate-user-emacs-file "elpa") @@ -273,7 +293,6 @@ Apart from this directory, Emacs also looks for system-wide packages in `package-directory-list'." :type 'directory :risky t - :group 'package :version "24.1") (defcustom package-directory-list @@ -291,7 +310,6 @@ These directories contain packages intended for system-wide; in contrast, `package-user-dir' contains packages for personal use." :type '(repeat directory) :risky t - :group 'package :version "24.1") (defvar epg-gpg-program) @@ -309,14 +327,12 @@ contents of the archive." (const allow-unsigned :tag "Allow unsigned") (const t :tag "Check always")) :risky t - :group 'package :version "24.4") (defcustom package-unsigned-archives nil "List of archives where we do not check for package signatures." :type '(repeat (string :tag "Archive name")) :risky t - :group 'package :version "24.4") (defcustom package-selected-packages nil @@ -325,14 +341,21 @@ This variable is fed automatically by Emacs when installing a new package. This variable is used by `package-autoremove' to decide which packages are no longer needed. You can use it to (re)install packages on other machines -by running `package-user-selected-packages-install'. +by running `package-install-selected-packages'. To check if a package is contained in this list here, use `package--user-selected-p', as it may populate the variable with a sane initial value." - :group 'package :type '(repeat symbol)) +(defcustom package-menu-async t + "If non-nil, package-menu will use async operations when possible. +Currently, only the refreshing of archive contents supports +asynchronous operations. Package transactions are still done +synchronously." + :type 'boolean + :version "25.1") + ;;; `package-desc' object definition ;; This is the struct used internally to represent packages. @@ -467,6 +490,10 @@ This is, approximately, the inverse of `version-to-list'. (nth 1 keywords) keywords))) +(defun package-desc-priority (p) + "Return the priority of the archive of package-desc object P." + (package-archive-priority (package-desc-archive p))) + ;; Package descriptor format used in finder-inf.el and package--builtins. (cl-defstruct (package--bi-desc (:constructor package-make-builtin (version summary)) @@ -560,9 +587,10 @@ updates `package-alist'." (dolist (dir (cons package-user-dir package-directory-list)) (when (file-directory-p dir) (dolist (subdir (directory-files dir)) - (let ((pkg-dir (expand-file-name subdir dir))) - (when (file-directory-p pkg-dir) - (package-load-descriptor pkg-dir))))))) + (unless (equal subdir "..") + (let ((pkg-dir (expand-file-name subdir dir))) + (when (file-directory-p pkg-dir) + (package-load-descriptor pkg-dir)))))))) (defun define-package (_name-string _version-string &optional _docstring _requirements @@ -867,7 +895,7 @@ untar into a directory named DIR; otherwise, signal an error." ;;(ignore-name (concat name "-pkg.el")) (generated-autoload-file (expand-file-name auto-name pkg-dir)) ;; Silence `autoload-generate-file-autoloads'. - (noninteractive package--silence) + (noninteractive inhibit-message) (backup-inhibited t) (version-control 'never)) (package-autoload-ensure-default-file generated-autoload-file) @@ -887,10 +915,13 @@ untar into a directory named DIR; otherwise, signal an error." ) ;;;; Compilation +(defvar warning-minimum-level) (defun package--compile (pkg-desc) "Byte-compile installed package PKG-DESC." - (package-activate-1 pkg-desc) - (byte-recompile-directory (package-desc-dir pkg-desc) 0 t)) + (let ((warning-minimum-level :error) + (save-silently inhibit-message)) + (package-activate-1 pkg-desc) + (byte-recompile-directory (package-desc-dir pkg-desc) 0 t))) ;;;; Inferring package from current buffer (defun package-read-from-string (str) @@ -928,7 +959,7 @@ is wrapped around any parts requiring it." deps)))) (declare-function lm-header "lisp-mnt" (header)) -(declare-function lm-homepage "lisp-mnt" ()) +(declare-function lm-homepage "lisp-mnt" (&optional file)) (defun package-buffer-info () "Return a `package-desc' describing the package in the current buffer. @@ -1050,7 +1081,7 @@ The return result is a `package-desc'." (declare-function epg-verify-string "epg" (context signature &optional signed-text)) (declare-function epg-context-result-for "epg" (context name)) -(declare-function epg-signature-status "epg" (signature)) +(declare-function epg-signature-status "epg" (signature) t) (declare-function epg-signature-to-string "epg" (signature)) (defun package--display-verify-error (context sig-file) @@ -1107,7 +1138,8 @@ arguments see `package--with-work-buffer'." (signal (cdar status) (cddr status))) (goto-char (point-min)) (unless (search-forward "\n\n" nil 'noerror) - (error "Invalid url response")) + (error "Invalid url response in buffer %s" + (current-buffer))) (delete-region (point-min) (point)) ,@body) (kill-buffer (current-buffer))) @@ -1283,7 +1315,8 @@ Will throw an error if the archive version is too new." (let ((filename (expand-file-name file package-user-dir))) (when (file-exists-p filename) (with-temp-buffer - (insert-file-contents-literally filename) + (let ((coding-system-for-read 'utf-8)) + (insert-file-contents filename)) (let ((contents (read (current-buffer)))) (if (> (car contents) package-archive-version) (error "Package archive version %d is higher than %d" @@ -1315,6 +1348,9 @@ If successful, set `package-archive-contents'." ;; available on disk. (defvar package--initialized nil) +(defvar package--init-file-ensured nil + "Whether we know the init file has package-initialize.") + ;;;###autoload (defun package-initialize (&optional no-activate) "Load Emacs Lisp packages, and activate them. @@ -1324,7 +1360,11 @@ If `user-init-file' does not mention `(package-initialize)', add it to the file." (interactive) (setq package-alist nil) - (package--ensure-init-file) + (if (equal user-init-file load-file-name) + ;; If `package-initialize' is being called as part of loading + ;; the init file, it's obvious we don't need to ensure-init. + (setq package--init-file-ensured t) + (package--ensure-init-file)) (package-load-all-descriptors) (package-read-all-archive-contents) (unless no-activate @@ -1347,16 +1387,6 @@ it to the file." (declare-function epg-configuration "epg-config" ()) (declare-function epg-import-keys-from-file "epg" (context keys)) -(defvar package--silence nil) - -(defun package--message (format &rest args) - "Like `message', except sometimes don't print to minibuffer. -If the variable `package--silence' is non-nil, the message is not -displayed on the minibuffer." - (apply #'message format args) - (when package--silence - (message nil))) - ;;;###autoload (defun package-import-keyring (&optional file) "Import keys from FILE." @@ -1367,9 +1397,9 @@ displayed on the minibuffer." (with-file-modes 448 (make-directory homedir t)) (setf (epg-context-home-directory context) homedir) - (package--message "Importing %s..." (file-name-nondirectory file)) + (message "Importing %s..." (file-name-nondirectory file)) (epg-import-keys-from-file context file) - (package--message "Importing %s...done" (file-name-nondirectory file)))) + (message "Importing %s...done" (file-name-nondirectory file)))) (defvar package--post-download-archives-hook nil "Hook run after the archive contents are downloaded. @@ -1435,9 +1465,9 @@ This populates `package-archive-contents'. If ASYNC is non-nil, perform the downloads asynchronously." ;; The downloaded archive contents will be read as part of ;; `package--update-downloads-in-progress'. - (setq package--downloads-in-progress - (append package-archives - package--downloads-in-progress)) + (dolist (archive package-archives) + (cl-pushnew archive package--downloads-in-progress + :test #'equal)) (dolist (archive package-archives) (condition-case-unless-debug nil (package--download-one-archive @@ -1457,19 +1487,18 @@ and make them available for download. Optional argument ASYNC specifies whether to perform the downloads in the background." (interactive) - ;; FIXME: Do it asynchronously. (unless (file-exists-p package-user-dir) (make-directory package-user-dir t)) (let ((default-keyring (expand-file-name "package-keyring.gpg" data-directory)) - (package--silence async)) + (inhibit-message async)) (when (and package-check-signature (file-exists-p default-keyring)) (condition-case-unless-debug error (progn (epg-check-configuration (epg-configuration)) (package-import-keyring default-keyring)) - (error (message "Cannot import default keyring: %S" (cdr error))))) - (package--download-and-read-archives async))) + (error (message "Cannot import default keyring: %S" (cdr error)))))) + (package--download-and-read-archives async)) ;;; Dependency Management @@ -1511,7 +1540,7 @@ SEEN is used internally to detect infinite recursion." ;; we re-add it (along with its dependencies) at an earlier place ;; below (bug#16994). (if (memq already seen) ;Avoid inf-loop on dependency cycles. - (package--message "Dependency cycle going through %S" + (message "Dependency cycle going through %S" (package-desc-full-name already)) (setq packages (delq already packages)) (setq already nil)) @@ -1577,7 +1606,7 @@ Used to populate `package-selected-packages'." (defun package--save-selected-packages (value) "Set and save `package-selected-packages' to VALUE." - (let ((save-silently package--silence)) + (let ((save-silently inhibit-message)) (customize-save-variable 'package-selected-packages (setq package-selected-packages value)))) @@ -1619,21 +1648,25 @@ These are packages which are neither contained in unless (memq p needed) collect p))) -(defun package--used-elsewhere-p (pkg-desc &optional pkg-list) +(defun package--used-elsewhere-p (pkg-desc &optional pkg-list all) "Non-nil if PKG-DESC is a dependency of a package in PKG-LIST. Return the first package found in PKG-LIST of which PKG is a -dependency. +dependency. If ALL is non-nil, return all such packages instead. When not specified, PKG-LIST defaults to `package-alist' with PKG-DESC entry removed." (unless (string= (package-desc-status pkg-desc) "obsolete") - (let ((pkg (package-desc-name pkg-desc))) - (cl-loop with alist = (or pkg-list - (remove (assq pkg package-alist) - package-alist)) - for p in alist thereis - (and (memq pkg (mapcar #'car (package-desc-reqs (cadr p)))) - (car p)))))) + (let* ((pkg (package-desc-name pkg-desc)) + (alist (or pkg-list + (remove (assq pkg package-alist) + package-alist)))) + (if all + (cl-loop for p in alist + if (assq pkg (package-desc-reqs (cadr p))) + collect (cadr p)) + (cl-loop for p in alist thereis + (and (assq pkg (package-desc-reqs (cadr p))) + (cadr p))))))) (defun package--sort-deps-in-alist (package only) "Return a list of dependencies for PACKAGE sorted by dependency. @@ -1681,30 +1714,26 @@ if all the in-between dependencies are also in PACKAGE-LIST." "Return the archive containing the package NAME." (cdr (assoc (package-desc-archive desc) package-archives))) -(defun package-install-from-archive (pkg-desc &optional async callback) - "Download and install a tar package. -If ASYNC is non-nil, perform the download asynchronously. -If CALLBACK is non-nil, call it with no arguments once the -operation is done." +(defun package-install-from-archive (pkg-desc) + "Download and install a tar package." ;; This won't happen, unless the archive is doing something wrong. (when (eq (package-desc-kind pkg-desc) 'dir) (error "Can't install directory package from archive")) (let* ((location (package-archive-base pkg-desc)) (file (concat (package-desc-full-name pkg-desc) (package-desc-suffix pkg-desc)))) - (package--with-work-buffer-async location file async + (package--with-work-buffer location file (if (or (not package-check-signature) (member (package-desc-archive pkg-desc) package-unsigned-archives)) ;; If we don't care about the signature, unpack and we're ;; done. - (progn (let ((save-silently async)) - (package-unpack pkg-desc)) - (funcall callback)) + (let ((save-silently t)) + (package-unpack pkg-desc)) ;; If we care, check it and *then* write the file. (let ((content (buffer-string))) (package--check-signature - location file content async + location file content nil ;; This function will be called after signature checking. (lambda (&optional good-sigs) (unless (or good-sigs (eq package-check-signature 'allow-unsigned)) @@ -1714,7 +1743,7 @@ operation is done." (package-desc-name pkg-desc))) ;; Signature checked, unpack now. (with-temp-buffer (insert content) - (let ((save-silently async)) + (let ((save-silently t)) (package-unpack pkg-desc))) ;; Here the package has been installed successfully, mark it as ;; signed if appropriate. @@ -1730,9 +1759,7 @@ operation is done." (setf (package-desc-signed pkg-desc) t) ;; Update the new (activated) pkg-desc as well. (when-let ((pkg-descs (cdr (assq (package-desc-name pkg-desc) package-alist)))) - (setf (package-desc-signed (car pkg-descs)) t))) - (when (functionp callback) - (funcall callback))))))))) + (setf (package-desc-signed (car pkg-descs)) t)))))))))) (defun package-installed-p (package &optional min-version) "Return true if PACKAGE, of MIN-VERSION or newer, is installed. @@ -1753,30 +1780,24 @@ If PACKAGE is a package-desc object, MIN-VERSION is ignored." ;; Also check built-in packages. (package-built-in-p package min-version)))) -(defun package-download-transaction (packages &optional async callback) +(defun package-download-transaction (packages) "Download and install all the packages in PACKAGES. PACKAGES should be a list of package-desc. -If ASYNC is non-nil, perform the downloads asynchronously. -If CALLBACK is non-nil, call it with no arguments once the -entire operation is done. - This function assumes that all package requirements in PACKAGES are satisfied, i.e. that PACKAGES is computed using `package-compute-transaction'." - (cond - (packages (package-install-from-archive - (car packages) - async - (lambda () - (package-download-transaction (cdr packages)) - (when (functionp callback) - (funcall callback))))) - (callback (funcall callback)))) + (mapc #'package-install-from-archive packages)) (defun package--ensure-init-file () - "Ensure that the user's init file calls `package-initialize'." + "Ensure that the user's init file has `package-initialize'. +`package-initialize' doesn't have to be called, as long as it is +present somewhere in the file, even as a comment. If it is not, +add a call to it along with some explanatory comments." ;; Don't mess with the init-file from "emacs -Q". - (when user-init-file + (when (and (stringp user-init-file) + (not package--init-file-ensured) + (file-readable-p user-init-file) + (file-writable-p user-init-file)) (let* ((buffer (find-buffer-visiting user-init-file)) (contains-init (if buffer @@ -1786,6 +1807,7 @@ using `package-compute-transaction'." (widen) (goto-char (point-min)) (search-forward "(package-initialize)" nil 'noerror)))) + ;; Don't visit the file if we don't have to. (with-temp-buffer (insert-file-contents user-init-file) (goto-char (point-min)) @@ -1798,7 +1820,11 @@ using `package-compute-transaction'." (save-restriction (widen) (goto-char (point-min)) + (while (and (looking-at-p "[[:blank:]]*\\(;\\|$\\)") + (not (eobp))) + (forward-line 1)) (insert + "\n" ";; Added by Package.el. This must come before configurations of\n" ";; installed packages. Don't delete this line. If you don't want it,\n" ";; just comment it out by adding a semicolon to the start of the line.\n" @@ -1809,19 +1835,17 @@ using `package-compute-transaction'." (let ((file-precious-flag t)) (save-buffer)) (unless buffer - (kill-buffer (current-buffer)))))))))) + (kill-buffer (current-buffer))))))))) + (setq package--init-file-ensured t)) ;;;###autoload -(defun package-install (pkg &optional dont-select async callback) +(defun package-install (pkg &optional dont-select) "Install the package PKG. PKG can be a package-desc or the package name of one the available packages in an archive in `package-archives'. Interactively, prompt for its name. If called interactively or if DONT-SELECT nil, add PKG to `package-selected-packages'. -If ASYNC is non-nil, perform the downloads asynchronously. -If CALLBACK is non-nil, call it with no arguments once the -entire operation is done. If PKG is a package-desc and it is already installed, don't try to install it but still mark it as selected." @@ -1854,8 +1878,8 @@ to install it but still mark it as selected." (package-compute-transaction (list pkg) (package-desc-reqs pkg))) (package-compute-transaction () (list (list pkg)))))) - (package-download-transaction transaction async callback) - (package--message "`%s' is already installed" (package-desc-full-name pkg)))) + (package-download-transaction transaction) + (message "`%s' is already installed" (package-desc-full-name pkg)))) (defun package-strip-rcs-id (str) "Strip RCS version ID from the version string STR. @@ -1923,7 +1947,7 @@ The file can either be a tar file or an Emacs Lisp file." (package-install-from-buffer))) ;;;###autoload -(defun package-install-user-selected-packages () +(defun package-install-selected-packages () "Ensure packages in `package-selected-packages' are installed. If some packages are not installed propose to install them." (interactive) @@ -1985,7 +2009,7 @@ If NOSAVE is non-nil, the package is not removed from ;; Don't delete packages used as dependency elsewhere. (error "Package `%s' is used by `%s' as dependency, not deleting" (package-desc-full-name pkg-desc) - pkg-used-elsewhere-by)) + (package-desc-name pkg-used-elsewhere-by))) (t (delete-directory dir t t) ;; Remove NAME-VERSION.signed file. @@ -1997,7 +2021,7 @@ If NOSAVE is non-nil, the package is not removed from (delete pkg-desc pkgs) (unless (cdr pkgs) (setq package-alist (delq pkgs package-alist)))) - (package--message "Package `%s' deleted." (package-desc-full-name pkg-desc)))))) + (message "Package `%s' deleted." (package-desc-full-name pkg-desc)))))) ;;;###autoload (defun package-reinstall (pkg) @@ -2085,6 +2109,7 @@ will be deleted." (name (if desc (package-desc-name desc) pkg)) (pkg-dir (if desc (package-desc-dir desc))) (reqs (if desc (package-desc-reqs desc))) + (required-by (if desc (package--used-elsewhere-p desc nil 'all))) (version (if desc (package-desc-version desc))) (archive (if desc (package-desc-archive desc))) (extras (and desc (package-desc-extras desc))) @@ -2113,20 +2138,27 @@ will be deleted." "Installed" (capitalize status)) ;FIXME: Why comment-face? 'font-lock-face 'font-lock-comment-face)) - (insert " in `") + (insert " in ‘") ;; Todo: Add button for uninstalling. (help-insert-xref-button (abbreviate-file-name (file-name-as-directory pkg-dir)) 'help-package-def pkg-dir) (if (and (package-built-in-p name) (not (package-built-in-p name version))) - (insert "',\n shadowing a " + (insert "’,\n shadowing a " (propertize "built-in package" 'font-lock-face 'font-lock-builtin-face)) - (insert "'")) + (insert "’")) (if signed (insert ".") - (insert " (unsigned)."))) + (insert " (unsigned).")) + (when (and (package-desc-p desc) + (not required-by) + (package-installed-p desc)) + (insert " ") + (package-make-button "Delete" + 'action #'package-delete-button-action + 'package-desc desc))) (incompatible-reason (insert (propertize "Incompatible" 'face font-lock-warning-face) " because it depends on ") @@ -2170,6 +2202,19 @@ will be deleted." (help-insert-xref-button text 'help-package name) (insert reason))) (insert "\n"))) + (when required-by + (insert (propertize "Required by" 'font-lock-face 'bold) ": ") + (let ((first t)) + (dolist (pkg required-by) + (let ((text (package-desc-full-name pkg))) + (cond (first (setq first nil)) + ((>= (+ 2 (current-column) (length text)) + (window-width)) + (insert ",\n ")) + (t (insert ", "))) + (help-insert-xref-button text 'help-package + (package-desc-name pkg)))) + (insert "\n"))) (insert " " (propertize "Summary" 'font-lock-face 'bold) ": " (if desc (package-desc-summary desc)) "\n") (when homepage @@ -2257,6 +2302,14 @@ will be deleted." (revert-buffer nil t) (goto-char (point-min))))) +(defun package-delete-button-action (button) + (let ((pkg-desc (button-get button 'package-desc))) + (when (y-or-n-p (format "Delete package `%s'? " + (package-desc-full-name pkg-desc))) + (package-delete pkg-desc) + (revert-buffer nil t) + (goto-char (point-min))))) + (defun package-keyword-button-action (button) (let ((pkg-keyword (button-get button 'package-keyword))) (package-show-package-list t (list pkg-keyword)))) @@ -2290,6 +2343,7 @@ will be deleted." (define-key map "x" 'package-menu-execute) (define-key map "h" 'package-menu-quick-help) (define-key map "?" 'package-menu-describe-package) + (define-key map "(" #'package-menu-hide-obsolete) (define-key map [menu-bar package-menu] (cons "Package" menu-map)) (define-key menu-map [mq] '(menu-item "Quit" quit-window @@ -2347,12 +2401,17 @@ will be deleted." (defvar package-menu--new-package-list nil "List of newly-available packages since `list-packages' was last called.") +(defvar package-menu--transaction-status nil + "Mode-line status of ongoing package transaction.") + (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu" "Major mode for browsing a list of packages. Letters do not insert themselves; instead, they are commands. \\<package-menu-mode-map> \\{package-menu-mode-map}" - (setq mode-line-process '(package--downloads-in-progress ":Loading")) + (setq mode-line-process '((package--downloads-in-progress ":Loading") + (package-menu--transaction-status + package-menu--transaction-status))) (setq tabulated-list-format `[("Package" 18 package-menu--name-predicate) ("Version" 13 nil) @@ -2426,28 +2485,84 @@ of these dependencies, similar to the list returned by ((version-list-= version hv) "held") ((version-list-< version hv) "obsolete") (t "disabled")))) - ((package-built-in-p name version) "obsolete") - ((package--incompatible-p pkg-desc) "incompat") (dir ;One of the installed packages. (cond - ((not (file-exists-p (package-desc-dir pkg-desc))) "deleted") + ((not (file-exists-p dir)) "deleted") + ;; Not inside `package-user-dir'. + ((not (file-in-directory-p dir package-user-dir)) "external") ((eq pkg-desc (cadr (assq name package-alist))) (if (not signed) "unsigned" (if (package--user-selected-p name) "installed" "dependency"))) (t "obsolete"))) + ((package--incompatible-p pkg-desc) "incompat") (t (let* ((ins (cadr (assq name package-alist))) (ins-v (if ins (package-desc-version ins)))) (cond - ((or (null ins) (version-list-< ins-v version)) + ;; Installed obsolete packages are handled in the `dir' + ;; clause above. Here we handle available obsolete, which + ;; are displayed depending on `package-menu--hide-obsolete'. + ((and ins (version-list-<= version ins-v)) "avail-obso") + (t (if (memq name package-menu--new-package-list) - "new" "available")) - ((version-list-< version ins-v) "obsolete") - ((version-list-= version ins-v) - (if (not signed) "unsigned" - (if (package--user-selected-p name) - "installed" "dependency"))))))))) + "new" "available")))))))) + +(defvar package-menu--hide-obsolete t + "Whether available obsolete packages should be hidden. +Can be toggled with \\<package-menu-mode-map> \\[package-menu-hide-obsolete]. +Installed obsolete packages are always displayed.") + +(defun package-menu-hide-obsolete () + "Toggle visibility of obsolete available packages." + (interactive) + (unless (derived-mode-p 'package-menu-mode) + (user-error "The current buffer is not a Package Menu")) + (setq package-menu--hide-obsolete + (not package-menu--hide-obsolete)) + (message "%s available-obsolete packages" (if package-menu--hide-obsolete + "Hiding" "Displaying")) + (revert-buffer nil 'no-confirm)) + +(defun package--remove-hidden (pkg-list) + "Filter PKG-LIST according to `package-archive-priorities'. +PKG-LIST must be a list of package-desc objects, all with the +same name, sorted by decreasing `package-desc-priority-version'. +Return a list of packages tied for the highest priority according +to their archives." + (when pkg-list + ;; Variable toggled with `package-menu-hide-obsolete'. + (if (not package-menu--hide-obsolete) + pkg-list + (let ((installed (cadr (assq (package-desc-name (car pkg-list)) + package-alist)))) + (when installed + (setq pkg-list + (let ((ins-version (package-desc-version installed))) + (cl-remove-if (lambda (p) (version-list-< (package-desc-version p) + ins-version)) + pkg-list)))) + (let ((filtered-by-priority + (cond + ((not package-menu-hide-low-priority) + pkg-list) + ((eq package-menu-hide-low-priority 'archive) + (let* ((max-priority most-negative-fixnum) + (out)) + (while pkg-list + (let ((p (pop pkg-list))) + (if (>= (package-desc-priority p) max-priority) + (push p out) + (setq pkg-list nil)))) + (nreverse out))) + (pkg-list + (list (car pkg-list)))))) + (if (not installed) + filtered-by-priority + (let ((ins-version (package-desc-version installed))) + (cl-remove-if (lambda (p) (version-list-= (package-desc-version p) + ins-version)) + filtered-by-priority)))))))) (defun package-menu--refresh (&optional packages keywords) "Re-populate the `tabulated-list-entries'. @@ -2455,47 +2570,46 @@ PACKAGES should be nil or t, which means to display all known packages. KEYWORDS should be nil or a list of keywords." ;; Construct list of (PKG-DESC . STATUS). (unless packages (setq packages t)) - (let (info-list name) + (let (info-list) ;; Installed packages: (dolist (elt package-alist) - (setq name (car elt)) - (when (or (eq packages t) (memq name packages)) - (dolist (pkg (cdr elt)) - (when (package--has-keyword-p pkg keywords) - (package--push pkg (package-desc-status pkg) info-list))))) + (let ((name (car elt))) + (when (or (eq packages t) (memq name packages)) + (dolist (pkg (cdr elt)) + (when (package--has-keyword-p pkg keywords) + (push pkg info-list)))))) ;; Built-in packages: (dolist (elt package--builtins) - (setq name (car elt)) - (when (and (not (eq name 'emacs)) ; Hide the `emacs' package. - (package--has-keyword-p (package--from-builtin elt) keywords) - (or package-list-unversioned - (package--bi-desc-version (cdr elt))) - (or (eq packages t) (memq name packages))) - (package--push (package--from-builtin elt) "built-in" info-list))) + (let ((pkg (package--from-builtin elt)) + (name (car elt))) + (when (not (eq name 'emacs)) ; Hide the `emacs' package. + (when (and (package--has-keyword-p pkg keywords) + (or package-list-unversioned + (package--bi-desc-version (cdr elt))) + (or (eq packages t) (memq name packages))) + (push pkg info-list))))) ;; Available and disabled packages: (dolist (elt package-archive-contents) - (setq name (car elt)) - (when (or (eq packages t) (memq name packages)) - (dolist (pkg (cdr elt)) - ;; Hide obsolete packages. - (when (and (not (package-installed-p (package-desc-name pkg) - (package-desc-version pkg))) - (package--has-keyword-p pkg keywords)) - (package--push pkg (package-desc-status pkg) info-list))))) + (let ((name (car elt))) + (when (or (eq packages t) (memq name packages)) + ;; Hide available-obsolete or low-priority packages. + (dolist (pkg (package--remove-hidden (cdr elt))) + (when (package--has-keyword-p pkg keywords) + (push pkg info-list)))))) ;; Print the result. (setq tabulated-list-entries - (mapcar #'package-menu--print-info info-list)))) + (mapcar #'package-menu--print-info-simple info-list)))) (defun package-all-keywords () "Collect all package keywords" - (let (keywords) + (let ((key-list)) (package--mapc (lambda (desc) - (let* ((desc-keywords (and desc (package-desc--keywords desc)))) - (setq keywords (append keywords desc-keywords))))) - keywords)) + (setq key-list (append (package-desc--keywords desc) + key-list)))) + key-list)) (defun package--mapc (function &optional packages) "Call FUNCTION for all known PACKAGES. @@ -2534,12 +2648,14 @@ Built-in packages are converted with `package--from-builtin'." "Test if package DESC has any of the given KEYWORDS. When none are given, the package matches." (if keywords - (let* ((desc-keywords (and desc (package-desc--keywords desc))) - found) - (dolist (k keywords) - (when (and (not found) - (member k desc-keywords)) - (setq found t))) + (let ((desc-keywords (and desc (package-desc--keywords desc))) + found) + (while (and (not found) keywords) + (let ((k (pop keywords))) + (setq found + (or (string= k (concat "arc:" (package-desc-archive desc))) + (string= k (concat "status:" (package-desc-status desc))) + (member k desc-keywords))))) found) t)) @@ -2567,11 +2683,20 @@ shown." "Return a package entry suitable for `tabulated-list-entries'. PKG has the form (PKG-DESC . STATUS). Return (PKG-DESC [NAME VERSION STATUS DOC])." - (let* ((pkg-desc (car pkg)) - (status (cdr pkg)) + (package-menu--print-info-simple (car pkg))) +(make-obsolete 'package-menu--print-info + 'package-menu--print-info-simple "25.1") + +(defun package-menu--print-info-simple (pkg) + "Return a package entry suitable for `tabulated-list-entries'. +PKG is a package-desc object. +Return (PKG-DESC [NAME VERSION STATUS DOC])." + (let* ((status (package-desc-status pkg)) (face (pcase status (`"built-in" 'font-lock-builtin-face) + (`"external" 'font-lock-builtin-face) (`"available" 'default) + (`"avail-obso" 'font-lock-comment-face) (`"new" 'bold) (`"held" 'font-lock-constant-face) (`"disabled" 'font-lock-warning-face) @@ -2580,21 +2705,23 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])." (`"unsigned" 'font-lock-warning-face) (`"incompat" 'font-lock-comment-face) (_ 'font-lock-warning-face)))) ; obsolete. - (list pkg-desc - `[,(list (symbol-name (package-desc-name pkg-desc)) - 'face 'link - 'follow-link t - 'package-desc pkg-desc - 'action 'package-menu-describe-package) + (list pkg + `[(,(symbol-name (package-desc-name pkg)) + face link + follow-link t + package-desc ,pkg + action package-menu-describe-package) ,(propertize (package-version-join - (package-desc-version pkg-desc)) + (package-desc-version pkg)) 'font-lock-face face) ,(propertize status 'font-lock-face face) ,@(if (cdr package-archives) - (list (propertize (or (package-desc-archive pkg-desc) "") + (list (propertize (or (package-desc-archive pkg) "") 'font-lock-face face))) - ,(propertize (package-desc-summary pkg-desc) - 'font-lock-face face)]))) + ,(package-desc-summary pkg)]))) + +(defvar package-menu--old-archive-contents nil + "`package-archive-contents' before the latest refresh.") (defun package-menu-refresh () "Download the Emacs Lisp package archive. @@ -2629,7 +2756,7 @@ If optional arg BUTTON is non-nil, describe its associated package." (defun package-menu-mark-install (&optional _num) "Mark a package for installation and move to the next line." (interactive "p") - (if (member (package-menu-get-status) '("available" "new" "dependency")) + (if (member (package-menu-get-status) '("available" "avail-obso" "new" "dependency")) (tabulated-list-put-tag "I" t) (forward-line))) @@ -2657,7 +2784,7 @@ If optional arg BUTTON is non-nil, describe its associated package." (defvar package--quick-help-keys '(("install," "delete," "unmark," ("execute" . 1)) ("next," "previous") - ("refresh-contents," "g-redisplay," "filter," "help"))) + ("refresh-contents," "g-redisplay," "filter," "(-toggle-obsolete" "help"))) (defun package--prettify-quick-help-key (desc) "Prettify DESC to be displayed as a help menu." @@ -2685,7 +2812,7 @@ The full list of keys can be viewed with \\[describe-mode]." (defun package-menu-get-status () (let* ((id (tabulated-list-get-id)) - (entry (and id (assq id tabulated-list-entries)))) + (entry (and id (assoc id tabulated-list-entries)))) (if entry (aref (cadr entry) 2) ""))) @@ -2705,8 +2832,7 @@ defaults to 0." This allows for easy comparison of package versions from different archives if archive priorities are meant to be taken in consideration." - (cons (package-archive-priority - (package-desc-archive pkg-desc)) + (cons (package-desc-priority pkg-desc) (package-desc-version pkg-desc))) (defun package-menu--find-upgrades () @@ -2730,15 +2856,15 @@ consideration." (push (cons name avail-pkg) upgrades)))) upgrades)) -(defun package-menu-mark-upgrades () +(defvar package-menu--mark-upgrades-pending nil + "Whether mark-upgrades is waiting for a refresh to finish.") + +(defun package-menu--mark-upgrades-1 () "Mark all upgradable packages in the Package Menu. -For each installed package with a newer version available, place -an (I)nstall flag on the available version and a (D)elete flag on -the installed version. A subsequent \\[package-menu-execute] -call will upgrade the package." - (interactive) +Implementation of `package-menu-mark-upgrades'." (unless (derived-mode-p 'package-menu-mode) (error "The current buffer is not a Package Menu")) + (setq package-menu--mark-upgrades-pending nil) (let ((upgrades (package-menu--find-upgrades))) (if (null upgrades) (message "No packages to upgrade.") @@ -2755,8 +2881,24 @@ call will upgrade the package." (t (package-menu-mark-delete)))))) (message "%d package%s marked for upgrading." - (length upgrades) - (if (= (length upgrades) 1) "" "s"))))) + (length upgrades) + (if (= (length upgrades) 1) "" "s"))))) + +(defun package-menu-mark-upgrades () + "Mark all upgradable packages in the Package Menu. +For each installed package with a newer version available, place +an (I)nstall flag on the available version and a (D)elete flag on +the installed version. A subsequent \\[package-menu-execute] +call will upgrade the package. + +If there's an async refresh operation in progress, the flags will +be placed as part of `package-menu--post-refresh' instead of +immediately." + (interactive) + (if (not package--downloads-in-progress) + (package-menu--mark-upgrades-1) + (setq package-menu--mark-upgrades-pending t) + (message "Waiting for refresh to finish..."))) (defun package-menu--list-to-prompt (packages) "Return a string listing PACKAGES that's usable in a prompt. @@ -2775,57 +2917,77 @@ prompt (see `package-menu--prompt-transaction-p')." (t (format "package `%s'" (package-desc-full-name (car packages)))))) -(defun package-menu--prompt-transaction-p (install delete) - "Prompt the user about installing INSTALL and deleting DELETE. -INSTALL and DELETE are lists of `package-desc'. Either may be -nil, but not both." +(defun package-menu--prompt-transaction-p (delete install upgrade) + "Prompt the user about DELETE, INSTALL, and UPGRADE. +DELETE, INSTALL, and UPGRADE are lists of `package-desc' objects. +Either may be nil, but not all." + (y-or-n-p + (concat + (when delete "Delete ") + (package-menu--list-to-prompt delete) + (when (and delete install) + (if upgrade "; " "; and ")) + (when install "Install ") + (package-menu--list-to-prompt install) + (when (and upgrade (or install delete)) "; and ") + (when upgrade "Upgrade ") + (package-menu--list-to-prompt upgrade) + "? "))) + +(defun package-menu--partition-transaction (install delete) + "Return an alist describing an INSTALL DELETE transaction. +Alist contains three entries, upgrade, delete, and install, each +with a list of package names. + +The upgrade entry contains any `package-desc' objects in INSTALL +whose name coincides with an object in DELETE. The delete and +the install entries are the same as DELETE and INSTALL with such +objects removed." (let* ((upg (cl-intersection install delete :key #'package-desc-name)) (ins (cl-set-difference install upg :key #'package-desc-name)) (del (cl-set-difference delete upg :key #'package-desc-name))) - (y-or-n-p - (concat - (when del "Delete ") - (package-menu--list-to-prompt del) - (when (and del ins) - (if upg "; " "; and ")) - (when ins "Install ") - (package-menu--list-to-prompt ins) - (when (and upg (or ins del)) "; and ") - (when upg "Upgrade ") - (package-menu--list-to-prompt upg) - "? ")))) - -(defun package-menu--perform-transaction (install-list delete-list &optional async) - "Install packages in INSTALL-LIST and delete DELETE-LIST. -If ASYNC is non-nil, perform the installation downloads -asynchronously." - ;; While there are packages to install, call `package-install' on - ;; the next one and defer deletion to the callback function. + `((delete . ,del) (install . ,ins) (upgrade . ,upg)))) + +(defun package-menu--perform-transaction (install-list delete-list) + "Install packages in INSTALL-LIST and delete DELETE-LIST." (if install-list - (let* ((pkg (car install-list)) - (rest (cdr install-list)) - ;; Don't mark as selected if it's a new version of an - ;; installed package. - (dont-mark (and (not (package-installed-p pkg)) - (package-installed-p - (package-desc-name pkg))))) - (package-install - pkg dont-mark async - (lambda () (package-menu--perform-transaction rest delete-list async)))) + (let ((status-format (format ":Installing %%d/%d" + (length install-list))) + (i 0) + (package-menu--transaction-status)) + (dolist (pkg install-list) + (setq package-menu--transaction-status + (format status-format (cl-incf i))) + (force-mode-line-update) + (redisplay 'force) + ;; Don't mark as selected, `package-menu-execute' already + ;; does that. + (package-install pkg 'dont-select))) ;; Once there are no more packages to install, proceed to ;; deletion. - (let ((package--silence async)) + (let ((package-menu--transaction-status ":Deleting")) + (force-mode-line-update) + (redisplay 'force) (dolist (elt (package--sort-by-dependence delete-list)) (condition-case-unless-debug err - (package-delete elt) - (error (message (cadr err))))) - (when package-selected-packages - (when-let ((removable (package--removable-packages))) - (package--message "These %d packages are no longer needed, type `M-x package-autoremove' to remove them (%s)" - (length removable) - (mapconcat #'symbol-name removable ", "))))) - (message "Transaction done") - (package-menu--post-refresh))) + (let ((inhibit-message t)) + (package-delete elt nil 'nosave)) + (error (message (cadr err)))))))) + +(defun package--update-selected-packages (add remove) + "Update the `package-selected-packages' list according to ADD and REMOVE. +ADD and REMOVE must be disjoint lists of package names (or +`package-desc' objects) to be added and removed to the selected +packages list, respectively." + (dolist (p add) + (cl-pushnew (if (package-desc-p p) (package-desc-name p) p) + package-selected-packages)) + (dolist (p remove) + (setq package-selected-packages + (remove (if (package-desc-p p) (package-desc-name p) p) + package-selected-packages))) + (when (or add remove) + (package--save-selected-packages package-selected-packages))) (defun package-menu-execute (&optional noquery) "Perform marked Package Menu actions. @@ -2850,12 +3012,30 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm." (forward-line))) (unless (or delete-list install-list) (user-error "No operations specified")) - (when (or noquery - (package-menu--prompt-transaction-p install-list delete-list)) - (message "Transaction started") - ;; This calls `package-menu--generate' after everything's done. - (package-menu--perform-transaction - install-list delete-list package-menu-async)))) + (let-alist (package-menu--partition-transaction install-list delete-list) + (when (or noquery + (package-menu--prompt-transaction-p .delete .install .upgrade)) + (let ((message-template + (concat "Package menu: Operation %s [" + (when .delete (format "Delet__ %s" (length .delete))) + (when (and .delete .install) "; ") + (when .install (format "Install__ %s" (length .install))) + (when (and .upgrade (or .install .delete)) "; ") + (when .upgrade (format "Upgrad__ %s" (length .upgrade))) + "]"))) + (message (replace-regexp-in-string "__" "ing" message-template) "started") + ;; Packages being upgraded are not marked as selected. + (package--update-selected-packages .install .delete) + (package-menu--perform-transaction install-list delete-list) + (when package-selected-packages + (if-let ((removable (package--removable-packages))) + (message "Package menu: Operation finished. %d packages %s" + (length removable) + "are no longer needed, type `M-x package-autoremove' to remove them") + (message (replace-regexp-in-string "__" "ed" message-template) + "finished")))) + ;; This calls `package-menu--generate'. + (package-menu--post-refresh))))) (defun package-menu--version-predicate (A B) (let ((vA (or (aref (cadr A) 1) '(0))) @@ -2871,8 +3051,11 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm." (package-menu--name-predicate A B)) ((string= sA "new") t) ((string= sB "new") nil) - ((string= sA "available") t) - ((string= sB "available") nil) + ((string-prefix-p "avail" sA) + (if (string-prefix-p "avail" sB) + (package-menu--name-predicate A B) + t)) + ((string-prefix-p "avail" sB) nil) ((string= sA "installed") t) ((string= sB "installed") nil) ((string= sA "dependency") t) @@ -2881,6 +3064,8 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm." ((string= sB "unsigned") nil) ((string= sA "held") t) ((string= sB "held") nil) + ((string= sA "external") t) + ((string= sB "external") nil) ((string= sA "built-in") t) ((string= sB "built-in") nil) ((string= sA "obsolete") t) @@ -2904,9 +3089,6 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm." (string< (or (package-desc-archive (car A)) "") (or (package-desc-archive (car B)) ""))) -(defvar package-menu--old-archive-contents nil - "`package-archive-contents' before the latest refresh.") - (defun package-menu--populate-new-package-list () "Decide which packages are new in `package-archives-contents'. Store this list in `package-menu--new-package-list'." @@ -2934,15 +3116,11 @@ after `package-menu--perform-transaction'." (let ((buf (get-buffer "*Packages*"))) (when (buffer-live-p buf) (with-current-buffer buf - (revert-buffer nil 'noconfirm)))) - (package-menu--find-and-notify-upgrades)) - -(defcustom package-menu-async t - "If non-nil, package-menu will use async operations when possible. -This includes refreshing archive contents as well as installing -packages." - :type 'boolean - :group 'package) + (run-hooks 'tabulated-list-revert-hook) + (tabulated-list-print 'remember 'update) + (if package-menu--mark-upgrades-pending + (package-menu--mark-upgrades-1) + (package-menu--find-and-notify-upgrades)))))) ;;;###autoload (defun list-packages (&optional no-fetch) @@ -3002,9 +3180,17 @@ shown." (defun package-menu-filter (keyword) "Filter the *Packages* buffer. Show only those items that relate to the specified KEYWORD. +KEYWORD can be a string or a list of strings. If it is a list, a +package will be displayed if it matches any of the keywords. +Interactively, it is a list of strings separated by commas. + To restore the full package list, type `q'." - (interactive (list (completing-read "Keyword: " (package-all-keywords)))) - (package-show-package-list t (list keyword))) + (interactive + (list (completing-read-multiple + "Keywords (comma separated): " (package-all-keywords)))) + (package-show-package-list t (if (stringp keyword) + (list keyword) + keyword))) (defun package-list-packages-no-fetch () "Display a list of packages. diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index 978c3f0dd30..ab82b7eaef3 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -47,7 +47,7 @@ ;; to be performed anyway, so better do it first so it's shared). ;; - then choose the test that discriminates more (?). ;; - provide Agda's `with' (along with its `...' companion). -;; - implement (not UPAT). This might require a significant redesign. +;; - implement (not PAT). This might require a significant redesign. ;; - ideally we'd want (pcase s ((re RE1) E1) ((re RE2) E2)) to be able to ;; generate a lex-style DFA to decide whether to run E1 or E2. @@ -71,14 +71,14 @@ (defvar pcase--dontwarn-upats '(pcase--dontcare)) (def-edebug-spec - pcase-UPAT + pcase-PAT (&or symbolp - ("or" &rest pcase-UPAT) - ("and" &rest pcase-UPAT) + ("or" &rest pcase-PAT) + ("and" &rest pcase-PAT) ("guard" form) - ("let" pcase-UPAT form) + ("let" pcase-PAT form) ("pred" pcase-FUN) - ("app" pcase-FUN pcase-UPAT) + ("app" pcase-FUN pcase-PAT) pcase-MACRO sexp)) @@ -91,6 +91,10 @@ (def-edebug-spec pcase-MACRO pcase--edebug-match-macro) +;; Only called from edebug. +(declare-function get-edebug-spec "edebug" (symbol)) +(declare-function edebug-match "edebug" (cursor specs)) + (defun pcase--edebug-match-macro (cursor) (let (specs) (mapatoms @@ -104,19 +108,19 @@ ;;;###autoload (defmacro pcase (exp &rest cases) "Perform ML-style pattern matching on EXP. -CASES is a list of elements of the form (UPATTERN CODE...). +CASES is a list of elements of the form (PATTERN CODE...). -UPatterns can take the following forms: +Patterns can take the following forms: _ matches anything. SELFQUOTING matches itself. This includes keywords, numbers, and strings. SYMBOL matches anything and binds it to SYMBOL. - (or UPAT...) matches if any of the patterns matches. - (and UPAT...) matches if all the patterns match. + (or PAT...) matches if any of the patterns matches. + (and PAT...) matches if all the patterns match. 'VAL matches if the object is `equal' to VAL (pred FUN) matches if FUN applied to the object returns non-nil. (guard BOOLEXP) matches if BOOLEXP evaluates to non-nil. - (let UPAT EXP) matches if EXP matches UPAT. - (app FUN UPAT) matches if FUN applied to the object matches UPAT. + (let PAT EXP) matches if EXP matches PAT. + (app FUN PAT) matches if FUN applied to the object matches PAT. If a SYMBOL is used twice in the same pattern (i.e. the pattern is \"non-linear\"), then the second occurrence is turned into an `eq'uality test. @@ -129,12 +133,12 @@ FUN can refer to variables bound earlier in the pattern. FUN is assumed to be pure, i.e. it can be dropped if its result is not used, and two identical calls can be merged into one. E.g. you can match pairs where the cdr is larger than the car with a pattern -like `(,a . ,(pred (< a))) or, with more checks: -`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) +like \\=`(,a . ,(pred (< a))) or, with more checks: +\\=`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) Additional patterns can be defined via `pcase-defmacro'. Currently, the following patterns are provided this way:" - (declare (indent 1) (debug (form &rest (pcase-UPAT body)))) + (declare (indent 1) (debug (form &rest (pcase-PAT body)))) ;; We want to use a weak hash table as a cache, but the key will unavoidably ;; be based on `exp' and `cases', yet `cases' is a fresh new list each time ;; we're called so it'll be immediately GC'd. So we use (car cases) as key @@ -158,12 +162,18 @@ Currently, the following patterns are provided this way:" ;; (puthash (car cases) `(,exp ,cases ,@expansion) pcase--memoize-2) expansion)))) +(declare-function help-fns--signature "help-fns" + (function doc real-def real-function)) + ;; FIXME: Obviously, this will collide with nadvice's use of ;; function-documentation if we happen to advise `pcase'. (put 'pcase 'function-documentation '(pcase--make-docstring)) (defun pcase--make-docstring () (let* ((main (documentation (symbol-function 'pcase) 'raw)) (ud (help-split-fundoc main 'pcase))) + ;; So that eg emacs -Q -l cl-lib --eval "(documentation 'pcase)" works, + ;; where cl-lib is anything using pcase-defmacro. + (require 'help-fns) (with-temp-buffer (insert (or (cdr ud) main)) (mapatoms @@ -190,12 +200,12 @@ Currently, the following patterns are provided this way:" ;;;###autoload (defmacro pcase-lambda (lambda-list &rest body) - "Like `lambda' but allow each argument to be a UPattern. + "Like `lambda' but allow each argument to be a pattern. I.e. accepts the usual &optional and &rest keywords, but every formal argument can be any pattern accepted by `pcase' (a mere variable name being but a special case of it)." (declare (doc-string 2) (indent defun) - (debug ((&rest pcase-UPAT) body))) + (debug ((&rest pcase-PAT) body))) (let* ((bindings ()) (parsed-body (macroexp-parse-body body)) (args (mapcar (lambda (pat) @@ -232,9 +242,9 @@ variable name being but a special case of it)." (defmacro pcase-let* (bindings &rest body) "Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings -of the form (UPAT EXP)." +of the form (PAT EXP)." (declare (indent 1) - (debug ((&rest (pcase-UPAT &optional form)) body))) + (debug ((&rest (pcase-PAT &optional form)) body))) (let ((cached (gethash bindings pcase--memoize))) ;; cached = (BODY . EXPANSION) (if (equal (car cached) body) @@ -247,7 +257,10 @@ of the form (UPAT EXP)." (defmacro pcase-let (bindings &rest body) "Like `let' but where you can use `pcase' patterns for bindings. BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (UPAT EXP)." +of the form (PAT EXP). +The macro is expanded and optimized under the assumption that those +patterns *will* match, so a mismatch may go undetected or may cause +any kind of error." (declare (indent 1) (debug pcase-let*)) (if (null (cdr bindings)) `(pcase-let* ,bindings ,@body) @@ -265,7 +278,7 @@ of the form (UPAT EXP)." ;;;###autoload (defmacro pcase-dolist (spec &rest body) - (declare (indent 1) (debug ((pcase-UPAT form) body))) + (declare (indent 1) (debug ((pcase-PAT form) body))) (if (pcase--trivial-upat-p (car spec)) `(dolist ,spec ,@body) (let ((tmpvar (make-symbol "x"))) @@ -371,7 +384,9 @@ of the form (UPAT EXP)." ;;;###autoload (defmacro pcase-defmacro (name args &rest body) - "Define a pcase UPattern macro." + "Define a new kind of pcase PATTERN, by macro expansion. +Patterns of the form (NAME ...) will be expanded according +to this macro." (declare (indent 2) (debug defun) (doc-string 3)) ;; Add the function via `fsym', so that an autoload cookie placed ;; on a pcase-defmacro will cause the macro to be loaded on demand. @@ -442,7 +457,7 @@ Each BRANCH has the form (MATCH CODE . VARS) where CODE is the code generator for that branch. VARS is the set of vars already bound by earlier matches. MATCH is the pattern that needs to be matched, of the form: - (match VAR . UPAT) + (match VAR . PAT) (and MATCH ...) (or MATCH ...)" (when (setq branches (delq nil branches)) @@ -787,7 +802,7 @@ Otherwise, it defers to REST which is a list of branches of the form (pcase--u1 (cons (pcase--match sym (nth 1 upat)) matches) code vars rest))) ((eq (car-safe upat) 'app) - ;; A upat of the form (app FUN UPAT) + ;; A upat of the form (app FUN PAT) (pcase--mark-used sym) (let* ((fun (nth 1 upat)) (nsym (make-symbol "x")) @@ -844,7 +859,7 @@ Otherwise, it defers to REST which is a list of branches of the form (def-edebug-spec pcase-QPAT - (&or ("," pcase-UPAT) + (&or ("," pcase-PAT) (pcase-QPAT . pcase-QPAT) (vector &rest pcase-QPAT) sexp)) @@ -855,7 +870,7 @@ QPAT can take the following forms: (QPAT1 . QPAT2) matches if QPAT1 matches the car and QPAT2 the cdr. [QPAT1 QPAT2..QPATn] matches a vector of length n and QPAT1..QPATn match its 0..(n-1)th elements, respectively. - ,UPAT matches if the UPattern UPAT matches. + ,PAT matches if the pattern PAT matches. STRING matches if the object is `equal' to STRING. ATOM matches if the object is `eq' to ATOM." (declare (debug (pcase-QPAT))) diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 6f7f3c46e2a..0aa0f095969 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el @@ -4,7 +4,7 @@ ;; Author: Nicolas Petton <nicolas@petton.fr> ;; Keywords: sequences -;; Version: 1.4 +;; Version: 1.7 ;; Package: seq ;; Maintainer: emacs-devel@gnu.org @@ -44,31 +44,59 @@ (defmacro seq-doseq (spec &rest body) "Loop over a sequence. -Similar to `dolist' but can be applied lists, strings and vectors. +Similar to `dolist' but can be applied to lists, strings, and vectors. Evaluate BODY with VAR bound to each element of SEQ, in turn. -Then evaluate RESULT to get return value, default nil. -\(fn (VAR SEQ [RESULT]) BODY...)" +\(fn (VAR SEQ) BODY...)" (declare (indent 1) (debug ((symbolp form &optional form) body))) - (let ((is-list (make-symbol "is-list")) + (let ((length (make-symbol "length")) (seq (make-symbol "seq")) (index (make-symbol "index"))) `(let* ((,seq ,(cadr spec)) - (,is-list (listp ,seq)) - (,index (if ,is-list ,seq 0))) - (while (if ,is-list - (consp ,index) - (< ,index (seq-length ,seq))) - (let ((,(car spec) (if ,is-list - (car ,index) - (seq-elt ,seq ,index)))) - ,@body - (setq ,index (if ,is-list - (cdr ,index) - (+ ,index 1))))) - ,@(if (cddr spec) - `((setq ,(car spec) nil) ,@(cddr spec)))))) + (,length (if (listp ,seq) nil (seq-length ,seq))) + (,index (if ,length 0 ,seq))) + (while (if ,length + (< ,index ,length) + (consp ,index)) + (let ((,(car spec) (if ,length + (prog1 (seq-elt ,seq ,index) + (setq ,index (+ ,index 1))) + (pop ,index)))) + ,@body))))) + +(if (fboundp 'pcase-defmacro) + ;; Implementation of `seq-let' based on a `pcase' + ;; pattern. Requires Emacs>=25.1. + (progn + (pcase-defmacro seq (&rest args) + "pcase pattern matching sequence elements. +Matches if the object is a sequence (list, string or vector), and +binds each element of ARGS to the corresponding element of the +sequence." + `(and (pred seq-p) + ,@(seq--make-pcase-bindings args))) + + (defmacro seq-let (args seq &rest body) + "Bind the variables in ARGS to the elements of SEQ then evaluate BODY. + +ARGS can also include the `&rest' marker followed by a variable +name to be bound to the rest of SEQ." + (declare (indent 2) (debug t)) + `(pcase-let ((,(seq--make-pcase-patterns args) ,seq)) + ,@body))) + + ;; Implementation of `seq-let' compatible with Emacs<25.1. + (defmacro seq-let (args seq &rest body) + "Bind the variables in ARGS to the elements of SEQ then evaluate BODY. + +ARGS can also include the `&rest' marker followed by a variable +name to be bound to the rest of SEQ." + (declare (indent 2) (debug t)) + (let ((seq-var (make-symbol "seq"))) + `(let* ((,seq-var ,seq) + ,@(seq--make-bindings args seq-var)) + ,@body)))) (defun seq-drop (seq n) "Return a subsequence of SEQ without its first N elements. @@ -221,7 +249,7 @@ TYPE must be one of following symbols: vector, string or list. (`vector (apply #'vconcat seqs)) (`string (apply #'concat seqs)) (`list (apply #'append (append seqs '(nil)))) - (t (error "Not a sequence type name: %s" type)))) + (t (error "Not a sequence type name: %S" type)))) (defun seq-mapcat (function seq &optional type) "Concatenate the result of applying FUNCTION to each element of SEQ. @@ -295,7 +323,7 @@ TYPE can be one of the following symbols: vector, string or list." (`vector (vconcat seq)) (`string (concat seq)) (`list (append seq nil)) - (t (error "Not a sequence type name: %s" type)))) + (t (error "Not a sequence type name: %S" type)))) (defun seq--drop-list (list n) "Return a list from LIST without its first N elements. @@ -338,10 +366,70 @@ This is an optimization for lists in `seq-take-while'." (setq n (+ 1 n))) n)) +(defun seq--make-pcase-bindings (args) + "Return a list of bindings of the variables in ARGS to the elements of a sequence." + (let ((bindings '()) + (index 0) + (rest-marker nil)) + (seq-doseq (name args) + (unless rest-marker + (pcase name + (`&rest + (progn (push `(app (pcase--flip seq-drop ,index) + ,(seq--elt-safe args (1+ index))) + bindings) + (setq rest-marker t))) + (t + (push `(app (pcase--flip seq--elt-safe ,index) ,name) bindings)))) + (setq index (1+ index))) + bindings)) + +(defun seq--make-pcase-patterns (args) + "Return a list of `(seq ...)' pcase patterns from the argument list ARGS." + (cons 'seq + (seq-map (lambda (elt) + (if (seq-p elt) + (seq--make-pcase-patterns elt) + elt)) + args))) + +;; Helper function for the Backward-compatible version of `seq-let' +;; for Emacs<25.1. +(defun seq--make-bindings (args seq &optional bindings) + "Return a list of bindings of the variables in ARGS to the elements of a sequence. +if BINDINGS is non-nil, append new bindings to it, and return +BINDINGS." + (let ((index 0) + (rest-marker nil)) + (seq-doseq (name args) + (unless rest-marker + (pcase name + ((pred seq-p) + (setq bindings (seq--make-bindings (seq--elt-safe args index) + `(seq--elt-safe ,seq ,index) + bindings))) + (`&rest + (progn (push `(,(seq--elt-safe args (1+ index)) + (seq-drop ,seq ,index)) + bindings) + (setq rest-marker t))) + (t + (push `(,name (seq--elt-safe ,seq ,index)) bindings)))) + (setq index (1+ index))) + bindings)) + +(defun seq--elt-safe (seq n) + "Return element of SEQ at the index N. +If no element is found, return nil." + (when (or (listp seq) + (and (sequencep seq) + (> (seq-length seq) n))) + (seq-elt seq n))) + (defun seq--activate-font-lock-keywords () "Activate font-lock keywords for some symbols defined in seq." (font-lock-add-keywords 'emacs-lisp-mode - '("\\<seq-doseq\\>"))) + '("\\<seq-doseq\\>" "\\<seq-let\\>"))) (defalias 'seq-copy #'copy-sequence) (defalias 'seq-elt #'elt) @@ -349,8 +437,12 @@ This is an optimization for lists in `seq-take-while'." (defalias 'seq-do #'mapc) (defalias 'seq-each #'seq-do) (defalias 'seq-map #'mapcar) +(defalias 'seq-p #'sequencep) -(add-to-list 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords) +(unless (fboundp 'elisp--font-lock-flush-elisp-buffers) + ;; In Emacs≥25, (via elisp--font-lock-flush-elisp-buffers and a few others) + ;; we automatically highlight macros. + (add-hook 'emacs-lisp-mode-hook #'seq--activate-font-lock-keywords)) (provide 'seq) ;;; seq.el ends here diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 78a6dc98456..e6d451ac62e 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -120,7 +120,8 @@ Argument BINDINGS is a list of tuples whose car is a symbol to be bound and (optionally) used in THEN, and its cadr is a sexp to be evalled to set symbol's value. In the special case you only want to bind a single value, BINDINGS can just be a plain tuple." - (declare (indent 2) (debug ((&rest (symbolp form)) form body))) + (declare (indent 2) + (debug ([&or (&rest (symbolp form)) (symbolp form)] form body))) (when (and (<= (length bindings) 2) (not (listp (car bindings)))) ;; Adjust the single binding case @@ -139,6 +140,10 @@ to bind a single value, BINDINGS can just be a plain tuple." (declare (indent 1) (debug if-let)) (list 'if-let bindings (macroexp-progn body))) +(defsubst hash-table-empty-p (hash-table) + "Check whether HASH-TABLE is empty (has 0 elements)." + (zerop (hash-table-count hash-table))) + (defsubst hash-table-keys (hash-table) "Return a list of keys in HASH-TABLE." (let ((keys '())) diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 81ef7a6fbf3..05dd7d57503 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -574,7 +574,7 @@ running the hook." ;; (defun buffer-syntactic-context (&optional buffer) ;; "Syntactic context at point in BUFFER. -;; Either of `string', `comment' or `nil'. +;; Either of `string', `comment' or nil. ;; This is an XEmacs compatibility function." ;; (with-current-buffer (or buffer (current-buffer)) ;; (syntax-ppss-context (syntax-ppss)))) diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index 15a0914cb17..fb3045d2b4c 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el @@ -179,7 +179,9 @@ If ADVANCE is non-nil, move forward by one line afterwards." table) "The `glyphless-char-display' table in Tabulated List buffers.") -(defvar tabulated-list--header-string nil) +(defvar tabulated-list--header-string nil + "Holds the header if `tabulated-list-use-header-line' is nil. +Populated by `tabulated-list-init-header'.") (defvar tabulated-list--header-overlay nil) (defun tabulated-list-init-header () @@ -243,15 +245,17 @@ If ADVANCE is non-nil, move forward by one line afterwards." (setq-local tabulated-list--header-string cols)))) (defun tabulated-list-print-fake-header () - "Insert a fake Tabulated List \"header line\" at the start of the buffer." - (goto-char (point-min)) - (let ((inhibit-read-only t)) - (insert tabulated-list--header-string "\n") - (if tabulated-list--header-overlay - (move-overlay tabulated-list--header-overlay (point-min) (point)) - (setq-local tabulated-list--header-overlay - (make-overlay (point-min) (point)))) - (overlay-put tabulated-list--header-overlay 'face 'underline))) + "Insert a fake Tabulated List \"header line\" at the start of the buffer. +Do nothing if `tabulated-list--header-string' is nil." + (when tabulated-list--header-string + (goto-char (point-min)) + (let ((inhibit-read-only t)) + (insert tabulated-list--header-string "\n") + (if tabulated-list--header-overlay + (move-overlay tabulated-list--header-overlay (point-min) (point)) + (setq-local tabulated-list--header-overlay + (make-overlay (point-min) (point)))) + (overlay-put tabulated-list--header-overlay 'face 'underline)))) (defun tabulated-list-revert (&rest ignored) "The `revert-buffer-function' for `tabulated-list-mode'. @@ -273,58 +277,104 @@ It runs `tabulated-list-revert-hook', then calls `tabulated-list-print'." (or found (error "No column named %s" name)))) -(defun tabulated-list-print (&optional remember-pos) +(defun tabulated-list--get-sorter () + "Return a sorting predicate for the current tabulated-list. +Return nil if `tabulated-list-sort-key' specifies an unsortable +column. Negate the predicate that would be returned if +`tabulated-list-sort-key' has a non-nil cdr." + (when (and tabulated-list-sort-key + (car tabulated-list-sort-key)) + (let* ((sort-column (car tabulated-list-sort-key)) + (n (tabulated-list--column-number sort-column)) + (sorter (nth 2 (aref tabulated-list-format n)))) + (when (eq sorter t); Default sorter checks column N: + (setq sorter (lambda (A B) + (let ((a (aref (cadr A) n)) + (b (aref (cadr B) n))) + (string< (if (stringp a) a (car a)) + (if (stringp b) b (car b))))))) + ;; Reversed order. + (if (cdr tabulated-list-sort-key) + (lambda (a b) (not (funcall sorter a b))) + sorter)))) + +(defun tabulated-list-print (&optional remember-pos update) "Populate the current Tabulated List mode buffer. This sorts the `tabulated-list-entries' list if sorting is specified by `tabulated-list-sort-key'. It then erases the buffer and inserts the entries with `tabulated-list-printer'. Optional argument REMEMBER-POS, if non-nil, means to move point -to the entry with the same ID element as the current line." +to the entry with the same ID element as the current line and +recenter window line accordingly. + +Non-nil UPDATE argument means to use an alternative printing +method which is faster if most entries haven't changed since the +last print. The only difference in outcome is that tags will not +be removed from entries that haven't changed (see +`tabulated-list-put-tag'). Don't use this immediately after +changing `tabulated-list-sort-key'." (let ((inhibit-read-only t) (entries (if (functionp tabulated-list-entries) (funcall tabulated-list-entries) tabulated-list-entries)) - entry-id saved-pt saved-col) + (sorter (tabulated-list--get-sorter)) + entry-id saved-pt saved-col window-line) (and remember-pos + (when (eq (window-buffer) (current-buffer)) + (setq window-line + (count-screen-lines (window-start) (point)))) (setq entry-id (tabulated-list-get-id)) (setq saved-col (current-column))) - (erase-buffer) - (unless tabulated-list-use-header-line - (tabulated-list-print-fake-header)) ;; Sort the entries, if necessary. - (when (and tabulated-list-sort-key - (car tabulated-list-sort-key)) - (let* ((sort-column (car tabulated-list-sort-key)) - (n (tabulated-list--column-number sort-column)) - (sorter (nth 2 (aref tabulated-list-format n)))) - ;; Is the specified column sortable? - (when sorter - (when (eq sorter t) - (setq sorter ; Default sorter checks column N: - (lambda (A B) - (setq A (aref (cadr A) n)) - (setq B (aref (cadr B) n)) - (string< (if (stringp A) A (car A)) - (if (stringp B) B (car B)))))) - (setq entries (sort entries sorter)) - (if (cdr tabulated-list-sort-key) - (setq entries (nreverse entries))) - (unless (functionp tabulated-list-entries) - (setq tabulated-list-entries entries))))) - ;; Print the resulting list. + (when sorter + (setq entries (sort entries sorter))) + (unless (functionp tabulated-list-entries) + (setq tabulated-list-entries entries)) + ;; Without a sorter, we have no way to just update. + (when (and update (not sorter)) + (setq update nil)) + (if update (goto-char (point-min)) + ;; Redo the buffer, unless we're just updating. + (erase-buffer) + (unless tabulated-list-use-header-line + (tabulated-list-print-fake-header))) + ;; Finally, print the resulting list. (dolist (elt entries) - (and entry-id - (equal entry-id (car elt)) - (setq saved-pt (point))) - (apply tabulated-list-printer elt)) + (let ((id (car elt))) + (and entry-id + (equal entry-id id) + (setq entry-id nil + saved-pt (point))) + ;; If the buffer this empty, simply print each elt. + (if (eobp) + (apply tabulated-list-printer elt) + (while (let ((local-id (tabulated-list-get-id))) + ;; If we find id, then nothing to update. + (cond ((equal id local-id) + (forward-line 1) + nil) + ;; If this entry sorts after id (or it's the + ;; end), then just insert id and move on. + ((funcall sorter elt + ;; FIXME: Might be faster if + ;; don't construct this list. + (list local-id (tabulated-list-get-entry))) + (apply tabulated-list-printer elt) + nil) + ;; We find an entry that sorts before id, + ;; it needs to be deleted. + (t t))) + (let ((old (point))) + (forward-line 1) + (delete-region old (point))))))) (set-buffer-modified-p nil) ;; If REMEMBER-POS was specified, move to the "old" location. (if saved-pt (progn (goto-char saved-pt) (move-to-column saved-col) - (when (eq (window-buffer) (current-buffer)) - (recenter))) + (when window-line + (recenter window-line))) (goto-char (point-min))))) (defun tabulated-list-print-entry (id cols) @@ -341,8 +391,10 @@ of column descriptors." (dotimes (n ncols) (setq x (tabulated-list-print-col n (aref cols n) x))) (insert ?\n) - (put-text-property beg (point) 'tabulated-list-id id) - (put-text-property beg (point) 'tabulated-list-entry cols))) + ;; Ever so slightly faster than calling `put-text-property' twice. + (add-text-properties + beg (point) + `(tabulated-list-id ,id tabulated-list-entry ,cols)))) (defun tabulated-list-print-col (n col-desc x) "Insert a specified Tabulated List entry at point. diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el index a91704a11bf..110c63f777a 100644 --- a/lisp/emacs-lisp/testcover.el +++ b/lisp/emacs-lisp/testcover.el @@ -1,4 +1,4 @@ -;;;; testcover.el -- Visual code-coverage tool +;;;; testcover.el -- Visual code-coverage tool -*- lexical-binding:t -*- ;; Copyright (C) 2002-2015 Free Software Foundation, Inc. @@ -191,8 +191,9 @@ problems with type-ahead or post-command-hook, etc. If BYTE-COMPILE is non-nil, byte-compiles each function after instrumenting." (interactive "fStart covering file: ") (let ((buf (find-file filename)) - (load-read-function 'testcover-read) - (edebug-all-defs t)) + (load-read-function load-read-function)) + (add-function :around load-read-function + #'testcover--read) (setq edebug-form-data nil testcover-module-constants nil testcover-module-1value-functions nil) @@ -207,22 +208,26 @@ non-nil, byte-compiles each function after instrumenting." (defun testcover-this-defun () "Start coverage on function under point." (interactive) - (let* ((edebug-all-defs t) - (x (symbol-function (eval-defun nil)))) + (let ((x (let ((edebug-all-defs t)) + (symbol-function (eval-defun nil))))) (testcover-reinstrument x) x)) -(defun testcover-read (&optional stream) +(defun testcover--read (orig &optional stream) "Read a form using edebug, changing edebug callbacks to testcover callbacks." - (let ((x (edebug-read stream))) - (testcover-reinstrument x) - x)) + (or stream (setq stream standard-input)) + (if (eq stream (current-buffer)) + (let ((x (let ((edebug-all-defs t)) + (edebug-read-and-maybe-wrap-form)))) + (testcover-reinstrument x) + x) + (funcall (or orig #'read) stream))) (defun testcover-reinstrument (form) "Reinstruments FORM to use testcover instead of edebug. This function modifies the list that FORM points to. Result is nil if FORM should return multiple values, t if should always return same -value, 'maybe if either is acceptable." +value, `maybe' if either is acceptable." (let ((fun (car-safe form)) id val) (cond @@ -495,7 +500,7 @@ eliminated by adding more test cases." (len (length points)) (changed (buffer-modified-p)) (coverage (get def 'edebug-coverage)) - ov j item) + ov j) (or (and def-mark points coverage) (error "Missing edebug data for function %s" def)) (when (> len 0) diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index c6d7b5018cd..e91ce80bbe2 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el @@ -790,6 +790,8 @@ Repeating prefix key when region is active works as a single prefix key." ;;; Region specific commands +(declare-function delete-active-region "delsel" (&optional killp)) + (defun cua-delete-region () "Delete the active region. Save a copy in register 0 if `cua-delete-copy-to-register-0' is non-nil." diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el index bd03a870fdb..5e1620df57c 100644 --- a/lisp/emulation/viper-cmd.el +++ b/lisp/emulation/viper-cmd.el @@ -4400,7 +4400,7 @@ and regexp replace." ;; etc. (defun viper-cycle-through-mark-ring () "Visit previous locations on the mark ring. -One can use `` and '' to temporarily jump 1 step back." +One can use \\=`\\=` and '' to temporarily jump 1 step back." (let* ((sv-pt (point))) ;; if repeated `m,' command, pop the previously saved mark. ;; Prev saved mark is actually prev saved point. It is used if the @@ -4533,7 +4533,7 @@ One can use `` and '' to temporarily jump 1 step back." (interactive) (if viper-cted (let ((p (point)) (c (current-column)) bol (indent t)) - (if (looking-back "[0^]") + (if (looking-back "[0^]" (1- (point))) (progn (if (eq ?^ (preceding-char)) (setq viper-preserve-indent t)) @@ -4545,7 +4545,7 @@ One can use `` and '' to temporarily jump 1 step back." (delete-region (point) p) (if indent (indent-to (- c viper-shift-width))) - (if (or (bolp) (looking-back "[^ \t]")) + (if (or (bolp) (looking-back "[^ \t]" (1- (point)))) (setq viper-cted nil))))) ;; do smart indent diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el index 212f0533b8f..e6bcf8f89a4 100644 --- a/lisp/emulation/viper-ex.el +++ b/lisp/emulation/viper-ex.el @@ -455,7 +455,8 @@ reversed." (while (and (not (eolp)) cont) ;;(re-search-forward "[^/]*/") (re-search-forward "[^/]*\\(/\\|\n\\)") - (if (not (looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/")) + (if (not (looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/" + (line-beginning-position 0))) (setq cont nil)))) (backward-char 1) (setq ex-token (buffer-substring (point) (mark t))) @@ -468,7 +469,8 @@ reversed." (while (and (not (eolp)) cont) ;;(re-search-forward "[^\\?]*\\?") (re-search-forward "[^\\?]*\\(\\?\\|\n\\)") - (if (not (looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?")) + (if (not (looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?" + (line-beginning-position 0))) (setq cont nil)) (backward-char 1) (if (not (looking-at "\n")) (forward-char 1)))) @@ -563,14 +565,18 @@ reversed." save-pos (point))) (if (or (= dist 0) - (looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)") + (looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)" + (line-beginning-position)) (looking-back - "^[ \t]*[a-zA-Z!=>&~][ \t]*[/?]*[ \t]+[a-zA-Z!=>&~]+")) + "^[ \t]*[a-zA-Z!=>&~][ \t]*[/?]*[ \t]+[a-zA-Z!=>&~]+" + (line-beginning-position))) ;; Preceding characters are not the ones allowed in an Ex command ;; or we have typed past command name. ;; Note: we didn't do parsing, so there can be surprises. - (if (or (looking-back "[a-zA-Z!=>&~][ \t]*[/?]*[ \t]*") - (looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)") + (if (or (looking-back "[a-zA-Z!=>&~][ \t]*[/?]*[ \t]*" + (line-beginning-position)) + (looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)" + (line-beginning-position)) (looking-at "[^ \t\n\C-m]")) nil (with-output-to-temp-buffer "*Completions*" @@ -747,7 +753,8 @@ reversed." (error "Missing closing delimiter for global regexp") (goto-char (point-max)))) (if (not (looking-back - (format "[^\\\\]\\(\\\\\\\\\\)*\\\\%c" c))) + (format "[^\\\\]\\(\\\\\\\\\\)*\\\\%c" c) + (line-beginning-position 0))) (setq cont nil) ;; we are at an escaped delimiter: unescape it and continue (delete-char -2) @@ -963,7 +970,7 @@ reversed." (while (re-search-forward "%\\|#" nil t) (let ((data (match-data)) (char (buffer-substring (match-beginning 0) (match-end 0)))) - (if (looking-back (concat "\\\\" char)) + (if (looking-back "\\\\." (- (point) 2)) (replace-match char) (store-match-data data) (if (string= char "%") @@ -989,7 +996,7 @@ reversed." (get-buffer-create viper-ex-work-buf-name)) (skip-chars-forward " \t") (if (looking-at "!") - (if (and (not (looking-back "[ \t]")) + (if (and (not (looking-back "[ \t]" (1- (point)))) ;; read doesn't have a corresponding :r! form, so ! is ;; immediately interpreted as a shell command. (not (string= ex-token "read"))) @@ -1066,7 +1073,7 @@ reversed." (cond ((ex-cmd-accepts-multiple-files-p ex-token) (exit-minibuffer)) ;; apparently the argument to an Ex command is ;; supposed to be a shell command - ((looking-back "^[ \t]*!.*") + ((looking-back "^[ \t]*!.*" (line-beginning-position)) (setq ex-cmdfile t) (insert " ")) (t diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el index 59f47525e55..c4dc569efb3 100644 --- a/lisp/emulation/viper-util.el +++ b/lisp/emulation/viper-util.el @@ -1301,7 +1301,7 @@ Usually contains ` ', linefeed, TAB or formfeed.") )) ;; SYMBOL is used because customize requires it, but it is ignored, unless it -;; is `nil'. If nil, use setq. +;; is nil. If nil, use setq. (defun viper-set-syntax-preference (&optional symbol value) "Set Viper syntax preference. If called interactively or if SYMBOL is nil, sets syntax preference in current diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 8ce199fbcbb..ee81113d208 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -652,7 +652,7 @@ EVENT is the message received from the closed connection process." (run-at-time erc-server-reconnect-timeout nil #'erc-process-sentinel-2 event buffer) - (error (concat "`erc-server-reconnect-timeout`" + (error (concat "`erc-server-reconnect-timeout'" " must be a number"))))))))))) (defun erc-process-sentinel-1 (event buffer) diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el index 5f91be8c899..de2a2ff6e76 100644 --- a/lisp/erc/erc-ezbounce.el +++ b/lisp/erc/erc-ezbounce.el @@ -78,7 +78,7 @@ The alist's format is as follows: (defun erc-ezb-get-login (server port) "Return an appropriate EZBounce login for SERVER and PORT. Look up entries in `erc-ezb-login-alist'. If the username or password -in the alist is `nil', prompt for the appropriate values." +in the alist is nil, prompt for the appropriate values." (let ((login (cdr (assoc (cons server port) erc-ezb-login-alist)))) (when login (let ((username (car login)) diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el index 7f901edfb8f..e46ac68b259 100644 --- a/lisp/erc/erc-pcomplete.el +++ b/lisp/erc/erc-pcomplete.el @@ -33,7 +33,7 @@ ;; ;; If you want nickname completions ordered such that the most recent ;; speakers are listed first, set -;; `erc-pcomplete-order-nickname-completions' to `t'. +;; `erc-pcomplete-order-nickname-completions' to t. ;; ;; See CREDITS for other contributors. ;; diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el index cbcd055c3b0..d264c5960fe 100644 --- a/lisp/erc/erc-stamp.el +++ b/lisp/erc/erc-stamp.el @@ -370,8 +370,8 @@ Return the empty string if FORMAT is nil." (and erc-echo-timestamps (not (bound-and-true-p cursor-sensor-mode)) (cursor-sensor-mode 1)) (if erc-hide-timestamps - (add-to-invisibility-spec 'timespec) - (remove-from-invisibility-spec 'timespec))) + (add-to-invisibility-spec 'timestamp) + (remove-from-invisibility-spec 'timestamp))) (defun erc-hide-timestamps () "Hide timestamp information from display." diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index cf422f1cfc5..a860951634e 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -1,3 +1,4 @@ + ;; erc.el --- An Emacs Internet Relay Chat client -*- lexical-binding:t -*- ;; Copyright (C) 1997-2015 Free Software Foundation, Inc. @@ -12,6 +13,7 @@ ;; Kelvin White (kwhite@gnu.org) ;; Maintainer: emacs-devel@gnu.org ;; Keywords: IRC, chat, client, Internet + ;; Version: 5.3 ;; This file is part of GNU Emacs. @@ -37,15 +39,13 @@ ;; * http://sv.gnu.org/projects/erc/ ;; * http://www.emacswiki.org/cgi-bin/wiki/ERC + + ;; As of 2006-06-13, ERC development is now hosted on Savannah ;; (http://sv.gnu.org/projects/erc). I invite everyone who wants to ;; hack on it to contact me <mwolson@gnu.org> in order to get write ;; access to the shared Arch archive. -;; Installation: - -;; Put erc.el in your load-path, and put (require 'erc) in your .emacs. - ;; Configuration: ;; Use M-x customize-group RET erc RET to get an overview @@ -258,11 +258,25 @@ If nil, only \"> \" will be shown." (repeat :inline t :tag "Others" (string :tag "IRC Message Type")))) (defcustom erc-hide-list nil - "List of IRC type messages to hide. + "A global list of IRC message types to hide. A typical value would be '(\"JOIN\" \"PART\" \"QUIT\")." :group 'erc-ignore :type 'erc-message-type) +(defcustom erc-network-hide-list nil + "A list of IRC networks to hide message types from. +A typical value would be '((\"freenode\" \"MODE\") +(\"OFTC\" \"JOIN\" \"QUIT\"))." + :group 'erc-ignore + :type 'erc-message-type) + +(defcustom erc-channel-hide-list nil + "A list of IRC channels to hide message types from. +A typical value would be '((\"#emacs\" \"QUIT\" \JOIN\") +(\"#erc\" \"NICK\")." + :group 'erc-ignore + :type 'erc-message-type) + (defvar erc-session-password nil "The password used for the current session.") (make-variable-buffer-local 'erc-session-password) @@ -2460,7 +2474,7 @@ on the given server.") (defcustom erc-lurker-trim-nicks t "If t, trim trailing `erc-lurker-ignore-chars' from nicks. -This causes e.g. nick and nick` to be considered as the same +This causes e.g. nick and nick\\=` to be considered as the same individual for activity tracking and lurkiness detection purposes." :group 'erc-lurker @@ -2616,15 +2630,36 @@ otherwise `erc-server-announced-name'. SERVER is matched against erc-common-server-suffixes)) erc-server-announced-name))) +(defun erc-add-targets (scope target-list) + (let ((targets + (mapcar (lambda (targets) (member scope targets)) target-list))) + (cdr (apply 'append (delete nil targets))))) + (defun erc-hide-current-message-p (parsed) "Predicate indicating whether the parsed ERC response PARSED should be hidden. Messages are always hidden if the message type of PARSED appears in -`erc-hide-list'. In addition, messages whose type is a member of -`erc-lurker-hide-list' are hidden if `erc-lurker-p' returns true." +`erc-hide-list'. Message types that appear in `erc-network-hide-list' +or `erc-channel-hide-list' are are only hidden if the target matches +the network or channel in the list. In addition, messages whose type +is a member of `erc-lurker-hide-list' are hidden if `erc-lurker-p' +returns non-nil." (let* ((command (erc-response.command parsed)) - (sender (car (erc-parse-user (erc-response.sender parsed))))) + (sender (car (erc-parse-user (erc-response.sender parsed)))) + (channel (nth 1 (erc-response.command-args parsed))) + (network (or (and (fboundp 'erc-network-name) (erc-network-name)) + (erc-shorten-server-name + (or erc-server-announced-name + erc-session-server)))) + (current-hide-list + (when erc-network-hide-list + (erc-add-targets network erc-network-hide-list))) + (current-hide-list + (apply 'append current-hide-list + (when erc-channel-hide-list + (erc-add-targets channel erc-channel-hide-list))))) (or (member command erc-hide-list) + (member command current-hide-list) (and (member command erc-lurker-hide-list) (erc-lurker-p sender))))) (defun erc-display-message (parsed type buffer msg &rest args) @@ -4150,7 +4185,7 @@ See also `erc-display-error-notice'." ;; server's setting if we haven't ;; established a connection yet (- 9 (length erc-nick-uniquifier)))) - erc-nick-uniquifier))) + erc-nick-uniqifier))) (erc-cmd-NICK newnick) (erc-display-error-notice nil diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index dbea9e5ceec..93b275e2ffb 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -405,7 +405,9 @@ to writing a completion function." "Generate list of applicable, visible commands." (let ((filename (pcomplete-arg)) glob-name) (if (file-name-directory filename) - (pcomplete-executables) + (if eshell-force-execution + (pcomplete-dirs-or-entries nil 'file-readable-p) + (pcomplete-executables)) (if (and (> (length filename) 0) (eq (aref filename 0) eshell-explicit-command-char)) (setq filename (substring filename 1) @@ -416,6 +418,8 @@ to writing a completion function." (expand-file-name default-directory))) (path "") (comps-in-path ()) (file "") (filepath "") (completions ())) + (if (eshell-under-windows-p) + (push "." paths)) ;; Go thru each path in the search path, finding completions. (while paths (setq path (file-name-as-directory @@ -431,7 +435,9 @@ to writing a completion function." (if (and (not (member file completions)) ; (or (string-equal path cwd) (not (file-directory-p filepath))) - (file-executable-p filepath)) + (if eshell-force-execution + (file-readable-p filepath) + (file-executable-p filepath))) (setq completions (cons file completions))) (setq comps-in-path (cdr comps-in-path))) (setq paths (cdr paths))) diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el index 84d46dcfeeb..8a3b5817d5f 100644 --- a/lisp/eshell/em-dirs.el +++ b/lisp/eshell/em-dirs.el @@ -300,7 +300,7 @@ Thus, this does not include the current directory.") eshell-user-names))))))) (defun eshell/pwd (&rest args) - "Change output from `pwd` to be cleaner." + "Change output from ‘pwd’ to be cleaner." (let* ((path default-directory) (len (length path))) (if (and (> len 1) @@ -348,8 +348,6 @@ in the minibuffer: index (1+ index))))) oldpath)) -(defvar dired-directory) - (defun eshell/cd (&rest args) ; all but first ignored "Alias to extend the behavior of `cd'." (setq args (eshell-flatten-list args)) @@ -394,11 +392,11 @@ in the minibuffer: (path (setq path (eshell-expand-multiple-dots path)))) (unless handled - (setq dired-directory (or path "~")) - (let ((curdir (eshell/pwd))) - (unless (equal curdir dired-directory) + (let ((curdir (eshell/pwd)) + (newdir (or path "~"))) + (unless (equal curdir newdir) (eshell-add-to-dir-ring curdir)) - (let ((result (cd dired-directory))) + (let ((result (cd newdir))) (and eshell-cd-shows-directory (eshell-printn result))) (run-hooks 'eshell-directory-change-hook) diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el index 4a6ac235449..9ac281372cf 100644 --- a/lisp/eshell/em-term.el +++ b/lisp/eshell/em-term.el @@ -132,6 +132,13 @@ character to the invoked process." :type 'boolean :group 'eshell-term) +(defcustom eshell-destroy-buffer-when-process-dies nil + "If non-nil, term buffers are destroyed after their processes die. +WARNING: Setting this to non-nil may result in unexpected +behavior for short-lived processes, see bug#18108." + :type 'boolean + :group 'eshell-term) + ;;; Internal Variables: (defvar eshell-parent-buffer) @@ -190,20 +197,24 @@ allowed." nil) ;; Process sentinels receive two arguments. -(defun eshell-term-sentinel (proc _string) - "Destroy the buffer visiting PROC." - (let ((proc-buf (process-buffer proc))) - (when (and proc-buf (buffer-live-p proc-buf) - (not (eq 'run (process-status proc))) - (= (process-exit-status proc) 0)) - (if (eq (current-buffer) proc-buf) - (let ((buf (and (boundp 'eshell-parent-buffer) - eshell-parent-buffer - (buffer-live-p eshell-parent-buffer) - eshell-parent-buffer))) - (if buf - (switch-to-buffer buf)))) - (kill-buffer proc-buf)))) +(defun eshell-term-sentinel (proc msg) + "Clean up the buffer visiting PROC. +If `eshell-destroy-buffer-when-process-dies' is non-nil, destroy +the buffer." + (term-sentinel proc msg) ;; First call the normal term sentinel. + (when eshell-destroy-buffer-when-process-dies + (let ((proc-buf (process-buffer proc))) + (when (and proc-buf (buffer-live-p proc-buf) + (not (eq 'run (process-status proc))) + (= (process-exit-status proc) 0)) + (if (eq (current-buffer) proc-buf) + (let ((buf (and (boundp 'eshell-parent-buffer) + eshell-parent-buffer + (buffer-live-p eshell-parent-buffer) + eshell-parent-buffer))) + (if buf + (switch-to-buffer buf)))) + (kill-buffer proc-buf))))) ;; jww (1999-09-17): The code below will allow Eshell to send input ;; characters directly to the currently running interactive process. diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el index a5f697f037a..49ba72735da 100644 --- a/lisp/eshell/esh-arg.el +++ b/lisp/eshell/esh-arg.el @@ -357,22 +357,31 @@ after are both returned." (goto-char (1+ end))))))) (defun eshell-parse-special-reference () - "Parse a special syntax reference, of the form '#<type arg>'." - (if (and (not eshell-current-argument) - (not eshell-current-quoted) - (looking-at "#<\\(buffer\\|process\\)\\s-")) - (let ((here (point))) - (goto-char (match-end 0)) - (let* ((buffer-p (string= (match-string 1) "buffer")) - (end (eshell-find-delimiter ?\< ?\>))) - (if (not end) - (throw 'eshell-incomplete ?\<) - (if (eshell-arg-delimiter (1+ end)) - (prog1 - (list (if buffer-p 'get-buffer-create 'get-process) - (buffer-substring-no-properties (point) end)) - (goto-char (1+ end))) - (ignore (goto-char here)))))))) + "Parse a special syntax reference, of the form '#<args>'. + +args := `type' `whitespace' `arbitrary-args' | `arbitrary-args' +type := \"buffer\" or \"process\" +arbitrary-args := any string of characters. + +If the form has no 'type', the syntax is parsed as if 'type' were +\"buffer\"." + (when (and (not eshell-current-argument) + (not eshell-current-quoted) + (looking-at "#<\\(\\(buffer\\|process\\)\\s-\\)?")) + (let ((here (point))) + (goto-char (match-end 0)) ;; Go to the end of the match. + (let ((buffer-p (if (match-string 1) + (string= (match-string 2) "buffer") + t)) ;; buffer-p is non-nil by default. + (end (eshell-find-delimiter ?\< ?\>))) + (when (not end) + (throw 'eshell-incomplete ?\<)) + (if (eshell-arg-delimiter (1+ end)) + (prog1 + (list (if buffer-p 'get-buffer-create 'get-process) + (buffer-substring-no-properties (point) end)) + (goto-char (1+ end))) + (ignore (goto-char here))))))) (defun eshell-parse-delimiter () "Parse an argument delimiter, which is essentially a command operator." diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el index 0b25b31eff9..91c4f4b6095 100644 --- a/lisp/eshell/esh-ext.el +++ b/lisp/eshell/esh-ext.el @@ -60,14 +60,15 @@ loaded into memory, thus beginning a new process." :type '(repeat string) :group 'eshell-ext) -(defcustom eshell-force-execution nil - "If non-nil, try to execute binary files regardless of permissions. +(defcustom eshell-force-execution + (not (null (memq system-type '(windows-nt ms-dos)))) + "If non-nil, try to execute files regardless of execute permissions. This can be useful on systems like Windows, where the operating system -doesn't happen to honor the permission bits in certain cases; or in -cases where you want to associate an interpreter with a particular -kind of script file, but the language won't let you but a '#!' -interpreter line in the file, and you don't want to make it executable -since nothing else but Eshell will be able to understand +doesn't support the execution bit for shell scripts; or in cases where +you want to associate an interpreter with a particular kind of script +file, but the language won't let you but a '#!' interpreter line in +the file, and you don't want to make it executable since nothing else +but Eshell will be able to understand `eshell-interpreter-alist'." :type 'boolean :group 'eshell-ext) @@ -78,6 +79,8 @@ since nothing else but Eshell will be able to understand name (let ((list (eshell-parse-colon-path eshell-path-env)) suffixes n1 n2 file) + (if (eshell-under-windows-p) + (push "." list)) (while list (setq n1 (concat (car list) name)) (setq suffixes eshell-binary-suffixes) diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el index 7dfc39f3202..dc731bc928a 100644 --- a/lisp/eshell/esh-io.el +++ b/lisp/eshell/esh-io.el @@ -31,6 +31,18 @@ ;; consistent with most shells. Therefore, only unique features are ;; mentioned here. ;; +;;;_* Redirect to a Buffer or Process +;; +;; Buffers and processes can be named with '#<buffer buffer-name>' and +;; '#<process process-name>', respectively. As a shorthand, +;; '#<buffer-name>' without the explicit "buffer" arg is equivalent to +;; '#<buffer buffer-name>'. +;; +;; echo hello > #<buffer *scratch*> # Overwrite '*scratch*' with 'hello'. +;; echo hello > #<*scratch*> # Same as the command above. +;; +;; echo hello > #<process shell> # Pipe "hello" into the shell process. +;; ;;;_* Insertion ;; ;; To insert at the location of point in a buffer, use '>>>': @@ -98,19 +110,6 @@ other buffers) ." :type 'integer :group 'eshell-io) -(defcustom eshell-buffer-shorthand nil - "If non-nil, a symbol name can be used for a buffer in redirection. -If nil, redirecting to a buffer requires buffer name syntax. If this -variable is set, redirection directly to Lisp symbols will be -impossible. - -Example: - - echo hello > '*scratch* ; works if `eshell-buffer-shorthand' is t - echo hello > #<buffer *scratch*> ; always works" - :type 'boolean - :group 'eshell-io) - (defcustom eshell-print-queue-size 5 "The size of the print queue, for doing buffered printing. This is basically a speed enhancement, to avoid blocking the Lisp code @@ -355,21 +354,14 @@ it defaults to `insert'." (goto-char (point-max)))) (point-marker)))))) - ((or (bufferp target) - (and (boundp 'eshell-buffer-shorthand) - (symbol-value 'eshell-buffer-shorthand) - (symbolp target) - (not (memq target '(t nil))))) - (let ((buf (if (bufferp target) - target - (get-buffer-create - (symbol-name target))))) - (with-current-buffer buf - (cond ((eq mode 'overwrite) - (erase-buffer)) - ((eq mode 'append) - (goto-char (point-max)))) - (point-marker)))) + + ((bufferp target) + (with-current-buffer target + (cond ((eq mode 'overwrite) + (erase-buffer)) + ((eq mode 'append) + (goto-char (point-max)))) + (point-marker))) ((functionp target) nil) diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index 15120cb61d4..22ccf4e91f9 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el @@ -206,7 +206,7 @@ This is used by `eshell-watch-for-password-prompt'." ;; Internal Variables: -;; these are only set to `nil' initially for the sake of the +;; these are only set to nil initially for the sake of the ;; byte-compiler, when compiling other files which `require' this one (defvar eshell-mode nil) (defvar eshell-mode-map nil) @@ -344,7 +344,6 @@ and the hook `eshell-exit-hook'." (setq local-abbrev-table eshell-mode-abbrev-table) - (set (make-local-variable 'dired-directory) default-directory) (set (make-local-variable 'list-buffers-directory) (expand-file-name default-directory)) @@ -871,12 +870,20 @@ When run interactively, widen the buffer first." (goto-char (point-max)) (recenter -1)) -(defun eshell/clear () - "Scroll contents of eshell window out of sight, leaving a blank window." +(defun eshell/clear (&optional scrollback) + "Scroll contents of eshell window out of sight, leaving a blank window. +If SCROLLBACK is non-nil, clear the scrollback contents." (interactive) - (let ((number-newlines (count-lines (window-start) (point)))) - (insert (make-string number-newlines ?\n))) - (eshell-send-input)) + (if scrollback + (eshell/clear-scrollback) + (let ((number-newlines (count-lines (window-start) (point)))) + (insert (make-string number-newlines ?\n)) + (eshell-send-input)))) + +(defun eshell/clear-scrollback () + "Clear the scrollback content of the eshell window." + (let ((inhibit-read-only t)) + (erase-buffer))) (defun eshell-get-old-input (&optional use-current-region) "Return the command input on the current line." diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 697f97e0460..170779fc5cd 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -33,7 +33,7 @@ ;;; User Variables: (defcustom eshell-stringify-t t - "If non-nil, the string representation of t is 't'. + "If non-nil, the string representation of t is \"t\". If nil, t will be represented only in the exit code of the function, and not printed as a string. This causes Lisp functions to behave similarly to external commands, as far as successful result output." diff --git a/lisp/face-remap.el b/lisp/face-remap.el index 3ec074b5599..93eec5bd13c 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el @@ -187,7 +187,7 @@ of face attribute/value pairs, like in a `face' text property. If SPECS is empty, call `face-remap-reset-base' to use the normal definition of FACE as the base remapping; note that this is -different from SPECS containing a single value `nil', which means +different from SPECS containing a single value nil, which means not to inherit from the global definition of FACE at all." (while (and (consp specs) (not (null (car specs))) (null (cdr specs))) (setq specs (car specs))) diff --git a/lisp/facemenu.el b/lisp/facemenu.el index 2c246b44d54..3d5894309df 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -458,7 +458,7 @@ These special properties include `invisible', `intangible' and `read-only'." (defcustom list-colors-sort nil "Color sort order for `list-colors-display'. -`nil' means default implementation-dependent order (defined in `x-colors'). +nil means default implementation-dependent order (defined in `x-colors'). `name' sorts by color name. `rgb' sorts by red, green, blue components. `(rgb-dist . COLOR)' sorts by the RGB distance to the specified color. diff --git a/lisp/faces.el b/lisp/faces.el index 54e444b730a..4366c0b9f23 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -619,7 +619,7 @@ VALUE must be a string specifying the font family `:foundry' VALUE must be a string specifying the font foundry, -e.g. ``adobe''. If a font foundry is specified, wild-cards `*' +e.g., \"adobe\". If a font foundry is specified, wild-cards `*' and `?' are allowed. `:width' @@ -892,7 +892,7 @@ where COLOR is a string or `foreground-color', and STYLE is either foreground color. :style may be omitted, which means to use a line. FRAME nil or not specified means change face on all frames. -Use `set-face-attribute' to ``unspecify'' underlining." +Use `set-face-attribute' to \"unspecify\" underlining." (interactive (read-face-and-attribute :underline)) (set-face-attribute face frame :underline underline)) @@ -905,7 +905,7 @@ Use `set-face-attribute' to ``unspecify'' underlining." INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video. INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video. FRAME nil or not specified means change face on all frames. -Use `set-face-attribute' to ``unspecify'' the inverse video attribute." +Use `set-face-attribute' to \"unspecify\" the inverse video attribute." (interactive (let ((list (read-face-and-attribute :inverse-video))) (list (car list) (if (cadr list) t)))) @@ -1428,18 +1428,19 @@ If FRAME is omitted or nil, use the selected frame." (when alias (setq face alias) (insert - (format "\n %s is an alias for the face `%s'.\n%s" + (format "\n %s is an alias for the face ‘%s’.\n%s" f alias (if (setq obsolete (get f 'obsolete-face)) - (format " This face is obsolete%s; use `%s' instead.\n" + (format " This face is obsolete%s; use ‘%s’ instead.\n" (if (stringp obsolete) (format " since %s" obsolete) "") alias) "")))) (insert "\nDocumentation:\n" - (or (face-documentation face) - "Not documented as a face.") + (substitute-command-keys + (or (face-documentation face) + "Not documented as a face.")) "\n\n")) (with-current-buffer standard-output (save-excursion @@ -1448,12 +1449,12 @@ If FRAME is omitted or nil, use the selected frame." (help-xref-button 1 'help-customize-face f))) (setq file-name (find-lisp-object-file-name f 'defface)) (when file-name - (princ "Defined in `") + (princ "Defined in ‘") (princ (file-name-nondirectory file-name)) - (princ "'") + (princ "’") ;; Make a hyperlink to the library. (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-face-def f file-name)) (princ ".") (terpri) @@ -1937,8 +1938,9 @@ Return nil if there is no face." (dolist (face faceprop) (if (facep face) (push face faces)))))) - (setq faces (delete-dups (nreverse faces))) - (if multiple faces (car faces)))) + (if multiple + (delete-dups (nreverse faces)) + (car (last faces))))) (defun foreground-color-at-point () "Return the foreground color of the character after point." @@ -2042,7 +2044,7 @@ Value is the new parameter list." "Create and return a frame with frame parameters PARAMETERS. If PARAMETERS specify a frame name, handle X geometry resources for that name. If PARAMETERS includes a `reverse' parameter, or -the X resource ``reverseVideo'' is present, handle that." +the X resource \"reverseVideo\" is present, handle that." (setq parameters (x-handle-named-frame-geometry parameters)) (let* ((params (copy-tree parameters)) (visibility-spec (assq 'visibility parameters)) diff --git a/lisp/ffap.el b/lisp/ffap.el index 452275ab8c2..d78fd4c4b31 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el @@ -1288,7 +1288,7 @@ which may actually result in an URL rather than a filename." nil nil (if dir (cons guess (length dir)) guess) - (list 'file-name-history) + 'file-name-history (and buffer-file-name (abbreviate-file-name buffer-file-name))))) ;; Remove the special handler manually. We used to just let-bind diff --git a/lisp/files.el b/lisp/files.el index 5ef7318ca45..26f9f706c15 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -55,7 +55,7 @@ FROM with TO when it appears in a directory name. This replacement is done when setting up the default directory of a newly visited file. FROM is matched against directory names anchored at the first -character, so it should start with a \"\\\\`\", or, if directory +character, so it should start with a \"\\\\\\=`\", or, if directory names cannot have embedded newlines, with a \"^\". FROM and TO should be equivalent names, which refer to the @@ -654,10 +654,14 @@ the value of `default-directory'." 'file-directory-p)) -(defun pwd () - "Show the current default directory." - (interactive nil) - (message "Directory %s" default-directory)) +(defun pwd (&optional insert) + "Show the current default directory. +With prefix argument INSERT, insert the current default directory +at point instead." + (interactive "P") + (if insert + (insert default-directory) + (message "Directory %s" default-directory))) (defvar cd-path nil "Value of the CDPATH environment variable, as a list. @@ -1088,14 +1092,14 @@ Tip: You can use this expansion of remote identifier components (defcustom remote-file-name-inhibit-cache 10 "Whether to use the remote file-name cache for read access. -When `nil', never expire cached values (caution) -When `t', never use the cache (safe, but may be slow) +When nil, never expire cached values (caution) +When t, never use the cache (safe, but may be slow) A number means use cached values for that amount of seconds since caching. The attributes of remote files are cached for better performance. If they are changed outside of Emacs's control, the cached values become invalid, and must be reread. If you are sure that nothing -other than Emacs changes the files, you can set this variable to `nil'. +other than Emacs changes the files, you can set this variable to nil. If a remote file is checked regularly, it might be a good idea to let-bind this variable to a value less than the interval between @@ -2519,7 +2523,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|7Z\\)\\'" . archive-mode) ;; this has lower priority to avoid matching changelog.sgml etc. ("[cC]hange[lL]og[-.][-0-9a-z]+\\'" . change-log-mode) ;; either user's dot-files or under /etc or some such - ("/\\.?\\(?:gnokiirc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode) + ("/\\.?\\(?:gitconfig\\|gnokiirc\\|hgrc\\|kde.*rc\\|mime\\.types\\|wgetrc\\)\\'" . conf-mode) ;; alas not all ~/.*rc files are like this ("/\\.\\(?:enigma\\|gltron\\|gtk\\|hxplayer\\|net\\|neverball\\|qt/.+\\|realplayer\\|scummvm\\|sversion\\|sylpheed/.+\\|xmp\\)rc\\'" . conf-mode) ("/\\.\\(?:gdbtkinit\\|grip\\|orbital/.+txt\\|rhosts\\|tuxracer/options\\)\\'" . conf-mode) @@ -3375,7 +3379,7 @@ local variables, but directory-local variables may still be applied." (error "Local variables entry is missing the prefix")) (end-of-line) ;; Discard the suffix. - (if (looking-back suffix) + (if (looking-back suffix (line-beginning-position)) (delete-region (match-beginning 0) (point)) (error "Local variables entry is missing the suffix")) (forward-line 1)) @@ -4073,80 +4077,75 @@ on the original file; this means that the caller, after saving the buffer, should change the extended attributes of the new file to agree with the old attributes. BACKUPNAME is the backup file name, which is the old file renamed." - (if (and make-backup-files (not backup-inhibited) - (not buffer-backed-up) - (file-exists-p buffer-file-name) - (memq (aref (elt (file-attributes buffer-file-name) 8) 0) - '(?- ?l))) - (let ((real-file-name buffer-file-name) - backup-info backupname targets setmodes) + (when (and make-backup-files (not backup-inhibited) (not buffer-backed-up)) + (let ((attributes (file-attributes buffer-file-name))) + (when (and attributes (memq (aref (elt attributes 8) 0) '(?- ?l))) ;; If specified name is a symbolic link, chase it to the target. - ;; Thus we make the backups in the directory where the real file is. - (setq real-file-name (file-chase-links real-file-name)) - (setq backup-info (find-backup-file-name real-file-name) - backupname (car backup-info) - targets (cdr backup-info)) - ;; (if (file-directory-p buffer-file-name) - ;; (error "Cannot save buffer in directory %s" buffer-file-name)) - (if backup-info - (condition-case () - (let ((delete-old-versions - ;; If have old versions to maybe delete, - ;; ask the user to confirm now, before doing anything. - ;; But don't actually delete til later. - (and targets - (or (eq delete-old-versions t) (eq delete-old-versions nil)) - (or delete-old-versions - (y-or-n-p (format "Delete excess backup versions of %s? " - real-file-name))))) - (modes (file-modes buffer-file-name)) - (extended-attributes - (file-extended-attributes buffer-file-name))) - ;; Actually write the back up file. - (condition-case () - (if (or file-precious-flag - ; (file-symlink-p buffer-file-name) - backup-by-copying - ;; Don't rename a suid or sgid file. - (and modes (< 0 (logand modes #o6000))) - (not (file-writable-p (file-name-directory real-file-name))) - (and backup-by-copying-when-linked - (> (file-nlinks real-file-name) 1)) - (and (or backup-by-copying-when-mismatch - (integerp backup-by-copying-when-privileged-mismatch)) - (let ((attr (file-attributes real-file-name))) - (and (or backup-by-copying-when-mismatch - (and (integerp (nth 2 attr)) - (integerp backup-by-copying-when-privileged-mismatch) - (<= (nth 2 attr) backup-by-copying-when-privileged-mismatch))) - (not (file-ownership-preserved-p - real-file-name t)))))) - (backup-buffer-copy real-file-name - backupname modes - extended-attributes) - ;; rename-file should delete old backup. - (rename-file real-file-name backupname t) - (setq setmodes (list modes extended-attributes - backupname))) - (file-error - ;; If trouble writing the backup, write it in - ;; .emacs.d/%backup%. - (setq backupname (locate-user-emacs-file "%backup%~")) - (message "Cannot write backup file; backing up in %s" - backupname) - (sleep-for 1) - (backup-buffer-copy real-file-name backupname - modes extended-attributes))) - (setq buffer-backed-up t) - ;; Now delete the old versions, if desired. - (if delete-old-versions - (while targets - (condition-case () - (delete-file (car targets)) - (file-error nil)) - (setq targets (cdr targets)))) - setmodes) - (file-error nil)))))) + ;; This makes backups in the directory where the real file is. + (let* ((real-file-name (file-chase-links buffer-file-name)) + (backup-info (find-backup-file-name real-file-name))) + (when backup-info + (let* ((backupname (car backup-info)) + (targets (cdr backup-info)) + (old-versions + ;; If have old versions to maybe delete, + ;; ask the user to confirm now, before doing anything. + ;; But don't actually delete til later. + (and targets + (booleanp delete-old-versions) + (or delete-old-versions + (y-or-n-p + (format "Delete excess backup versions of %s? " + real-file-name))) + targets)) + (modes (file-modes buffer-file-name)) + (extended-attributes + (file-extended-attributes buffer-file-name)) + (copy-when-priv-mismatch + backup-by-copying-when-privileged-mismatch) + (make-copy + (or file-precious-flag backup-by-copying + ;; Don't rename a suid or sgid file. + (and modes (< 0 (logand modes #o6000))) + (not (file-writable-p + (file-name-directory real-file-name))) + (and backup-by-copying-when-linked + (< 1 (file-nlinks real-file-name))) + (and (or backup-by-copying-when-mismatch + (and (integerp copy-when-priv-mismatch) + (let ((attr (file-attributes + real-file-name + 'integer))) + (<= (nth 2 attr) + copy-when-priv-mismatch)))) + (not (file-ownership-preserved-p real-file-name + t))))) + setmodes) + (condition-case () + (progn + ;; Actually make the backup file. + (if make-copy + (backup-buffer-copy real-file-name backupname + modes extended-attributes) + ;; rename-file should delete old backup. + (rename-file real-file-name backupname t) + (setq setmodes (list modes extended-attributes + backupname))) + (setq buffer-backed-up t) + ;; Now delete the old versions, if desired. + (dolist (old-version old-versions) + (delete-file old-version))) + (file-error nil)) + ;; If trouble writing the backup, write it in .emacs.d/%backup%. + (when (not buffer-backed-up) + (setq backupname (locate-user-emacs-file "%backup%~")) + (message "Cannot write backup file; backing up in %s" + backupname) + (sleep-for 1) + (backup-buffer-copy real-file-name backupname + modes extended-attributes) + (setq buffer-backed-up t)) + setmodes))))))) (defun backup-buffer-copy (from-name to-name modes extended-attributes) ;; Create temp files with strict access rights. It's easy to @@ -4659,7 +4658,7 @@ See the subroutine `basic-save-buffer' for more information." (not noninteractive) (not save-silently)) (message "Saving file %s..." (buffer-file-name))) - (basic-save-buffer) + (basic-save-buffer (called-interactively-p 'any)) (and modp (memq arg '(4 64)) (setq buffer-backed-up nil)))) (defun delete-auto-save-file-if-necessary (&optional force) @@ -4701,14 +4700,14 @@ in such cases.") (make-variable-buffer-local 'save-buffer-coding-system) (put 'save-buffer-coding-system 'permanent-local t) -(defun basic-save-buffer () +(defun basic-save-buffer (&optional called-interactively) "Save the current buffer in its visited file, if it has been modified. The hooks `write-contents-functions' and `write-file-functions' get a chance to do the job of saving; if they do not, then the buffer is saved in the visited file in the usual way. Before and after saving the buffer, this function runs `before-save-hook' and `after-save-hook', respectively." - (interactive) + (interactive '(called-interactively)) (save-current-buffer ;; In an indirect buffer, save its base buffer instead. (if (buffer-base-buffer) @@ -4800,7 +4799,7 @@ Before and after saving the buffer, this function runs (vc-after-save) (run-hooks 'after-save-hook)) (or noninteractive - (not (called-interactively-p 'any)) + (not called-interactively) (files--message "(No changes need to be saved)"))))) ;; This does the "real job" of writing a buffer into its visited file @@ -4845,9 +4844,9 @@ Before and after saving the buffer, this function runs (file-exists-p buffer-file-name) (> (file-nlinks buffer-file-name) 1) (or dir-writable - (error (concat (format - "Directory %s write-protected; " dir) - "cannot break hardlink when saving"))))) + (error (concat "Directory %s write-protected; " + "cannot break hardlink when saving") + dir)))) ;; Write temp name, then rename it. ;; This requires write access to the containing dir, ;; which is why we don't try it if we don't have that access. diff --git a/lisp/finder.el b/lisp/finder.el index 47fab3cdc3d..1ab59f175b8 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -114,10 +114,6 @@ Each element has the form (KEYWORD . DESCRIPTION).") st) "Syntax table used while in `finder-mode'.") -(defvar finder-font-lock-keywords - '(("`\\([^'`]+\\)'" 1 font-lock-constant-face prepend)) - "Font-lock keywords for Finder mode.") - (defvar finder-headmark nil "Internal Finder mode variable, local in Finder buffer.") diff --git a/lisp/foldout.el b/lisp/foldout.el index 443f8b72217..64c0af451b8 100644 --- a/lisp/foldout.el +++ b/lisp/foldout.el @@ -280,16 +280,16 @@ optional arg EXPOSURE \(interactively with prefix arg\) changes this:- (goto-char start) (cond ((null exposure) - (show-entry) - (show-children)) + (outline-show-entry) + (outline-show-children)) ((< exposure-value 0) - (show-entry)) + (outline-show-entry)) ((consp exposure) - (show-children)) + (outline-show-children)) ((> exposure-value 0) - (show-children exposure-value)) + (outline-show-children exposure-value)) (t - (show-subtree)) + (outline-show-subtree)) ) ;; save the location of the fold we are entering @@ -366,7 +366,7 @@ exited and text is left visible." ;; hide the subtree (when hide-fold (goto-char start-marker) - (hide-subtree)) + (outline-hide-subtree)) ;; make sure the next heading is exposed (if end-marker @@ -454,10 +454,10 @@ What gets exposed depends on the number of mouse clicks:- (foldout-mouse-goto-heading event) (let ((nclicks (event-click-count event))) (cond - ((= nclicks 1) (show-entry)) - ((= nclicks 2) (show-children)) - ((= nclicks 3) (show-entry) (show-children)) - (t (show-subtree))))) + ((= nclicks 1) (outline-show-entry)) + ((= nclicks 2) (outline-show-children)) + ((= nclicks 3) (outline-show-entry) (outline-show-children)) + (t (outline-show-subtree))))) (defun foldout-mouse-hide-or-exit (event) "Hide the subtree under the heading clicked on, or exit a fold. @@ -478,7 +478,7 @@ What happens depends on the number of mouse clicks:- (if (= nclicks 1) (progn (foldout-mouse-goto-heading event) - (hide-subtree)) + (outline-hide-subtree)) (foldout-exit-fold (cond ((= nclicks 2) 1) ; exit and hide diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 96b290e34f4..b1455131114 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1350,7 +1350,7 @@ delimit the region to fontify." deactivate-mark) ;; Make sure we have the right `font-lock-keywords' etc. (if (not font-lock-mode) (font-lock-set-defaults)) - (save-excursion + (save-mark-and-excursion (save-match-data (condition-case error-data (if (or arg (not font-lock-mark-block-function)) diff --git a/lisp/forms.el b/lisp/forms.el index aa57a667ae7..bccb4a05756 100644 --- a/lisp/forms.el +++ b/lisp/forms.el @@ -1755,7 +1755,7 @@ Otherwise enables edit mode if the visited file is writable." With ARG: store the record after the current one. If `forms-new-record-filter' contains the name of a function, it is called to fill (some of) the fields with default values. -If `forms-insert-after is non-nil, the default behavior is to insert +If `forms-insert-after' is non-nil, the default behavior is to insert after the current record." (interactive "P") diff --git a/lisp/frame.el b/lisp/frame.el index e8a89828b8d..077687eeb66 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -27,35 +27,20 @@ ;;; Code: (eval-when-compile (require 'cl-lib)) -;; Dispatch tables for GUI methods. - -(defun gui-method--name (base) - (intern (format "%s-alist" base))) - -(defmacro gui-method (name &optional type) - (macroexp-let2 nil type (or type `window-system) - `(alist-get ,type ,(gui-method--name name) - (lambda (&rest _args) - (error "No method %S for %S frame" ',name ,type))))) - -(defmacro gui-method-define (name type fun) - `(setf (gui-method ,name ',type) ,fun)) - -(defmacro gui-method-declare (name &optional tty-fun doc) - (declare (doc-string 3) (indent 2)) - `(defvar ,(gui-method--name name) - ,(if tty-fun `(list (cons nil ,tty-fun))) ,doc)) - -(defmacro gui-call (name &rest args) - `(funcall (gui-method ,name) ,@args)) - -(gui-method-declare frame-creation-function - #'tty-create-frame-with-faces +(cl-defgeneric frame-creation-function (params) "Method for window-system dependent functions to create a new frame. The window system startup file should add its frame creation function to this method, which should take an alist of parameters as its argument.") +(cl-defmethod frame-creation-function (params + &context (window-system (eql nil))) + ;; It's tempting to get rid of tty-create-frame-with-faces and turn it into + ;; this method (i.e. move this method to faces.el), but faces.el is loaded + ;; much earlier from loadup.el (before cl-generic and even before + ;; cl-preloaded), so we'd first have to reorder that part. + (tty-create-frame-with-faces params)) + (defvar window-system-default-frame-alist nil "Window-system dependent default frame parameters. The value should be an alist of elements (WINDOW-SYSTEM . ALIST), @@ -217,6 +202,7 @@ This function runs the hook `focus-out-hook'." "Non-nil means function `frame-notice-user-settings' wasn't run yet.") (declare-function tool-bar-mode "tool-bar" (&optional arg)) +(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise)) (defalias 'tool-bar-lines-needed 'tool-bar-height) @@ -686,7 +672,8 @@ the new frame according to its own rules." frame) (unless (get w 'window-system-initialized) - (funcall (gui-method window-system-initialization w) display) + (let ((window-system w)) ;Hack attack! + (window-system-initialization display)) (setq x-display-name display) (put w 'window-system-initialized t)) @@ -703,8 +690,8 @@ the new frame according to its own rules." ;; (setq frame-size-history '(1000)) - (setq frame - (funcall (gui-method frame-creation-function w) params)) + (setq frame (let ((window-system w)) ;Hack attack! + (frame-creation-function params))) (normal-erase-is-backspace-setup-frame frame) ;; Inherit the original frame's parameters. (dolist (param frame-inherited-parameters) diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el index 4082b8723d1..6ebd5338087 100644 --- a/lisp/gnus/canlock.el +++ b/lisp/gnus/canlock.el @@ -35,8 +35,9 @@ ;; Verifying Cancel-Lock is mainly a function of news servers, however, ;; you can verify your own article using the command `canlock-verify' in ;; the (raw) article buffer. You will be prompted for the password for -;; each time if the option `canlock-password' or `canlock-password-for- -;; verify' is nil. Note that setting these options is a bit unsafe. +;; each time if the option `canlock-password' or +;; `canlock-password-for-verify' is nil. Note that setting these +;; options is a bit unsafe. ;;; Code: diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el index 331b99b8652..b2a725b5402 100644 --- a/lisp/gnus/deuglify.el +++ b/lisp/gnus/deuglify.el @@ -78,7 +78,7 @@ ;; `gnus-outlook-deuglify-unwrap-stop-chars'. Setting this to ".?!" ;; inhibits unwrapping if the cited line ends with a full stop, ;; question mark or exclamation mark. Note that this variable -;; defaults to `nil', triggering a few false positives but generally +;; defaults to nil, triggering a few false positives but generally ;; giving you better results. ;; ;; Unwrapping works on every level of citation. Thus you will be able @@ -110,7 +110,7 @@ ;; > Bye, John ;; ;; Repairing the attribution line will be done by function -;; `gnus-article-outlook-repair-attribution which calls other function that +;; `gnus-article-outlook-repair-attribution' which calls other function that ;; try to recognize and repair broken attribution lines. See variable ;; `gnus-outlook-deuglify-attrib-cut-regexp' for stuff that should be ;; cut off from the beginning of an attribution line and variable @@ -121,7 +121,7 @@ ;; Rearranging the article so that the cited text appears above the ;; new text will be done by function ;; `gnus-article-outlook-rearrange-citation'. This function calls -;; `gnus-article-outlook-repair-attribution to find and repair an attribution +;; `gnus-article-outlook-repair-attribution' to find and repair an attribution ;; line. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -177,14 +177,14 @@ ;; As I said before there may (or will) be a few false positives on ;; unwrapping cited lines with `gnus-article-outlook-unwrap-lines'. ;; -;; `gnus-article-outlook-repair-attribution will only fix the first +;; `gnus-article-outlook-repair-attribution' will only fix the first ;; attribution line found in the article. Furthermore it fixed to ;; certain kinds of attributions. And there may be horribly many ;; false positives, vanishing lines and so on -- so don't trust your ;; eyes. Again I recommend manual invocation. ;; ;; `gnus-article-outlook-rearrange-citation' carries all the limitations of -;; `gnus-article-outlook-repair-attribution. +;; `gnus-article-outlook-repair-attribution'. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 14f9adca85d..d83eaddf165 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -1256,7 +1256,7 @@ how to control what it hides." :type gnus-article-treat-custom) (defcustom gnus-treat-strip-list-identifiers 'head - "Strip list identifiers from `gnus-list-identifiers`. + "Strip list identifiers from `gnus-list-identifiers'. Valid values are nil, t, `head', `first', `last', an integer or a predicate. See Info node `(gnus)Customizing Articles'." :version "21.1" @@ -1735,7 +1735,7 @@ regexp." (modify-syntax-entry ?` " " table) table) "Syntax table used in article mode buffers. -Initialized from `text-mode-syntax-table.") +Initialized from `text-mode-syntax-table'.") (defvar gnus-save-article-buffer nil) @@ -7027,8 +7027,7 @@ If given a prefix, show the hidden text instead." (gnus-check-server (gnus-find-method-for-group gnus-newsgroup-name)) (gnus-request-group gnus-newsgroup-name t))) -(eval-when-compile - (autoload 'nneething-get-file-name "nneething")) +(declare-function nneething-get-file-name "nneething" (id)) (defun gnus-request-article-this-buffer (article group) "Get an article and insert it into this buffer." @@ -7828,11 +7827,11 @@ positives are possible." ("/\\([a-z][-a-z0-9]+\\.el\\)\\>[^.?]" ;; Exclude [.?] for URLs in gmane.emacs.cvs 1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1) - ("`\\([a-z][-a-z0-9]+\\.el\\)'" + ("['`‘]\\([a-z][-a-z0-9]+\\.el\\)['’]" 1 (>= gnus-button-emacs-level 8) gnus-button-handle-library 1) - ("`\\([a-z][a-z0-9]+-[a-z0-9]+-[-a-z0-9]*[a-z]\\|\\(gnus\\|message\\)-[-a-z]+\\)'" + ("['`‘]\\([a-z][a-z0-9]+-[a-z0-9]+-[-a-z0-9]*[a-z]\\|\\(gnus\\|message\\)-[-a-z]+\\)['’]" 0 (>= gnus-button-emacs-level 8) gnus-button-handle-symbol 1) - ("`\\([a-z][a-z0-9]+-[a-z]+\\)'" + ("['`‘]\\([a-z][a-z0-9]+-[a-z]+\\)['’]" 0 (>= gnus-button-emacs-level 9) gnus-button-handle-symbol 1) ("(setq[ \t\n]+\\([a-z][a-z0-9]+-[-a-z0-9]+\\)[ \t\n]+.+)" 1 (>= gnus-button-emacs-level 7) gnus-button-handle-describe-variable 1) @@ -7842,7 +7841,7 @@ positives are possible." 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-function 2) ("\\b\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+v[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+RET\\>" 0 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-variable 2) - ("`\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^']+\\)\\)'" + ("['`‘]\\(\\(C-h\\|<?[Ff]1>?\\)[ \t\n]+k[ \t\n]+\\([^'’]+\\)\\)['’]" ;; Unlike the other regexps we really have to require quoting ;; here to determine where it ends. 1 (>= gnus-button-emacs-level 1) gnus-button-handle-describe-key 3) diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el index b1b3af9658e..d4d3dba2417 100644 --- a/lisp/gnus/gnus-async.el +++ b/lisp/gnus/gnus-async.el @@ -226,9 +226,6 @@ that was fetched." `(lambda (arg) (gnus-async-article-callback arg ,group ,article ,mark ,summary ,next))) -(eval-when-compile - (autoload 'gnus-html-prefetch-images "gnus-html")) - (defun gnus-async-article-callback (arg group article mark summary next) "Function called when an async article is done being fetched." (save-excursion diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el index 9271322f4ab..93b7a1ba635 100644 --- a/lisp/gnus/gnus-cus.el +++ b/lisp/gnus/gnus-cus.el @@ -272,7 +272,7 @@ DOC is a documentation string for the parameter.") (repeat (list (string :format "%v" :tag "File name")))) "Which score files to use when using score to select articles to fetch. - `nil' + nil All articles will be scored to zero (0). `file' diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index ff839d7f18c..dbeada286b7 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -3285,7 +3285,7 @@ mail messages or news articles in files that have numeric names." Rights is a string listing a (possibly empty) set of alphanumeric characters, each character listing a set of operations which is being - controlled. Letters are reserved for ``standard'' rights, listed + controlled. Letters are reserved for \"standard\" rights, listed below. Digits are reserved for implementation or site defined rights. l - lookup (mailbox is visible to LIST/LSUB commands) diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 1d8ad8e6acb..37a707ebe64 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -4376,7 +4376,7 @@ Returns HEADER if it was entered in the DEPENDENCIES. Returns nil otherwise." ;; The last case ignores an existing entry, except it adds any ;; additional Xrefs (in case the two articles came from different ;; servers. - ;; Also sets `header' to `nil' meaning that the `dependencies' + ;; Also sets `header' to nil meaning that the `dependencies' ;; table was *not* modified. (t (mail-header-set-xref diff --git a/lisp/gnus/gnus-sync.el b/lisp/gnus/gnus-sync.el index 3c0025f0df2..c9ccc3ec69d 100644 --- a/lisp/gnus/gnus-sync.el +++ b/lisp/gnus/gnus-sync.el @@ -90,10 +90,7 @@ (require 'gnus-util) (defvar gnus-topic-alist) ;; gnus-group.el -(eval-when-compile - (autoload 'gnus-group-topic "gnus-topic") - (autoload 'gnus-topic-create-topic "gnus-topic" nil t) - (autoload 'gnus-topic-enter-dribble "gnus-topic")) +(autoload 'gnus-group-topic "gnus-topic") (defgroup gnus-sync nil "The Gnus synchronization facility." @@ -605,6 +602,10 @@ unwanted groups via the LeSync URL." loc name gnus-sync-lesync-name (or sources ""))) nil))) +(declare-function gnus-topic-create-topic "gnus-topic" + (topic parent &optional previous full-topic)) +(declare-function gnus-topic-enter-dribble "gnus-topic" ()) + (defun gnus-sync-lesync-install-group-entry (name) (let* ((master (assoc name gnus-newsrc-alist)) (old-topic-name (gnus-group-topic name)) diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 7bacaba286d..b75d9efe5e5 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -1575,8 +1575,10 @@ SPEC is a predicate specifier that contains stuff like `or', `and', (declare-function iswitchb-read-buffer "iswitchb" - (prompt &optional default require-match start matches-set)) + (prompt &optional default require-match + _predicate start matches-set)) (defvar iswitchb-temp-buflist) +(defvar iswitchb-mode) (defun gnus-iswitchb-completing-read (prompt collection &optional require-match initial-input history def) diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 1371e700281..9e813e6dfd1 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -1123,7 +1123,7 @@ e.g. using `gnus-posting-styles': (defcustom message-cite-style nil "*The overall style to be used when yanking cited text. -Value is either `nil' (no variable overrides) or a let-style list +Value is either nil (no variable overrides) or a let-style list of pairs (VARIABLE VALUE) that will be bound in `message-yank-original' to do the quoting. @@ -3997,8 +3997,6 @@ This function uses `mail-citation-hook' if that is non-nil." "Cite function in the standard Message manner." (message-cite-original-1 nil)) -(defvar gnus-extract-address-components) - (autoload 'format-spec "format-spec") (autoload 'gnus-date-get-time "gnus-util") @@ -4020,7 +4018,7 @@ See `message-citation-line-format'." (unless from (setq from (mail-header-from message-reply-headers))) (let* ((data (condition-case () - (funcall (if (boundp gnus-extract-address-components) + (funcall (if (boundp 'gnus-extract-address-components) gnus-extract-address-components 'mail-extract-address-components) from) diff --git a/lisp/gnus/mm-archive.el b/lisp/gnus/mm-archive.el index d88e159900b..9c86c4ac4f3 100644 --- a/lisp/gnus/mm-archive.el +++ b/lisp/gnus/mm-archive.el @@ -23,9 +23,8 @@ ;;; Code: (require 'mm-decode) -(eval-when-compile - (autoload 'gnus-recursive-directory-files "gnus-util") - (autoload 'mailcap-extension-to-mime "mailcap")) +(autoload 'gnus-recursive-directory-files "gnus-util") +(autoload 'mailcap-extension-to-mime "mailcap") (defvar mm-archive-decoders '(("application/ms-tnef" t "tnef" "-f" "-" "-C") diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index ae6bb71dfc7..bce9abdcc8d 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1827,7 +1827,7 @@ If RECURSIVE, search recursively." (not (mm-long-lines-p 76)))))) (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (declare-function shr-insert-document "shr" (dom)) (defvar shr-blocked-images) (defvar shr-use-fonts) diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el index 0b7590114c4..ab9145f8b1c 100644 --- a/lisp/gnus/mm-util.el +++ b/lisp/gnus/mm-util.el @@ -1058,11 +1058,10 @@ This affects whether coding conversion should be attempted generally." (length (memq (coding-system-base b) priorities))) t)))) -(eval-when-compile - (autoload 'latin-unity-massage-name "latin-unity") - (autoload 'latin-unity-maybe-remap "latin-unity") - (autoload 'latin-unity-representations-feasible-region "latin-unity") - (autoload 'latin-unity-representations-present-region "latin-unity")) +(declare-function latin-unity-massage-name "ext:latin-unity") +(declare-function latin-unity-maybe-remap "ext:latin-unity") +(declare-function latin-unity-representations-feasible-region "ext:latin-unity") +(declare-function latin-unity-representations-present-region "ext:latin-unity") (defvar latin-unity-coding-systems) (defvar latin-unity-ucs-list) diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index a3d6e74fbcb..edc2d39cd0f 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el @@ -629,6 +629,8 @@ If MODE is not set, try to find mode automatically." (replace-match "\n")) t) +(autoload 'epg-decrypt-string "epg") + (defun mm-view-pkcs7-decrypt (handle &optional from) (insert-buffer-substring (mm-handle-buffer handle)) (goto-char (point-min)) diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el index 58d3b4680b9..3f0809edbe8 100644 --- a/lisp/gnus/mml-smime.el +++ b/lisp/gnus/mml-smime.el @@ -317,24 +317,25 @@ Whether the passphrase is cached at all is controlled by (defvar inhibit-redisplay) (defvar password-cache-expiry) -(eval-when-compile - (autoload 'epg-make-context "epg") - (autoload 'epg-context-set-armor "epg") - (autoload 'epg-context-set-signers "epg") - (autoload 'epg-context-result-for "epg") - (autoload 'epg-new-signature-digest-algorithm "epg") - (autoload 'epg-verify-result-to-string "epg") - (autoload 'epg-list-keys "epg") - (autoload 'epg-decrypt-string "epg") - (autoload 'epg-verify-string "epg") - (autoload 'epg-sign-string "epg") - (autoload 'epg-encrypt-string "epg") - (autoload 'epg-passphrase-callback-function "epg") - (autoload 'epg-context-set-passphrase-callback "epg") - (autoload 'epg-sub-key-fingerprint "epg") - (autoload 'epg-configuration "epg-config") - (autoload 'epg-expand-group "epg-config") - (autoload 'epa-select-keys "epa")) +(autoload 'epg-make-context "epg") +(autoload 'epg-passphrase-callback-function "epg") +(declare-function epg-context-set-signers "epg" (context signers)) +(declare-function epg-context-result-for "epg" (context name)) +(declare-function epg-new-signature-digest-algorithm "epg" (cl-x) t) +(declare-function epg-verify-result-to-string "epg" (verify-result)) +(declare-function epg-list-keys "epg" (context &optional name mode)) +(declare-function epg-verify-string "epg" + (context signature &optional signed-text)) +(declare-function epg-sign-string "epg" (context plain &optional mode)) +(declare-function epg-encrypt-string "epg" + (context plain recipients &optional sign always-trust)) +(declare-function epg-context-set-passphrase-callback "epg" + (context passphrase-callback)) +(declare-function epg-sub-key-fingerprint "epg" (cl-x) t) +(declare-function epg-configuration "epg-config" ()) +(declare-function epg-expand-group "epg-config" (config group)) +(declare-function epa-select-keys "epa" + (context prompt &optional names secret)) (defvar mml-smime-epg-secret-key-id-list nil) @@ -359,9 +360,9 @@ Whether the passphrase is cached at all is controlled by (cons key-id mml-smime-epg-secret-key-id-list)) (copy-sequence passphrase))))) -(declare-function epg-key-sub-key-list "ext:epg" (key)) -(declare-function epg-sub-key-capability "ext:epg" (sub-key)) -(declare-function epg-sub-key-validity "ext:epg" (sub-key)) +(declare-function epg-key-sub-key-list "epg" (key) t) +(declare-function epg-sub-key-capability "epg" (sub-key) t) +(declare-function epg-sub-key-validity "epg" (sub-key) t) (defun mml-smime-epg-find-usable-key (keys usage) (catch 'found diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el index 2a3b228097a..57544758597 100644 --- a/lisp/gnus/mml.el +++ b/lisp/gnus/mml.el @@ -463,7 +463,7 @@ If MML is non-nil, return the buffer up till the correspondent mml tag." (defvar mml-inhibit-compute-boundary nil) (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (defun mml-generate-mime (&optional multipart-type) "Generate a MIME message based on the current MML document. diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el index c62697b6939..70d803faf54 100644 --- a/lisp/gnus/nndoc.el +++ b/lisp/gnus/nndoc.el @@ -199,7 +199,7 @@ from the document.") ;; lines in the body. For MIME dissections only, ARTICLE-INSERT [5] and ;; SUMMARY-INSERT [6] give headers to insert for full article or summary line ;; generation, respectively. Other headers usually follow directly from the -;; buffer. Value `nil' means no insert. +;; buffer. Value nil means no insert. (defvoo nndoc-dissection-alist nil) (defvoo nndoc-prepare-body-function nil) (defvoo nndoc-generate-head-function nil) diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index c476be6bc8d..208fd073caf 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1266,7 +1266,7 @@ If LIMIT, first try to limit the search to the N last articles." (progn (skip-chars-forward " \"") (point)) (progn (end-of-line) - (skip-chars-backward "
\"") + (skip-chars-backward " \r\"") (point))))) (unless (member '%NoSelect flags) (push (utf7-decode (if (stringp group) diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el index 08ca7c7e06b..15ccc4725d7 100644 --- a/lisp/gnus/nnir.el +++ b/lisp/gnus/nnir.el @@ -281,16 +281,6 @@ is `(valuefunc member)'." (require 'gnus-sum) -(eval-when-compile - (autoload 'nnimap-buffer "nnimap") - (autoload 'nnimap-command "nnimap") - (autoload 'nnimap-change-group "nnimap") - (autoload 'nnimap-make-thread-query "nnimap") - (autoload 'gnus-registry-action "gnus-registry") - (autoload 'gnus-registry-get-id-key "gnus-registry") - (autoload 'gnus-group-topic-name "gnus-topic")) - - (nnoo-declare nnir) (nnoo-define-basics nnir) @@ -586,6 +576,8 @@ Add an entry here when adding a new search engine.") ;; Gnus glue. +(declare-function gnus-group-topic-name "gnus-topic" ()) + (defun gnus-group-make-nnir-group (nnir-extra-parms &optional specs) "Create an nnir group. Prompt for a search query and determine the groups to search as follows: if called from the *Server* @@ -948,6 +940,10 @@ ready to be added to the list of search results." ;;; Search Engine Interfaces: +(autoload 'nnimap-change-group "nnimap") +(declare-function nnimap-buffer "nnimap" ()) +(declare-function nnimap-command "nnimap" (&rest args)) + ;; imap interface (defun nnir-run-imap (query srv &optional groups) "Run a search against an IMAP back-end server. @@ -1774,6 +1770,9 @@ environment unless `not-global' is non-nil." (let ((backend (car (gnus-server-to-method server)))) (nnoo-current-server-p (or backend 'nnir) server))) +(autoload 'nnimap-make-thread-query "nnimap") +(declare-function gnus-registry-get-id-key "gnus-registry" (id key)) + (defun nnir-search-thread (header) "Make an nnir group based on the thread containing the article header. The current server will be searched. If the registry is @@ -1841,6 +1840,10 @@ article came from is also searched." (forward-line))))) groups)) +;; Behind gnus-registry-enabled test. +(declare-function gnus-registry-action "gnus-registry" + (action data-header from &optional to method)) + (defun nnir-registry-action (action data-header from &optional to method) "Call `gnus-registry-action' with the original article group." (gnus-registry-action diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index 5c5481095e2..71bc916a927 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -36,8 +36,7 @@ (autoload 'gnus-add-buffer "gnus") (autoload 'gnus-kill-buffer "gnus") -(eval-when-compile - (autoload 'mail-send-and-exit "sendmail" nil t)) +(autoload 'mail-send-and-exit "sendmail" nil t) (defgroup nnmail nil "Reading mail with Gnus." diff --git a/lisp/gnus/nnmaildir.el b/lisp/gnus/nnmaildir.el index 21fa5b37aa4..da3d5460c2b 100644 --- a/lisp/gnus/nnmaildir.el +++ b/lisp/gnus/nnmaildir.el @@ -84,13 +84,13 @@ Some of the FLAGS correspond to Gnus marks.") (defsubst nnmaildir--mark-to-flag (mark) "Find the Maildir flag that corresponds to MARK (an atom). -Return a character, or `nil' if not found. +Return a character, or nil if not found. See `nnmaildir-flag-mark-mapping'." (car (rassq mark nnmaildir-flag-mark-mapping))) (defsubst nnmaildir--flag-to-mark (flag) "Find the Gnus mark that corresponds to FLAG (a character). -Return an atom, or `nil' if not found. +Return an atom, or nil if not found. See `nnmaildir-flag-mark-mapping'." (cdr (assq flag nnmaildir-flag-mark-mapping))) diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el index ac9c5ffab2c..1546f922e7a 100644 --- a/lisp/gnus/nnrss.el +++ b/lisp/gnus/nnrss.el @@ -395,7 +395,7 @@ otherwise return nil." (mm-coding-system-p 'utf-8))) (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (defun nnrss-fetch (url &optional local) "Fetch URL and put it in a the expected Lisp structure." (mm-with-unibyte-buffer diff --git a/lisp/gnus/rfc2047.el b/lisp/gnus/rfc2047.el index b2520b26af9..ea558d75a20 100644 --- a/lisp/gnus/rfc2047.el +++ b/lisp/gnus/rfc2047.el @@ -1136,7 +1136,7 @@ other than `\"' and `\\' in quoted strings." ;; `decode-coding-string' in Emacs offers a third optional ;; arg NOCOPY to avoid consing a new string if the decoding ;; is "trivial". Unfortunately it currently doesn't - ;; consider anything else than a `nil' coding system + ;; consider anything else than a nil coding system ;; trivial. ;; `rfc2047-decode-string' is called multiple times for each ;; article during summary buffer generation, and we really diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el index 6f043df6121..76d58f77354 100644 --- a/lisp/gnus/smime.el +++ b/lisp/gnus/smime.el @@ -158,7 +158,7 @@ certificates to be sent with every message to each address." Directory should contain files (in PEM format) named to the X.509 hash of the certificate. This can be done using OpenSSL such as: -$ ln -s ca.pem `openssl x509 -noout -hash -in ca.pem`.0 +$ ln -s ca.pem \\=`openssl x509 -noout -hash -in ca.pem\\=`.0 where `ca.pem' is the file containing a PEM encoded X.509 CA certificate." diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el index 500f34139be..02ec69516c1 100644 --- a/lisp/gnus/spam.el +++ b/lisp/gnus/spam.el @@ -2232,15 +2232,6 @@ Uses `gnus-newsgroup-name' if category is nil (for ham registration)." ;;{{{ spam-stat -(eval-when-compile - (autoload 'spam-stat-buffer-change-to-non-spam "spam-stat") - (autoload 'spam-stat-buffer-change-to-spam "spam-stat") - (autoload 'spam-stat-buffer-is-non-spam "spam-stat") - (autoload 'spam-stat-buffer-is-spam "spam-stat") - (autoload 'spam-stat-load "spam-stat") - (autoload 'spam-stat-save "spam-stat") - (autoload 'spam-stat-split-fancy "spam-stat")) - (require 'spam-stat) (defun spam-check-stat () diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 7ecd271d0c8..346e1e158c2 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -54,20 +54,22 @@ The functions will receive the function name as argument.") (and fn (symbol-name fn)))) (list (if (equal val "") fn (intern val))))) - (if (null function) - (message "You didn't specify a function") - (help-setup-xref (list #'describe-function function) - (called-interactively-p 'interactive)) - (save-excursion - (with-help-window (help-buffer) - (prin1 function) - ;; Use " is " instead of a colon so that - ;; it is easier to get out the function name using forward-sexp. - (princ " is ") - (describe-function-1 function) - (with-current-buffer standard-output - ;; Return the text we displayed. - (buffer-string)))))) + (or (and function (symbolp function)) + (user-error "You didn't specify a function symbol")) + (or (fboundp function) + (user-error "Symbol's function definition is void: %s" function)) + (help-setup-xref (list #'describe-function function) + (called-interactively-p 'interactive)) + (save-excursion + (with-help-window (help-buffer) + (prin1 function) + ;; Use " is " instead of a colon so that + ;; it is easier to get out the function name using forward-sexp. + (princ " is ") + (describe-function-1 function) + (with-current-buffer standard-output + ;; Return the text we displayed. + (buffer-string))))) ;; Could be this, if we make symbol-file do the work below. @@ -133,7 +135,7 @@ if the variable `help-downcase-arguments' is non-nil." "\\)" "\\(?:es\\|s\\|th\\)?" ; for ARGth, ARGs "\\(?:-[a-z0-9-]+\\)?" ; for ARG-xxx, ARG-n - "\\(?:-[{([<`\"].*?\\)?"; for ARG-{x}, (x), <x>, [x], `x' + "\\(?:-[{([<`\"‘].*?\\)?"; for ARG-{x}, (x), <x>, [x], `x', ‘x’ "\\>") ; end of word (help-highlight-arg arg) doc t t 1))) @@ -304,7 +306,7 @@ suitable file is found, return nil." (when remapped (princ "Its keys are remapped to ") (princ (if (symbolp remapped) - (concat "`" (symbol-name remapped) "'") + (concat "‘" (symbol-name remapped) "’") "an anonymous command")) (princ ".\n")) @@ -329,7 +331,7 @@ suitable file is found, return nil." (with-current-buffer standard-output (fill-region-as-paragraph pt2 (point)) - (unless (looking-back "\n\n") + (unless (looking-back "\n\n" (- (point) 2)) (terpri)))))) (defun help-fns--compiler-macro (function) @@ -338,16 +340,16 @@ suitable file is found, return nil." (insert "\nThis function has a compiler macro") (if (symbolp handler) (progn - (insert (format " `%s'" handler)) + (insert (format " ‘%s’" handler)) (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function handler))) ;; FIXME: Obsolete since 24.4. (let ((lib (get function 'compiler-macro-file))) (when (stringp lib) - (insert (format " in `%s'" lib)) + (insert (format " in ‘%s’" lib)) (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function-cmacro function lib))))) (insert ".\n")))) @@ -391,13 +393,13 @@ suitable file is found, return nil." (get function 'derived-mode-parent)))) (when parent-mode - (insert "\nParent mode: `") + (insert "\nParent mode: ‘") (let ((beg (point))) (insert (format "%s" parent-mode)) (make-text-button beg (point) 'type 'help-function 'help-args (list parent-mode))) - (insert "'.\n")))) + (insert "’.\n")))) (defun help-fns--obsolete (function) ;; Ignore lambda constructs, keyboard macros, etc. @@ -413,7 +415,7 @@ suitable file is found, return nil." (when (nth 2 obsolete) (insert (format " since %s" (nth 2 obsolete)))) (insert (cond ((stringp use) (concat ";\n" use)) - (use (format ";\nuse `%s' instead." use)) + (use (format ";\nuse ‘%s’ instead." use)) (t ".")) "\n")))) @@ -449,7 +451,7 @@ FILE is the file where FUNCTION was probably defined." (format ";\nin Lisp code %s" interactive-only)) ((and (symbolp 'interactive-only) (not (eq interactive-only t))) - (format ";\nin Lisp code use `%s' instead." + (format ";\nin Lisp code use ‘%s’ instead." interactive-only)) (t ".")) "\n"))))) @@ -479,7 +481,8 @@ FILE is the file where FUNCTION was probably defined." function)) ;; Get the real definition. (def (if (symbolp real-function) - (symbol-function real-function) + (or (symbol-function real-function) + (signal 'void-function (list real-function))) real-function)) (aliased (or (symbolp def) ;; Advised & aliased function. @@ -492,6 +495,9 @@ FILE is the file where FUNCTION was probably defined." f)) ((subrp def) (intern (subr-name def))) (t def))) + (sig-key (if (subrp def) + (indirect-function real-def) + real-def)) (file-name (find-lisp-object-file-name function def)) (pt1 (with-current-buffer (help-buffer) (point))) (beg (if (and (or (byte-code-function-p def) @@ -514,7 +520,7 @@ FILE is the file where FUNCTION was probably defined." ;; Aliases are Lisp functions, so we need to check ;; aliases before functions. (aliased - (format "an alias for `%s'" real-def)) + (format "an alias for ‘%s’" real-def)) ((autoloadp def) (format "%s autoloaded %s" (if (commandp def) "an interactive" "an") @@ -548,21 +554,21 @@ FILE is the file where FUNCTION was probably defined." (with-current-buffer standard-output (save-excursion (save-match-data - (when (re-search-backward "alias for `\\([^`']+\\)'" nil t) + (when (re-search-backward "alias for ‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function real-def))))) (when file-name - (princ " in `") + (princ " in ‘") ;; We used to add .el to the file name, ;; but that's completely wrong when the user used load-file. (princ (if (eq file-name 'C-source) "C source code" (help-fns-short-filename file-name))) - (princ "'") + (princ "’") ;; Make a hyperlink to the library. (with-current-buffer standard-output (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function-def function file-name)))) (princ ".") (with-current-buffer (help-buffer) @@ -583,7 +589,7 @@ FILE is the file where FUNCTION was probably defined." (help-fns--key-bindings function) (with-current-buffer standard-output - (setq doc (help-fns--signature function doc real-def real-function)) + (setq doc (help-fns--signature function doc sig-key real-function)) (run-hook-with-args 'help-fns-describe-function-functions function) (insert "\n" (or doc "Not documented."))))))) @@ -696,14 +702,14 @@ it is displayed along with the global value." (if file-name (progn - (princ " is a variable defined in `") + (princ " is a variable defined in ‘") (princ (if (eq file-name 'C-source) "C source code" (file-name-nondirectory file-name))) - (princ "'.\n") + (princ "’.\n") (with-current-buffer standard-output (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-variable-def variable file-name))) (if valvoid @@ -833,7 +839,8 @@ if it is given a local binding.\n"))) ;; Mention if it's an alias. (unless (eq alias variable) (setq extra-line t) - (princ (format " This variable is an alias for `%s'.\n" alias))) + (princ (format " This variable is an alias for ‘%s’.\n" + alias))) (when obsolete (setq extra-line t) @@ -841,7 +848,8 @@ if it is given a local binding.\n"))) (if (nth 2 obsolete) (princ (format " since %s" (nth 2 obsolete)))) (princ (cond ((stringp use) (concat ";\n " use)) - (use (format ";\n use `%s' instead." (car obsolete))) + (use (format ";\n use ‘%s’ instead." + (car obsolete))) (t "."))) (terpri)) @@ -872,13 +880,13 @@ if it is given a local binding.\n"))) (setq file (car file) dir-file nil))) (princ (if dir-file - "by the file\n `" - "for the directory\n `")) + "by the file\n ‘" + "for the directory\n ‘")) (with-current-buffer standard-output (insert-text-button file 'type 'help-dir-local-var-def 'help-args (list variable file))) - (princ "'.\n"))) + (princ "’.\n"))) (princ " This variable's value is file-local.\n"))) (when (memq variable ignored-local-variables) @@ -893,7 +901,7 @@ variable.\n")) file-local variable.\n") (when (assq variable safe-local-variable-values) (princ " However, you have added it to \ -`safe-local-variable-values'.\n"))) +‘safe-local-variable-values’.\n"))) (when safe-var (setq extra-line t) @@ -901,7 +909,7 @@ file-local variable.\n") (princ "if its value\n satisfies the predicate ") (princ (if (byte-code-function-p safe-var) "which is a byte-compiled expression.\n" - (format "`%s'.\n" safe-var)))) + (format "‘%s’.\n" safe-var)))) (if extra-line (terpri)) (princ "Documentation:\n") diff --git a/lisp/help-mode.el b/lisp/help-mode.el index d6679e9e4de..3fc0ad2b403 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -322,7 +322,7 @@ Commands: "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)" "[ \t\n]+\\)?" ;; Note starting with word-syntax character: - "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'")) + "[`‘]\\(\\sw\\(\\sw\\|\\s_\\)+\\)['’]")) "Regexp matching doc string references to symbols. The words preceding the quoted symbol can be used in doc strings to @@ -337,11 +337,12 @@ when help commands related to multilingual environment (e.g., (defconst help-xref-info-regexp - (purecopy "\\<[Ii]nfo[ \t\n]+\\(node\\|anchor\\)[ \t\n]+`\\([^']+\\)'") + (purecopy + "\\<[Ii]nfo[ \t\n]+\\(node\\|anchor\\)[ \t\n]+[`‘]\\([^'’]+\\)['’]") "Regexp matching doc string references to an Info node.") (defconst help-xref-url-regexp - (purecopy "\\<[Uu][Rr][Ll][ \t\n]+`\\([^']+\\)'") + (purecopy "\\<[Uu][Rr][Ll][ \t\n]+[`‘]\\([^'’]+\\)['’]") "Regexp matching doc string references to a URL.") ;;;###autoload @@ -727,7 +728,7 @@ BUFFER or FRAME." (user-error "No previous help buffer"))) (defun help-go-forward () - "Go back to next topic in this help buffer." + "Go to the next topic in this help buffer." (interactive) (if help-xref-forward-stack (help-xref-go-forward (current-buffer)) diff --git a/lisp/help.el b/lisp/help.el index fb1719ac9c9..1411c1aab9a 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -691,7 +691,8 @@ POSITION is as documented in the function `key-binding'." (defun help--binding-locus (key position) "Describe in which keymap KEY is defined. Return a symbol pointing to that keymap if one exists ; otherwise -return nil." +return nil. The argument POSITION is as documented in the +function `key-binding'." (let ((map (help--key-binding-keymap key t nil position))) (when map (catch 'found @@ -963,11 +964,12 @@ documentation for the major and minor modes of that buffer." (let* ((mode major-mode) (file-name (find-lisp-object-file-name mode nil))) (when file-name - (princ (concat " defined in `" (file-name-nondirectory file-name) "'")) + (princ (concat " defined in ‘" (file-name-nondirectory file-name) + "’")) ;; Make a hyperlink to the library. (with-current-buffer standard-output (save-excursion - (re-search-backward "`\\([^`']+\\)'" nil t) + (re-search-backward "‘\\([^‘’]+\\)’" nil t) (help-xref-button 1 'help-function-def mode file-name))))) (princ ":\n") (princ (documentation major-mode))))) diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el index b167671ab0b..a19ff32f1da 100644 --- a/lisp/hippie-exp.el +++ b/lisp/hippie-exp.el @@ -99,10 +99,10 @@ ;; from the kill ring. May be good if you don't know how far up in ;; the kill-ring the required entry is, and don't want to mess with ;; "Choose Next Paste". -;; `try-complete-lisp-symbol' : like `lisp-complete-symbol', but goes +;; `try-complete-lisp-symbol' : like `elisp-completion-at-point', but goes ;; through all possibilities instead of completing what is unique. ;; Might be tedious (usually a lot of possible completions) and -;; since its function is much like `lisp-complete-symbol', which +;; since its function is much like `completion-at-point', which ;; already has a key of its own, you might want to remove this. ;; `try-complete-lisp-symbol-partially' : To insert in the list just ;; before `try-complete-lisp-symbol' for those who first want to get diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index f15e150f5d4..c426976b29c 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -1908,9 +1908,9 @@ the buffer object itself and the current mark symbol." ;; Kill the line if the buffer is dead 'kill))) ;; A given mapping function should return: - ;; `nil' if it chose not to affect the buffer + ;; nil if it chose not to affect the buffer ;; `kill' means the remove line from the buffer list - ;; `t' otherwise + ;; t otherwise (cl-incf ibuffer-map-lines-total) (cond ((null result) (forward-line 1)) diff --git a/lisp/icomplete.el b/lisp/icomplete.el index ee281122852..b1894ca5874 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -149,16 +149,26 @@ icompletion is occurring." (defvar icomplete-minibuffer-map (let ((map (make-sparse-keymap))) (define-key map [?\M-\t] 'minibuffer-force-complete) - (define-key map [?\C-j] 'minibuffer-force-complete-and-exit) + (define-key map [?\C-j] 'icomplete-force-complete-and-exit) (define-key map [?\C-.] 'icomplete-forward-completions) (define-key map [?\C-,] 'icomplete-backward-completions) map) "Keymap used by `icomplete-mode' in the minibuffer.") +(defun icomplete-force-complete-and-exit () + "Complete the minibuffer and exit. +Use the first of the matches if there are any displayed, and use +the default otherwise." + (interactive) + (if (or icomplete-show-matches-on-no-input + (> (icomplete--field-end) (icomplete--field-beg))) + (minibuffer-force-complete-and-exit) + (minibuffer-complete-and-exit))) + (defun icomplete-forward-completions () "Step forward completions by one entry. Second entry becomes the first and can be selected with -`minibuffer-force-complete-and-exit'." +`icomplete-force-complete-and-exit'." (interactive) (let* ((beg (icomplete--field-beg)) (end (icomplete--field-end)) @@ -171,7 +181,7 @@ Second entry becomes the first and can be selected with (defun icomplete-backward-completions () "Step backward completions by one entry. Last entry becomes the first and can be selected with -`minibuffer-force-complete-and-exit'." +`icomplete-force-complete-and-exit'." (interactive) (let* ((beg (icomplete--field-beg)) (end (icomplete--field-end)) diff --git a/lisp/ido.el b/lisp/ido.el index 60a59d6e99d..5995fcd41e3 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -377,7 +377,7 @@ use either \\[customize] or the function `ido-mode'." '("\\` ") "List of regexps or functions matching buffer names to ignore. For example, traditional behavior is not to list buffers whose names begin -with a space, for which the regexp is `\\` '. See the source file for +with a space, for which the regexp is ‘\\\\=` ’. See the source file for example functions that filter buffer names." :type '(repeat (choice regexp function)) :group 'ido) @@ -386,7 +386,7 @@ example functions that filter buffer names." '("\\`CVS/" "\\`#" "\\`.#" "\\`\\.\\./" "\\`\\./") "List of regexps or functions matching file names to ignore. For example, traditional behavior is not to list files whose names begin -with a #, for which the regexp is `\\`#'. See the source file for +with a #, for which the regexp is ‘\\\\=`#’. See the source file for example functions that filter filenames." :type '(repeat (choice regexp function)) :group 'ido) diff --git a/lisp/ielm.el b/lisp/ielm.el index be877eb250a..3c9908ac362 100644 --- a/lisp/ielm.el +++ b/lisp/ielm.el @@ -511,7 +511,7 @@ evaluations respectively. If the working buffer is another IELM buffer, then the values in the working buffer are used. The variables `*1', `*2' and `*3', yield the process buffer values. -If, at the start of evaluation, `standard-output' is `t' (the +If, at the start of evaluation, `standard-output' is t (the default), `standard-output' is set to a special function that causes output to be directed to the ielm buffer. `standard-output' is restored after evaluation unless explicitly diff --git a/lisp/info-look.el b/lisp/info-look.el index 9cf185edf57..6168a0c2660 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -613,8 +613,8 @@ Return nil if there is nothing appropriate in the buffer near point." (condition-case nil (save-excursion (let ((case-fold-search t) - (ignored-chars "][()`',:.\" \t\n") - (significant-chars "^][()`',:.\" \t\n") + (ignored-chars "][()`'‘’,:.\" \t\n") + (significant-chars "^][()`'‘’,:.\" \t\n") beg end) (cond ((and (memq (get-char-property (point) 'face) @@ -634,7 +634,8 @@ Return nil if there is nothing appropriate in the buffer near point." (setq end (point)) (> end beg)) (and (looking-at "[ \t\n]") - (looking-back (concat "[" significant-chars "]")) + (looking-back (concat "[" significant-chars "]") + (1- (point))) (setq end (point)) (skip-chars-backward significant-chars) (setq beg (point)) @@ -898,7 +899,7 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'emacs-lisp-mode - :regexp "[^][()`',\" \t\n]+" + :regexp "[^][()`'‘’,\" \t\n]+" :doc-spec '(;; Commands with key sequences appear in nodes as `foo' and ;; those without as `M-x foo'. ("(emacs)Command Index" nil "['`‘]\\(M-x[ \t\n]+\\)?" "['’]") @@ -916,24 +917,24 @@ Return nil if there is nothing appropriate in the buffer near point." ;; docstrings talk about elisp, so have apropos-mode follow emacs-lisp-mode (info-lookup-maybe-add-help :mode 'apropos-mode - :regexp "[^][()`',\" \t\n]+" ;; same as emacs-lisp-mode above + :regexp "[^][()`'‘’,\" \t\n]+" ;; same as emacs-lisp-mode above :other-modes '(emacs-lisp-mode)) (info-lookup-maybe-add-help :mode 'lisp-interaction-mode - :regexp "[^][()`',\" \t\n]+" + :regexp "[^][()`'‘’,\" \t\n]+" :parse-rule 'ignore :other-modes '(emacs-lisp-mode)) (info-lookup-maybe-add-help :mode 'lisp-mode - :regexp "[^()`',\" \t\n]+" + :regexp "[^()`'‘’,\" \t\n]+" :parse-rule 'ignore :other-modes '(emacs-lisp-mode)) (info-lookup-maybe-add-help :mode 'scheme-mode - :regexp "[^()`',\" \t\n]+" + :regexp "[^()`'‘’,\" \t\n]+" :ignore-case t ;; Aubrey Jaffer's rendition from <URL:ftp://ftp-swiss.ai.mit.edu/pub/scm> :doc-spec '(("(r5rs)Index" nil @@ -1040,13 +1041,13 @@ Return nil if there is nothing appropriate in the buffer near point." (info-lookup-maybe-add-help :mode 'Custom-mode :ignore-case t - :regexp "[^][()`',:\" \t\n]+" + :regexp "[^][()`'‘’,:\" \t\n]+" :parse-rule 'info-lookup-guess-custom-symbol :other-modes '(emacs-lisp-mode)) (info-lookup-maybe-add-help :mode 'help-mode - :regexp "[^][()`',:\" \t\n]+" + :regexp "[^][()`'‘’,:\" \t\n]+" :other-modes '(emacs-lisp-mode)) (provide 'info-look) diff --git a/lisp/info.el b/lisp/info.el index 01596619476..59ce465f5aa 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -303,7 +303,7 @@ when you hit the end of the current node." "If non-nil, hide the tag and section reference in *note and * menu items. If value is non-nil but not `hide', also replaces the \"*note\" with \"see\". If value is non-nil but not t or `hide', the reference section is still shown. -`nil' completely disables this feature. If this is non-nil, you might +nil completely disables this feature. If this is non-nil, you might want to set `Info-refill-paragraphs'." :version "22.1" :type '(choice (const :tag "No hiding" nil) @@ -632,7 +632,7 @@ Do the right thing if the file has been compressed or zipped." default-directory))) (or (consp decoder) (setq decoder (list decoder))) - (apply 'call-process-region (point-min) (point-max) + (apply #'call-process-region (point-min) (point-max) (car decoder) t t nil (cdr decoder)))) (let ((inhibit-null-byte-detection t)) ; Index nodes include null bytes (insert-file-contents fullname visit))) @@ -1422,10 +1422,10 @@ is non-nil)." (insert "\^_\nFile: dir\tNode: " nodename "\n\n* Menu:\n\n")) ;; Merge the text from the other buffer's menu ;; into the menu in the like-named node in the main buffer. - (apply 'insert-buffer-substring (cdr node)))) + (apply #'insert-buffer-substring (cdr node)))) (Info-dir-remove-duplicates) ;; Kill all the buffers we just made, including the special one excised. - (mapc 'kill-buffer (cons buffer buffers)) + (mapc #'kill-buffer (cons buffer buffers)) (goto-char (point-min)) (if problems (message "Composing main Info directory...problems encountered, see `*Messages*'") @@ -1810,10 +1810,10 @@ See `completing-read' for a description of arguments and usage." ((string-match "\\`([^)]*\\'" string) (completion-table-with-context "(" - (apply-partially 'completion-table-with-terminator ")" - (apply-partially 'Info-read-node-name-2 + (apply-partially #'completion-table-with-terminator ")" + (apply-partially #'Info-read-node-name-2 Info-directory-list - (mapcar 'car Info-suffix-list))) + (mapcar #'car Info-suffix-list))) (substring string 1) predicate code)) @@ -1827,12 +1827,11 @@ See `completing-read' for a description of arguments and usage." t (completion-table-with-context file0 - (apply-partially - (lambda (string pred action) - (complete-with-action - action - (Info-build-node-completions (Info-find-file file1)) - string pred))) + (lambda (string pred action) + (complete-with-action + action + (Info-build-node-completions (Info-find-file file1)) + string pred)) nodename predicate code)))) ;; Otherwise use Info-read-node-completion-table. (t (complete-with-action @@ -2577,7 +2576,9 @@ new buffer." (save-excursion ;; Move point to the beginning of reference if point is on reference (or (looking-at "\\*note[ \n\t]+") - (and (looking-back "\\*note[ \n\t]+") + (and (looking-back "\\*note[ \n\t]+" + (save-excursion (skip-chars-backward " \n\t") + (line-beginning-position))) (goto-char (match-beginning 0))) (if (and (save-excursion (goto-char (+ (point) 5)) ; skip a possible *note @@ -2748,7 +2749,8 @@ new buffer." (end-of-line) (if (re-search-backward (concat "\n\\* +\\(" Info-menu-entry-name-re - "\\):") beg t) + "\\):") + beg t) (setq default (match-string-no-properties 1)))))) (let ((item nil)) (while (null item) @@ -2758,7 +2760,8 @@ new buffer." (format "Menu item (default %s): " default) "Menu item: ") - 'Info-complete-menu-item nil t))) + #'Info-complete-menu-item nil t nil nil + default))) ;; we rely on the fact that completing-read accepts an input ;; of "" even when the require-match argument is true and "" ;; is not a valid possibility @@ -3375,10 +3378,10 @@ Give an empty topic name to go to the Index node itself." (re-search-forward (format "[a-zA-Z]+: [a-zA-Z0-9_ *&]+ %s\\( \\|$\\)" (regexp-quote name)) nil t) - (search-forward (format "`%s'" name) nil t) + (search-forward (format "['`‘]%s['’]" name) nil t) (and (string-match "\\`.*\\( (.*)\\)\\'" name) (search-forward - (format "`%s'" (substring name 0 (match-beginning 1))) + (format "['`‘]%s['’]" (substring name 0 (match-beginning 1))) nil t)) (search-forward name nil t) ;; Try again without the " <1>" makeinfo can append @@ -3403,7 +3406,7 @@ MATCHES is a list of index matches found by `Info-index'.") (defun Info-virtual-index-find-node (filename nodename &optional _no-going-back) "Index-specific implementation of `Info-find-node-2'." ;; Generate Index-like menu of matches - (if (string-match "^\\*Index for `\\(.+\\)'\\*$" nodename) + (if (string-match "^\\*Index for ‘\\(.+\\)’\\*$" nodename) ;; Generate Index-like menu of matches (let* ((topic (match-string 1 nodename)) (matches (cdr (assoc (cons (or filename Info-current-file) topic) @@ -3412,7 +3415,7 @@ MATCHES is a list of index matches found by `Info-index'.") (or filename Info-current-file) nodename)) (insert "Info Virtual Index\n") (insert "******************\n\n") - (insert "Index entries that match `" topic "':\n\n") + (insert "Index entries that match ‘" topic "’:\n\n") (insert "\0\b[index\0\b]\n") (if (null matches) (insert "No matches found.\n") @@ -3431,13 +3434,13 @@ MATCHES is a list of index matches found by `Info-index'.") (insert "Info Virtual Index\n") (insert "******************\n\n") (insert "This is a list of search results produced by\n" - "`Info-virtual-index' for the current manual.\n\n") + "‘Info-virtual-index’ for the current manual.\n\n") (insert "* Menu:\n\n") (dolist (nodeinfo nodes) (when (equal (car (nth 0 nodeinfo)) (or filename Info-current-file)) (insert (format "* %-20s %s.\n" - (format "*Index for `%s'*::" (cdr (nth 0 nodeinfo))) + (format "*Index for ‘%s’*::" (cdr (nth 0 nodeinfo))) (cdr (nth 0 nodeinfo))))))))) (defun Info-virtual-index (topic) @@ -3472,7 +3475,7 @@ search results." (setq Info-history-list ohist-list) (Info-goto-node orignode) (message ""))) - (Info-find-node Info-current-file (format "*Index for `%s'*" topic)))) + (Info-find-node Info-current-file (format "*Index for ‘%s’*" topic)))) (add-to-list 'Info-virtual-files '("\\`\\*Apropos\\*\\'" @@ -3494,7 +3497,7 @@ MATCHES is a list of index matches found by `Info-apropos-matches'.") (defun Info-apropos-toc-nodes (filename) "Apropos-specific implementation of `Info-toc-nodes'." - (let ((nodes (mapcar 'car (reverse Info-apropos-nodes)))) + (let ((nodes (mapcar #'car (reverse Info-apropos-nodes)))) `(,filename ("Top" nil nil ,nodes) ,@(mapcar (lambda (node) `(,node "Top" nil nil)) nodes)))) @@ -3512,7 +3515,7 @@ MATCHES is a list of index matches found by `Info-apropos-matches'.") Info-apropos-file nodename)) (insert "Apropos Index\n") (insert "*************\n\n") - (insert "This is a list of search results produced by `info-apropos'.\n\n") + (insert "This is a list of search results produced by ‘info-apropos’.\n\n") (insert "* Menu:\n\n") (dolist (nodeinfo nodes) (insert (format "* %-20s %s.\n" @@ -3526,7 +3529,7 @@ MATCHES is a list of index matches found by `Info-apropos-matches'.") Info-apropos-file nodename)) (insert "Apropos Index\n") (insert "*************\n\n") - (insert "Index entries that match `" (nth 1 nodeinfo) "':\n\n") + (insert "Index entries that match ‘" (nth 1 nodeinfo) "’:\n\n") (insert "\0\b[index\0\b]\n") (if (eq matches t) (insert "No matches found.\n") @@ -3611,7 +3614,7 @@ Build a menu of the possible matches." (setq nodes (cdr nodes))) (if nodes (Info-find-node Info-apropos-file (car (car nodes))) - (setq nodename (format "Index for `%s'" string)) + (setq nodename (format "Index for ‘%s’" string)) (push (list nodename string (Info-apropos-matches string)) Info-apropos-nodes) (Info-find-node Info-apropos-file nodename))))) @@ -3707,13 +3710,13 @@ Build a menu of the possible matches." "The following packages match the keyword `" nodename "':\n\n") (insert "* Menu:\n\n") (let ((keywords - (mapcar 'intern (if (string-match-p "," nodename) + (mapcar #'intern (if (string-match-p "," nodename) (split-string nodename ",[ \t\n]*" t) (list nodename)))) hits desc) (dolist (keyword keywords) (push (copy-tree (gethash keyword finder-keywords-hash)) hits)) - (setq hits (delete-dups (apply 'append hits)) + (setq hits (delete-dups (apply #'append hits)) ;; Not a meaningful package. hits (delete 'emacs hits) hits (sort hits (lambda (a b) (string< (symbol-name a) @@ -3764,8 +3767,8 @@ with a list of packages that contain all specified keywords." (list (completing-read-multiple "Keywords (separated by comma): " - (mapcar 'symbol-name (mapcar 'car (append finder-known-keywords - (finder-unknown-keywords)))) + (mapcar #'symbol-name (mapcar #'car (append finder-known-keywords + (finder-unknown-keywords)))) nil t)))) (require 'finder) (if keywords @@ -3891,7 +3894,7 @@ If FORK is non-nil, it is passed to `Info-goto-node'." (let (node) (cond ((setq node (Info-get-token (point) "[hf]t?tps?://" - "\\([hf]t?tps?://[^ \t\n\"`({<>})']+\\)")) + "\\([hf]t?tps?://[^ \t\n\"`‘({<>})’']+\\)")) (browse-url node) (setq node t)) ((setq node (Info-get-token (point) "\\*note[ \n\t]+" @@ -4738,9 +4741,11 @@ first line or header line, and for breadcrumb links.") ;; an end of sentence (skip-syntax-backward " (")) (setq other-tag - (cond ((save-match-data (looking-back "\\<see")) + (cond ((save-match-data (looking-back "\\<see" + (- (point) 3))) "") - ((save-match-data (looking-back "\\<in")) + ((save-match-data (looking-back "\\<in" + (- (point) 2))) "") ((memq (char-before) '(nil ?\. ?! ??)) "See ") @@ -4974,7 +4979,7 @@ first line or header line, and for breadcrumb links.") ;; Fontify http and ftp references (goto-char (point-min)) (when not-fontified-p - (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+" + (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`‘({<>})’']+" nil t) (add-text-properties (match-beginning 0) (match-end 0) '(font-lock-face info-xref @@ -5318,9 +5323,9 @@ completion alternatives to currently visited manuals." (when (not visited-only) (all-completions "" - (apply-partially 'Info-read-node-name-2 + (apply-partially #'Info-read-node-name-2 Info-directory-list - (mapcar 'car Info-suffix-list)))))))) + (mapcar #'car Info-suffix-list)))))))) (provide 'info) diff --git a/lisp/international/cp51932.el b/lisp/international/cp51932.el deleted file mode 100644 index a6489268578..00000000000 --- a/lisp/international/cp51932.el +++ /dev/null @@ -1,470 +0,0 @@ -;;; cp51932.el -- translation table for CP51932. -*- no-byte-compile: t -*- -;;; Automatically generated from CP932-2BYTE.map -(let ((map - '(;JISEXT<->UNICODE - (#x2D21 . #x2460) - (#x2D22 . #x2461) - (#x2D23 . #x2462) - (#x2D24 . #x2463) - (#x2D25 . #x2464) - (#x2D26 . #x2465) - (#x2D27 . #x2466) - (#x2D28 . #x2467) - (#x2D29 . #x2468) - (#x2D2A . #x2469) - (#x2D2B . #x246A) - (#x2D2C . #x246B) - (#x2D2D . #x246C) - (#x2D2E . #x246D) - (#x2D2F . #x246E) - (#x2D30 . #x246F) - (#x2D31 . #x2470) - (#x2D32 . #x2471) - (#x2D33 . #x2472) - (#x2D34 . #x2473) - (#x2D35 . #x2160) - (#x2D36 . #x2161) - (#x2D37 . #x2162) - (#x2D38 . #x2163) - (#x2D39 . #x2164) - (#x2D3A . #x2165) - (#x2D3B . #x2166) - (#x2D3C . #x2167) - (#x2D3D . #x2168) - (#x2D3E . #x2169) - (#x2D40 . #x3349) - (#x2D41 . #x3314) - (#x2D42 . #x3322) - (#x2D43 . #x334D) - (#x2D44 . #x3318) - (#x2D45 . #x3327) - (#x2D46 . #x3303) - (#x2D47 . #x3336) - (#x2D48 . #x3351) - (#x2D49 . #x3357) - (#x2D4A . #x330D) - (#x2D4B . #x3326) - (#x2D4C . #x3323) - (#x2D4D . #x332B) - (#x2D4E . #x334A) - (#x2D4F . #x333B) - (#x2D50 . #x339C) - (#x2D51 . #x339D) - (#x2D52 . #x339E) - (#x2D53 . #x338E) - (#x2D54 . #x338F) - (#x2D55 . #x33C4) - (#x2D56 . #x33A1) - (#x2D5F . #x337B) - (#x2D60 . #x301D) - (#x2D61 . #x301F) - (#x2D62 . #x2116) - (#x2D63 . #x33CD) - (#x2D64 . #x2121) - (#x2D65 . #x32A4) - (#x2D66 . #x32A5) - (#x2D67 . #x32A6) - (#x2D68 . #x32A7) - (#x2D69 . #x32A8) - (#x2D6A . #x3231) - (#x2D6B . #x3232) - (#x2D6C . #x3239) - (#x2D6D . #x337E) - (#x2D6E . #x337D) - (#x2D6F . #x337C) - (#x2D70 . #x2252) - (#x2D71 . #x2261) - (#x2D72 . #x222B) - (#x2D73 . #x222E) - (#x2D74 . #x2211) - (#x2D75 . #x221A) - (#x2D76 . #x22A5) - (#x2D77 . #x2220) - (#x2D78 . #x221F) - (#x2D79 . #x22BF) - (#x2D7A . #x2235) - (#x2D7B . #x2229) - (#x2D7C . #x222A) - (#x7921 . #x7E8A) - (#x7922 . #x891C) - (#x7923 . #x9348) - (#x7924 . #x9288) - (#x7925 . #x84DC) - (#x7926 . #x4FC9) - (#x7927 . #x70BB) - (#x7928 . #x6631) - (#x7929 . #x68C8) - (#x792A . #x92F9) - (#x792B . #x66FB) - (#x792C . #x5F45) - (#x792D . #x4E28) - (#x792E . #x4EE1) - (#x792F . #x4EFC) - (#x7930 . #x4F00) - (#x7931 . #x4F03) - (#x7932 . #x4F39) - (#x7933 . #x4F56) - (#x7934 . #x4F92) - (#x7935 . #x4F8A) - (#x7936 . #x4F9A) - (#x7937 . #x4F94) - (#x7938 . #x4FCD) - (#x7939 . #x5040) - (#x793A . #x5022) - (#x793B . #x4FFF) - (#x793C . #x501E) - (#x793D . #x5046) - (#x793E . #x5070) - (#x793F . #x5042) - (#x7940 . #x5094) - (#x7941 . #x50F4) - (#x7942 . #x50D8) - (#x7943 . #x514A) - (#x7944 . #x5164) - (#x7945 . #x519D) - (#x7946 . #x51BE) - (#x7947 . #x51EC) - (#x7948 . #x5215) - (#x7949 . #x529C) - (#x794A . #x52A6) - (#x794B . #x52C0) - (#x794C . #x52DB) - (#x794D . #x5300) - (#x794E . #x5307) - (#x794F . #x5324) - (#x7950 . #x5372) - (#x7951 . #x5393) - (#x7952 . #x53B2) - (#x7953 . #x53DD) - (#x7954 . #xFA0E) - (#x7955 . #x549C) - (#x7956 . #x548A) - (#x7957 . #x54A9) - (#x7958 . #x54FF) - (#x7959 . #x5586) - (#x795A . #x5759) - (#x795B . #x5765) - (#x795C . #x57AC) - (#x795D . #x57C8) - (#x795E . #x57C7) - (#x795F . #xFA0F) - (#x7960 . #xFA10) - (#x7961 . #x589E) - (#x7962 . #x58B2) - (#x7963 . #x590B) - (#x7964 . #x5953) - (#x7965 . #x595B) - (#x7966 . #x595D) - (#x7967 . #x5963) - (#x7968 . #x59A4) - (#x7969 . #x59BA) - (#x796A . #x5B56) - (#x796B . #x5BC0) - (#x796C . #x752F) - (#x796D . #x5BD8) - (#x796E . #x5BEC) - (#x796F . #x5C1E) - (#x7970 . #x5CA6) - (#x7971 . #x5CBA) - (#x7972 . #x5CF5) - (#x7973 . #x5D27) - (#x7974 . #x5D53) - (#x7975 . #xFA11) - (#x7976 . #x5D42) - (#x7977 . #x5D6D) - (#x7978 . #x5DB8) - (#x7979 . #x5DB9) - (#x797A . #x5DD0) - (#x797B . #x5F21) - (#x797C . #x5F34) - (#x797D . #x5F67) - (#x797E . #x5FB7) - (#x7A21 . #x5FDE) - (#x7A22 . #x605D) - (#x7A23 . #x6085) - (#x7A24 . #x608A) - (#x7A25 . #x60DE) - (#x7A26 . #x60D5) - (#x7A27 . #x6120) - (#x7A28 . #x60F2) - (#x7A29 . #x6111) - (#x7A2A . #x6137) - (#x7A2B . #x6130) - (#x7A2C . #x6198) - (#x7A2D . #x6213) - (#x7A2E . #x62A6) - (#x7A2F . #x63F5) - (#x7A30 . #x6460) - (#x7A31 . #x649D) - (#x7A32 . #x64CE) - (#x7A33 . #x654E) - (#x7A34 . #x6600) - (#x7A35 . #x6615) - (#x7A36 . #x663B) - (#x7A37 . #x6609) - (#x7A38 . #x662E) - (#x7A39 . #x661E) - (#x7A3A . #x6624) - (#x7A3B . #x6665) - (#x7A3C . #x6657) - (#x7A3D . #x6659) - (#x7A3E . #xFA12) - (#x7A3F . #x6673) - (#x7A40 . #x6699) - (#x7A41 . #x66A0) - (#x7A42 . #x66B2) - (#x7A43 . #x66BF) - (#x7A44 . #x66FA) - (#x7A45 . #x670E) - (#x7A46 . #xF929) - (#x7A47 . #x6766) - (#x7A48 . #x67BB) - (#x7A49 . #x6852) - (#x7A4A . #x67C0) - (#x7A4B . #x6801) - (#x7A4C . #x6844) - (#x7A4D . #x68CF) - (#x7A4E . #xFA13) - (#x7A4F . #x6968) - (#x7A50 . #xFA14) - (#x7A51 . #x6998) - (#x7A52 . #x69E2) - (#x7A53 . #x6A30) - (#x7A54 . #x6A6B) - (#x7A55 . #x6A46) - (#x7A56 . #x6A73) - (#x7A57 . #x6A7E) - (#x7A58 . #x6AE2) - (#x7A59 . #x6AE4) - (#x7A5A . #x6BD6) - (#x7A5B . #x6C3F) - (#x7A5C . #x6C5C) - (#x7A5D . #x6C86) - (#x7A5E . #x6C6F) - (#x7A5F . #x6CDA) - (#x7A60 . #x6D04) - (#x7A61 . #x6D87) - (#x7A62 . #x6D6F) - (#x7A63 . #x6D96) - (#x7A64 . #x6DAC) - (#x7A65 . #x6DCF) - (#x7A66 . #x6DF8) - (#x7A67 . #x6DF2) - (#x7A68 . #x6DFC) - (#x7A69 . #x6E39) - (#x7A6A . #x6E5C) - (#x7A6B . #x6E27) - (#x7A6C . #x6E3C) - (#x7A6D . #x6EBF) - (#x7A6E . #x6F88) - (#x7A6F . #x6FB5) - (#x7A70 . #x6FF5) - (#x7A71 . #x7005) - (#x7A72 . #x7007) - (#x7A73 . #x7028) - (#x7A74 . #x7085) - (#x7A75 . #x70AB) - (#x7A76 . #x710F) - (#x7A77 . #x7104) - (#x7A78 . #x715C) - (#x7A79 . #x7146) - (#x7A7A . #x7147) - (#x7A7B . #xFA15) - (#x7A7C . #x71C1) - (#x7A7D . #x71FE) - (#x7A7E . #x72B1) - (#x7B21 . #x72BE) - (#x7B22 . #x7324) - (#x7B23 . #xFA16) - (#x7B24 . #x7377) - (#x7B25 . #x73BD) - (#x7B26 . #x73C9) - (#x7B27 . #x73D6) - (#x7B28 . #x73E3) - (#x7B29 . #x73D2) - (#x7B2A . #x7407) - (#x7B2B . #x73F5) - (#x7B2C . #x7426) - (#x7B2D . #x742A) - (#x7B2E . #x7429) - (#x7B2F . #x742E) - (#x7B30 . #x7462) - (#x7B31 . #x7489) - (#x7B32 . #x749F) - (#x7B33 . #x7501) - (#x7B34 . #x756F) - (#x7B35 . #x7682) - (#x7B36 . #x769C) - (#x7B37 . #x769E) - (#x7B38 . #x769B) - (#x7B39 . #x76A6) - (#x7B3A . #xFA17) - (#x7B3B . #x7746) - (#x7B3C . #x52AF) - (#x7B3D . #x7821) - (#x7B3E . #x784E) - (#x7B3F . #x7864) - (#x7B40 . #x787A) - (#x7B41 . #x7930) - (#x7B42 . #xFA18) - (#x7B43 . #xFA19) - (#x7B44 . #xFA1A) - (#x7B45 . #x7994) - (#x7B46 . #xFA1B) - (#x7B47 . #x799B) - (#x7B48 . #x7AD1) - (#x7B49 . #x7AE7) - (#x7B4A . #xFA1C) - (#x7B4B . #x7AEB) - (#x7B4C . #x7B9E) - (#x7B4D . #xFA1D) - (#x7B4E . #x7D48) - (#x7B4F . #x7D5C) - (#x7B50 . #x7DB7) - (#x7B51 . #x7DA0) - (#x7B52 . #x7DD6) - (#x7B53 . #x7E52) - (#x7B54 . #x7F47) - (#x7B55 . #x7FA1) - (#x7B56 . #xFA1E) - (#x7B57 . #x8301) - (#x7B58 . #x8362) - (#x7B59 . #x837F) - (#x7B5A . #x83C7) - (#x7B5B . #x83F6) - (#x7B5C . #x8448) - (#x7B5D . #x84B4) - (#x7B5E . #x8553) - (#x7B5F . #x8559) - (#x7B60 . #x856B) - (#x7B61 . #xFA1F) - (#x7B62 . #x85B0) - (#x7B63 . #xFA20) - (#x7B64 . #xFA21) - (#x7B65 . #x8807) - (#x7B66 . #x88F5) - (#x7B67 . #x8A12) - (#x7B68 . #x8A37) - (#x7B69 . #x8A79) - (#x7B6A . #x8AA7) - (#x7B6B . #x8ABE) - (#x7B6C . #x8ADF) - (#x7B6D . #xFA22) - (#x7B6E . #x8AF6) - (#x7B6F . #x8B53) - (#x7B70 . #x8B7F) - (#x7B71 . #x8CF0) - (#x7B72 . #x8CF4) - (#x7B73 . #x8D12) - (#x7B74 . #x8D76) - (#x7B75 . #xFA23) - (#x7B76 . #x8ECF) - (#x7B77 . #xFA24) - (#x7B78 . #xFA25) - (#x7B79 . #x9067) - (#x7B7A . #x90DE) - (#x7B7B . #xFA26) - (#x7B7C . #x9115) - (#x7B7D . #x9127) - (#x7B7E . #x91DA) - (#x7C21 . #x91D7) - (#x7C22 . #x91DE) - (#x7C23 . #x91ED) - (#x7C24 . #x91EE) - (#x7C25 . #x91E4) - (#x7C26 . #x91E5) - (#x7C27 . #x9206) - (#x7C28 . #x9210) - (#x7C29 . #x920A) - (#x7C2A . #x923A) - (#x7C2B . #x9240) - (#x7C2C . #x923C) - (#x7C2D . #x924E) - (#x7C2E . #x9259) - (#x7C2F . #x9251) - (#x7C30 . #x9239) - (#x7C31 . #x9267) - (#x7C32 . #x92A7) - (#x7C33 . #x9277) - (#x7C34 . #x9278) - (#x7C35 . #x92E7) - (#x7C36 . #x92D7) - (#x7C37 . #x92D9) - (#x7C38 . #x92D0) - (#x7C39 . #xFA27) - (#x7C3A . #x92D5) - (#x7C3B . #x92E0) - (#x7C3C . #x92D3) - (#x7C3D . #x9325) - (#x7C3E . #x9321) - (#x7C3F . #x92FB) - (#x7C40 . #xFA28) - (#x7C41 . #x931E) - (#x7C42 . #x92FF) - (#x7C43 . #x931D) - (#x7C44 . #x9302) - (#x7C45 . #x9370) - (#x7C46 . #x9357) - (#x7C47 . #x93A4) - (#x7C48 . #x93C6) - (#x7C49 . #x93DE) - (#x7C4A . #x93F8) - (#x7C4B . #x9431) - (#x7C4C . #x9445) - (#x7C4D . #x9448) - (#x7C4E . #x9592) - (#x7C4F . #xF9DC) - (#x7C50 . #xFA29) - (#x7C51 . #x969D) - (#x7C52 . #x96AF) - (#x7C53 . #x9733) - (#x7C54 . #x973B) - (#x7C55 . #x9743) - (#x7C56 . #x974D) - (#x7C57 . #x974F) - (#x7C58 . #x9751) - (#x7C59 . #x9755) - (#x7C5A . #x9857) - (#x7C5B . #x9865) - (#x7C5C . #xFA2A) - (#x7C5D . #xFA2B) - (#x7C5E . #x9927) - (#x7C5F . #xFA2C) - (#x7C60 . #x999E) - (#x7C61 . #x9A4E) - (#x7C62 . #x9AD9) - (#x7C63 . #x9ADC) - (#x7C64 . #x9B75) - (#x7C65 . #x9B72) - (#x7C66 . #x9B8F) - (#x7C67 . #x9BB1) - (#x7C68 . #x9BBB) - (#x7C69 . #x9C00) - (#x7C6A . #x9D70) - (#x7C6B . #x9D6B) - (#x7C6C . #xFA2D) - (#x7C6D . #x9E19) - (#x7C6E . #x9ED1) - (#x7C71 . #x2170) - (#x7C72 . #x2171) - (#x7C73 . #x2172) - (#x7C74 . #x2173) - (#x7C75 . #x2174) - (#x7C76 . #x2175) - (#x7C77 . #x2176) - (#x7C78 . #x2177) - (#x7C79 . #x2178) - (#x7C7A . #x2179) - (#x7C7B . #xFFE2) - (#x7C7C . #xFFE4) - (#x7C7D . #xFF07) - (#x7C7E . #xFF02)))) - (mapc #'(lambda (x) - (setcar x (decode-char 'japanese-jisx0208 (car x)))) - map) - (define-translation-table 'cp51932-decode map) - (mapc #'(lambda (x) - (let ((tmp (car x))) - (setcar x (cdr x)) (setcdr x tmp))) - map) - (define-translation-table 'cp51932-encode map)) diff --git a/lisp/international/eucjp-ms.el b/lisp/international/eucjp-ms.el deleted file mode 100644 index 6e4e1e798b0..00000000000 --- a/lisp/international/eucjp-ms.el +++ /dev/null @@ -1,2087 +0,0 @@ -;;; eucjp-ms.el -- translation table for eucJP-ms. -*- no-byte-compile: t -*- -;;; Automatically generated from /usr/share/i18n/charmaps/EUC-JP-MS.gz -(let ((map - '(;JISEXT<->UNICODE - - (#xada1 . #x2460) - (#xada2 . #x2461) - (#xada3 . #x2462) - (#xada4 . #x2463) - (#xada5 . #x2464) - (#xada6 . #x2465) - (#xada7 . #x2466) - (#xada8 . #x2467) - (#xada9 . #x2468) - (#xadaa . #x2469) - (#xadab . #x246A) - (#xadac . #x246B) - (#xadad . #x246C) - (#xadae . #x246D) - (#xadaf . #x246E) - (#xadb0 . #x246F) - (#xadb1 . #x2470) - (#xadb2 . #x2471) - (#xadb3 . #x2472) - (#xadb4 . #x2473) - (#xadb5 . #x2160) - (#xadb6 . #x2161) - (#xadb7 . #x2162) - (#xadb8 . #x2163) - (#xadb9 . #x2164) - (#xadba . #x2165) - (#xadbb . #x2166) - (#xadbc . #x2167) - (#xadbd . #x2168) - (#xadbe . #x2169) - (#xadc0 . #x3349) - (#xadc1 . #x3314) - (#xadc2 . #x3322) - (#xadc3 . #x334D) - (#xadc4 . #x3318) - (#xadc5 . #x3327) - (#xadc6 . #x3303) - (#xadc7 . #x3336) - (#xadc8 . #x3351) - (#xadc9 . #x3357) - (#xadca . #x330D) - (#xadcb . #x3326) - (#xadcc . #x3323) - (#xadcd . #x332B) - (#xadce . #x334A) - (#xadcf . #x333B) - (#xadd0 . #x339C) - (#xadd1 . #x339D) - (#xadd2 . #x339E) - (#xadd3 . #x338E) - (#xadd4 . #x338F) - (#xadd5 . #x33C4) - (#xadd6 . #x33A1) - (#xaddf . #x337B) - (#xade0 . #x301D) - (#xade1 . #x301F) - (#xade2 . #x2116) - (#xade3 . #x33CD) - (#xade4 . #x2121) - (#xade5 . #x32A4) - (#xade6 . #x32A5) - (#xade7 . #x32A6) - (#xade8 . #x32A7) - (#xade9 . #x32A8) - (#xadea . #x3231) - (#xadeb . #x3232) - (#xadec . #x3239) - (#xaded . #x337E) - (#xadee . #x337D) - (#xadef . #x337C) - (#xadf0 . #x2252) - (#xadf1 . #x2261) - (#xadf2 . #x222B) - (#xadf3 . #x222E) - (#xadf4 . #x2211) - (#xadf5 . #x221A) - (#xadf6 . #x22A5) - (#xadf7 . #x2220) - (#xadf8 . #x221F) - (#xadf9 . #x22BF) - (#xadfa . #x2235) - (#xadfb . #x2229) - (#xadfc . #x222A) - (#xf5a1 . #xE000) - (#xf5a2 . #xE001) - (#xf5a3 . #xE002) - (#xf5a4 . #xE003) - (#xf5a5 . #xE004) - (#xf5a6 . #xE005) - (#xf5a7 . #xE006) - (#xf5a8 . #xE007) - (#xf5a9 . #xE008) - (#xf5aa . #xE009) - (#xf5ab . #xE00A) - (#xf5ac . #xE00B) - (#xf5ad . #xE00C) - (#xf5ae . #xE00D) - (#xf5af . #xE00E) - (#xf5b0 . #xE00F) - (#xf5b1 . #xE010) - (#xf5b2 . #xE011) - (#xf5b3 . #xE012) - (#xf5b4 . #xE013) - (#xf5b5 . #xE014) - (#xf5b6 . #xE015) - (#xf5b7 . #xE016) - (#xf5b8 . #xE017) - (#xf5b9 . #xE018) - (#xf5ba . #xE019) - (#xf5bb . #xE01A) - (#xf5bc . #xE01B) - (#xf5bd . #xE01C) - (#xf5be . #xE01D) - (#xf5bf . #xE01E) - (#xf5c0 . #xE01F) - (#xf5c1 . #xE020) - (#xf5c2 . #xE021) - (#xf5c3 . #xE022) - (#xf5c4 . #xE023) - (#xf5c5 . #xE024) - (#xf5c6 . #xE025) - (#xf5c7 . #xE026) - (#xf5c8 . #xE027) - (#xf5c9 . #xE028) - (#xf5ca . #xE029) - (#xf5cb . #xE02A) - (#xf5cc . #xE02B) - (#xf5cd . #xE02C) - (#xf5ce . #xE02D) - (#xf5cf . #xE02E) - (#xf5d0 . #xE02F) - (#xf5d1 . #xE030) - (#xf5d2 . #xE031) - (#xf5d3 . #xE032) - (#xf5d4 . #xE033) - (#xf5d5 . #xE034) - (#xf5d6 . #xE035) - (#xf5d7 . #xE036) - (#xf5d8 . #xE037) - (#xf5d9 . #xE038) - (#xf5da . #xE039) - (#xf5db . #xE03A) - (#xf5dc . #xE03B) - (#xf5dd . #xE03C) - (#xf5de . #xE03D) - (#xf5df . #xE03E) - (#xf5e0 . #xE03F) - (#xf5e1 . #xE040) - (#xf5e2 . #xE041) - (#xf5e3 . #xE042) - (#xf5e4 . #xE043) - (#xf5e5 . #xE044) - (#xf5e6 . #xE045) - (#xf5e7 . #xE046) - (#xf5e8 . #xE047) - (#xf5e9 . #xE048) - (#xf5ea . #xE049) - (#xf5eb . #xE04A) - (#xf5ec . #xE04B) - (#xf5ed . #xE04C) - (#xf5ee . #xE04D) - (#xf5ef . #xE04E) - (#xf5f0 . #xE04F) - (#xf5f1 . #xE050) - (#xf5f2 . #xE051) - (#xf5f3 . #xE052) - (#xf5f4 . #xE053) - (#xf5f5 . #xE054) - (#xf5f6 . #xE055) - (#xf5f7 . #xE056) - (#xf5f8 . #xE057) - (#xf5f9 . #xE058) - (#xf5fa . #xE059) - (#xf5fb . #xE05A) - (#xf5fc . #xE05B) - (#xf5fd . #xE05C) - (#xf5fe . #xE05D) - (#xf6a1 . #xE05E) - (#xf6a2 . #xE05F) - (#xf6a3 . #xE060) - (#xf6a4 . #xE061) - (#xf6a5 . #xE062) - (#xf6a6 . #xE063) - (#xf6a7 . #xE064) - (#xf6a8 . #xE065) - (#xf6a9 . #xE066) - (#xf6aa . #xE067) - (#xf6ab . #xE068) - (#xf6ac . #xE069) - (#xf6ad . #xE06A) - (#xf6ae . #xE06B) - (#xf6af . #xE06C) - (#xf6b0 . #xE06D) - (#xf6b1 . #xE06E) - (#xf6b2 . #xE06F) - (#xf6b3 . #xE070) - (#xf6b4 . #xE071) - (#xf6b5 . #xE072) - (#xf6b6 . #xE073) - (#xf6b7 . #xE074) - (#xf6b8 . #xE075) - (#xf6b9 . #xE076) - (#xf6ba . #xE077) - (#xf6bb . #xE078) - (#xf6bc . #xE079) - (#xf6bd . #xE07A) - (#xf6be . #xE07B) - (#xf6bf . #xE07C) - (#xf6c0 . #xE07D) - (#xf6c1 . #xE07E) - (#xf6c2 . #xE07F) - (#xf6c3 . #xE080) - (#xf6c4 . #xE081) - (#xf6c5 . #xE082) - (#xf6c6 . #xE083) - (#xf6c7 . #xE084) - (#xf6c8 . #xE085) - (#xf6c9 . #xE086) - (#xf6ca . #xE087) - (#xf6cb . #xE088) - (#xf6cc . #xE089) - (#xf6cd . #xE08A) - (#xf6ce . #xE08B) - (#xf6cf . #xE08C) - (#xf6d0 . #xE08D) - (#xf6d1 . #xE08E) - (#xf6d2 . #xE08F) - (#xf6d3 . #xE090) - (#xf6d4 . #xE091) - (#xf6d5 . #xE092) - (#xf6d6 . #xE093) - (#xf6d7 . #xE094) - (#xf6d8 . #xE095) - (#xf6d9 . #xE096) - (#xf6da . #xE097) - (#xf6db . #xE098) - (#xf6dc . #xE099) - (#xf6dd . #xE09A) - (#xf6de . #xE09B) - (#xf6df . #xE09C) - (#xf6e0 . #xE09D) - (#xf6e1 . #xE09E) - (#xf6e2 . #xE09F) - (#xf6e3 . #xE0A0) - (#xf6e4 . #xE0A1) - (#xf6e5 . #xE0A2) - (#xf6e6 . #xE0A3) - (#xf6e7 . #xE0A4) - (#xf6e8 . #xE0A5) - (#xf6e9 . #xE0A6) - (#xf6ea . #xE0A7) - (#xf6eb . #xE0A8) - (#xf6ec . #xE0A9) - (#xf6ed . #xE0AA) - (#xf6ee . #xE0AB) - (#xf6ef . #xE0AC) - (#xf6f0 . #xE0AD) - (#xf6f1 . #xE0AE) - (#xf6f2 . #xE0AF) - (#xf6f3 . #xE0B0) - (#xf6f4 . #xE0B1) - (#xf6f5 . #xE0B2) - (#xf6f6 . #xE0B3) - (#xf6f7 . #xE0B4) - (#xf6f8 . #xE0B5) - (#xf6f9 . #xE0B6) - (#xf6fa . #xE0B7) - (#xf6fb . #xE0B8) - (#xf6fc . #xE0B9) - (#xf6fd . #xE0BA) - (#xf6fe . #xE0BB) - (#xf7a1 . #xE0BC) - (#xf7a2 . #xE0BD) - (#xf7a3 . #xE0BE) - (#xf7a4 . #xE0BF) - (#xf7a5 . #xE0C0) - (#xf7a6 . #xE0C1) - (#xf7a7 . #xE0C2) - (#xf7a8 . #xE0C3) - (#xf7a9 . #xE0C4) - (#xf7aa . #xE0C5) - (#xf7ab . #xE0C6) - (#xf7ac . #xE0C7) - (#xf7ad . #xE0C8) - (#xf7ae . #xE0C9) - (#xf7af . #xE0CA) - (#xf7b0 . #xE0CB) - (#xf7b1 . #xE0CC) - (#xf7b2 . #xE0CD) - (#xf7b3 . #xE0CE) - (#xf7b4 . #xE0CF) - (#xf7b5 . #xE0D0) - (#xf7b6 . #xE0D1) - (#xf7b7 . #xE0D2) - (#xf7b8 . #xE0D3) - (#xf7b9 . #xE0D4) - (#xf7ba . #xE0D5) - (#xf7bb . #xE0D6) - (#xf7bc . #xE0D7) - (#xf7bd . #xE0D8) - (#xf7be . #xE0D9) - (#xf7bf . #xE0DA) - (#xf7c0 . #xE0DB) - (#xf7c1 . #xE0DC) - (#xf7c2 . #xE0DD) - (#xf7c3 . #xE0DE) - (#xf7c4 . #xE0DF) - (#xf7c5 . #xE0E0) - (#xf7c6 . #xE0E1) - (#xf7c7 . #xE0E2) - (#xf7c8 . #xE0E3) - (#xf7c9 . #xE0E4) - (#xf7ca . #xE0E5) - (#xf7cb . #xE0E6) - (#xf7cc . #xE0E7) - (#xf7cd . #xE0E8) - (#xf7ce . #xE0E9) - (#xf7cf . #xE0EA) - (#xf7d0 . #xE0EB) - (#xf7d1 . #xE0EC) - (#xf7d2 . #xE0ED) - (#xf7d3 . #xE0EE) - (#xf7d4 . #xE0EF) - (#xf7d5 . #xE0F0) - (#xf7d6 . #xE0F1) - (#xf7d7 . #xE0F2) - (#xf7d8 . #xE0F3) - (#xf7d9 . #xE0F4) - (#xf7da . #xE0F5) - (#xf7db . #xE0F6) - (#xf7dc . #xE0F7) - (#xf7dd . #xE0F8) - (#xf7de . #xE0F9) - (#xf7df . #xE0FA) - (#xf7e0 . #xE0FB) - (#xf7e1 . #xE0FC) - (#xf7e2 . #xE0FD) - (#xf7e3 . #xE0FE) - (#xf7e4 . #xE0FF) - (#xf7e5 . #xE100) - (#xf7e6 . #xE101) - (#xf7e7 . #xE102) - (#xf7e8 . #xE103) - (#xf7e9 . #xE104) - (#xf7ea . #xE105) - (#xf7eb . #xE106) - (#xf7ec . #xE107) - (#xf7ed . #xE108) - (#xf7ee . #xE109) - (#xf7ef . #xE10A) - (#xf7f0 . #xE10B) - (#xf7f1 . #xE10C) - (#xf7f2 . #xE10D) - (#xf7f3 . #xE10E) - (#xf7f4 . #xE10F) - (#xf7f5 . #xE110) - (#xf7f6 . #xE111) - (#xf7f7 . #xE112) - (#xf7f8 . #xE113) - (#xf7f9 . #xE114) - (#xf7fa . #xE115) - (#xf7fb . #xE116) - (#xf7fc . #xE117) - (#xf7fd . #xE118) - (#xf7fe . #xE119) - (#xf8a1 . #xE11A) - (#xf8a2 . #xE11B) - (#xf8a3 . #xE11C) - (#xf8a4 . #xE11D) - (#xf8a5 . #xE11E) - (#xf8a6 . #xE11F) - (#xf8a7 . #xE120) - (#xf8a8 . #xE121) - (#xf8a9 . #xE122) - (#xf8aa . #xE123) - (#xf8ab . #xE124) - (#xf8ac . #xE125) - (#xf8ad . #xE126) - (#xf8ae . #xE127) - (#xf8af . #xE128) - (#xf8b0 . #xE129) - (#xf8b1 . #xE12A) - (#xf8b2 . #xE12B) - (#xf8b3 . #xE12C) - (#xf8b4 . #xE12D) - (#xf8b5 . #xE12E) - (#xf8b6 . #xE12F) - (#xf8b7 . #xE130) - (#xf8b8 . #xE131) - (#xf8b9 . #xE132) - (#xf8ba . #xE133) - (#xf8bb . #xE134) - (#xf8bc . #xE135) - (#xf8bd . #xE136) - (#xf8be . #xE137) - (#xf8bf . #xE138) - (#xf8c0 . #xE139) - (#xf8c1 . #xE13A) - (#xf8c2 . #xE13B) - (#xf8c3 . #xE13C) - (#xf8c4 . #xE13D) - (#xf8c5 . #xE13E) - (#xf8c6 . #xE13F) - (#xf8c7 . #xE140) - (#xf8c8 . #xE141) - (#xf8c9 . #xE142) - (#xf8ca . #xE143) - (#xf8cb . #xE144) - (#xf8cc . #xE145) - (#xf8cd . #xE146) - (#xf8ce . #xE147) - (#xf8cf . #xE148) - (#xf8d0 . #xE149) - (#xf8d1 . #xE14A) - (#xf8d2 . #xE14B) - (#xf8d3 . #xE14C) - (#xf8d4 . #xE14D) - (#xf8d5 . #xE14E) - (#xf8d6 . #xE14F) - (#xf8d7 . #xE150) - (#xf8d8 . #xE151) - (#xf8d9 . #xE152) - (#xf8da . #xE153) - (#xf8db . #xE154) - (#xf8dc . #xE155) - (#xf8dd . #xE156) - (#xf8de . #xE157) - (#xf8df . #xE158) - (#xf8e0 . #xE159) - (#xf8e1 . #xE15A) - (#xf8e2 . #xE15B) - (#xf8e3 . #xE15C) - (#xf8e4 . #xE15D) - (#xf8e5 . #xE15E) - (#xf8e6 . #xE15F) - (#xf8e7 . #xE160) - (#xf8e8 . #xE161) - (#xf8e9 . #xE162) - (#xf8ea . #xE163) - (#xf8eb . #xE164) - (#xf8ec . #xE165) - (#xf8ed . #xE166) - (#xf8ee . #xE167) - (#xf8ef . #xE168) - (#xf8f0 . #xE169) - (#xf8f1 . #xE16A) - (#xf8f2 . #xE16B) - (#xf8f3 . #xE16C) - (#xf8f4 . #xE16D) - (#xf8f5 . #xE16E) - (#xf8f6 . #xE16F) - (#xf8f7 . #xE170) - (#xf8f8 . #xE171) - (#xf8f9 . #xE172) - (#xf8fa . #xE173) - (#xf8fb . #xE174) - (#xf8fc . #xE175) - (#xf8fd . #xE176) - (#xf8fe . #xE177) - (#xf9a1 . #xE178) - (#xf9a2 . #xE179) - (#xf9a3 . #xE17A) - (#xf9a4 . #xE17B) - (#xf9a5 . #xE17C) - (#xf9a6 . #xE17D) - (#xf9a7 . #xE17E) - (#xf9a8 . #xE17F) - (#xf9a9 . #xE180) - (#xf9aa . #xE181) - (#xf9ab . #xE182) - (#xf9ac . #xE183) - (#xf9ad . #xE184) - (#xf9ae . #xE185) - (#xf9af . #xE186) - (#xf9b0 . #xE187) - (#xf9b1 . #xE188) - (#xf9b2 . #xE189) - (#xf9b3 . #xE18A) - (#xf9b4 . #xE18B) - (#xf9b5 . #xE18C) - (#xf9b6 . #xE18D) - (#xf9b7 . #xE18E) - (#xf9b8 . #xE18F) - (#xf9b9 . #xE190) - (#xf9ba . #xE191) - (#xf9bb . #xE192) - (#xf9bc . #xE193) - (#xf9bd . #xE194) - (#xf9be . #xE195) - (#xf9bf . #xE196) - (#xf9c0 . #xE197) - (#xf9c1 . #xE198) - (#xf9c2 . #xE199) - (#xf9c3 . #xE19A) - (#xf9c4 . #xE19B) - (#xf9c5 . #xE19C) - (#xf9c6 . #xE19D) - (#xf9c7 . #xE19E) - (#xf9c8 . #xE19F) - (#xf9c9 . #xE1A0) - (#xf9ca . #xE1A1) - (#xf9cb . #xE1A2) - (#xf9cc . #xE1A3) - (#xf9cd . #xE1A4) - (#xf9ce . #xE1A5) - (#xf9cf . #xE1A6) - (#xf9d0 . #xE1A7) - (#xf9d1 . #xE1A8) - (#xf9d2 . #xE1A9) - (#xf9d3 . #xE1AA) - (#xf9d4 . #xE1AB) - (#xf9d5 . #xE1AC) - (#xf9d6 . #xE1AD) - (#xf9d7 . #xE1AE) - (#xf9d8 . #xE1AF) - (#xf9d9 . #xE1B0) - (#xf9da . #xE1B1) - (#xf9db . #xE1B2) - (#xf9dc . #xE1B3) - (#xf9dd . #xE1B4) - (#xf9de . #xE1B5) - (#xf9df . #xE1B6) - (#xf9e0 . #xE1B7) - (#xf9e1 . #xE1B8) - (#xf9e2 . #xE1B9) - (#xf9e3 . #xE1BA) - (#xf9e4 . #xE1BB) - (#xf9e5 . #xE1BC) - (#xf9e6 . #xE1BD) - (#xf9e7 . #xE1BE) - (#xf9e8 . #xE1BF) - (#xf9e9 . #xE1C0) - (#xf9ea . #xE1C1) - (#xf9eb . #xE1C2) - (#xf9ec . #xE1C3) - (#xf9ed . #xE1C4) - (#xf9ee . #xE1C5) - (#xf9ef . #xE1C6) - (#xf9f0 . #xE1C7) - (#xf9f1 . #xE1C8) - (#xf9f2 . #xE1C9) - (#xf9f3 . #xE1CA) - (#xf9f4 . #xE1CB) - (#xf9f5 . #xE1CC) - (#xf9f6 . #xE1CD) - (#xf9f7 . #xE1CE) - (#xf9f8 . #xE1CF) - (#xf9f9 . #xE1D0) - (#xf9fa . #xE1D1) - (#xf9fb . #xE1D2) - (#xf9fc . #xE1D3) - (#xf9fd . #xE1D4) - (#xf9fe . #xE1D5) - (#xfaa1 . #xE1D6) - (#xfaa2 . #xE1D7) - (#xfaa3 . #xE1D8) - (#xfaa4 . #xE1D9) - (#xfaa5 . #xE1DA) - (#xfaa6 . #xE1DB) - (#xfaa7 . #xE1DC) - (#xfaa8 . #xE1DD) - (#xfaa9 . #xE1DE) - (#xfaaa . #xE1DF) - (#xfaab . #xE1E0) - (#xfaac . #xE1E1) - (#xfaad . #xE1E2) - (#xfaae . #xE1E3) - (#xfaaf . #xE1E4) - (#xfab0 . #xE1E5) - (#xfab1 . #xE1E6) - (#xfab2 . #xE1E7) - (#xfab3 . #xE1E8) - (#xfab4 . #xE1E9) - (#xfab5 . #xE1EA) - (#xfab6 . #xE1EB) - (#xfab7 . #xE1EC) - (#xfab8 . #xE1ED) - (#xfab9 . #xE1EE) - (#xfaba . #xE1EF) - (#xfabb . #xE1F0) - (#xfabc . #xE1F1) - (#xfabd . #xE1F2) - (#xfabe . #xE1F3) - (#xfabf . #xE1F4) - (#xfac0 . #xE1F5) - (#xfac1 . #xE1F6) - (#xfac2 . #xE1F7) - (#xfac3 . #xE1F8) - (#xfac4 . #xE1F9) - (#xfac5 . #xE1FA) - (#xfac6 . #xE1FB) - (#xfac7 . #xE1FC) - (#xfac8 . #xE1FD) - (#xfac9 . #xE1FE) - (#xfaca . #xE1FF) - (#xfacb . #xE200) - (#xfacc . #xE201) - (#xfacd . #xE202) - (#xface . #xE203) - (#xfacf . #xE204) - (#xfad0 . #xE205) - (#xfad1 . #xE206) - (#xfad2 . #xE207) - (#xfad3 . #xE208) - (#xfad4 . #xE209) - (#xfad5 . #xE20A) - (#xfad6 . #xE20B) - (#xfad7 . #xE20C) - (#xfad8 . #xE20D) - (#xfad9 . #xE20E) - (#xfada . #xE20F) - (#xfadb . #xE210) - (#xfadc . #xE211) - (#xfadd . #xE212) - (#xfade . #xE213) - (#xfadf . #xE214) - (#xfae0 . #xE215) - (#xfae1 . #xE216) - (#xfae2 . #xE217) - (#xfae3 . #xE218) - (#xfae4 . #xE219) - (#xfae5 . #xE21A) - (#xfae6 . #xE21B) - (#xfae7 . #xE21C) - (#xfae8 . #xE21D) - (#xfae9 . #xE21E) - (#xfaea . #xE21F) - (#xfaeb . #xE220) - (#xfaec . #xE221) - (#xfaed . #xE222) - (#xfaee . #xE223) - (#xfaef . #xE224) - (#xfaf0 . #xE225) - (#xfaf1 . #xE226) - (#xfaf2 . #xE227) - (#xfaf3 . #xE228) - (#xfaf4 . #xE229) - (#xfaf5 . #xE22A) - (#xfaf6 . #xE22B) - (#xfaf7 . #xE22C) - (#xfaf8 . #xE22D) - (#xfaf9 . #xE22E) - (#xfafa . #xE22F) - (#xfafb . #xE230) - (#xfafc . #xE231) - (#xfafd . #xE232) - (#xfafe . #xE233) - (#xfba1 . #xE234) - (#xfba2 . #xE235) - (#xfba3 . #xE236) - (#xfba4 . #xE237) - (#xfba5 . #xE238) - (#xfba6 . #xE239) - (#xfba7 . #xE23A) - (#xfba8 . #xE23B) - (#xfba9 . #xE23C) - (#xfbaa . #xE23D) - (#xfbab . #xE23E) - (#xfbac . #xE23F) - (#xfbad . #xE240) - (#xfbae . #xE241) - (#xfbaf . #xE242) - (#xfbb0 . #xE243) - (#xfbb1 . #xE244) - (#xfbb2 . #xE245) - (#xfbb3 . #xE246) - (#xfbb4 . #xE247) - (#xfbb5 . #xE248) - (#xfbb6 . #xE249) - (#xfbb7 . #xE24A) - (#xfbb8 . #xE24B) - (#xfbb9 . #xE24C) - (#xfbba . #xE24D) - (#xfbbb . #xE24E) - (#xfbbc . #xE24F) - (#xfbbd . #xE250) - (#xfbbe . #xE251) - (#xfbbf . #xE252) - (#xfbc0 . #xE253) - (#xfbc1 . #xE254) - (#xfbc2 . #xE255) - (#xfbc3 . #xE256) - (#xfbc4 . #xE257) - (#xfbc5 . #xE258) - (#xfbc6 . #xE259) - (#xfbc7 . #xE25A) - (#xfbc8 . #xE25B) - (#xfbc9 . #xE25C) - (#xfbca . #xE25D) - (#xfbcb . #xE25E) - (#xfbcc . #xE25F) - (#xfbcd . #xE260) - (#xfbce . #xE261) - (#xfbcf . #xE262) - (#xfbd0 . #xE263) - (#xfbd1 . #xE264) - (#xfbd2 . #xE265) - (#xfbd3 . #xE266) - (#xfbd4 . #xE267) - (#xfbd5 . #xE268) - (#xfbd6 . #xE269) - (#xfbd7 . #xE26A) - (#xfbd8 . #xE26B) - (#xfbd9 . #xE26C) - (#xfbda . #xE26D) - (#xfbdb . #xE26E) - (#xfbdc . #xE26F) - (#xfbdd . #xE270) - (#xfbde . #xE271) - (#xfbdf . #xE272) - (#xfbe0 . #xE273) - (#xfbe1 . #xE274) - (#xfbe2 . #xE275) - (#xfbe3 . #xE276) - (#xfbe4 . #xE277) - (#xfbe5 . #xE278) - (#xfbe6 . #xE279) - (#xfbe7 . #xE27A) - (#xfbe8 . #xE27B) - (#xfbe9 . #xE27C) - (#xfbea . #xE27D) - (#xfbeb . #xE27E) - (#xfbec . #xE27F) - (#xfbed . #xE280) - (#xfbee . #xE281) - (#xfbef . #xE282) - (#xfbf0 . #xE283) - (#xfbf1 . #xE284) - (#xfbf2 . #xE285) - (#xfbf3 . #xE286) - (#xfbf4 . #xE287) - (#xfbf5 . #xE288) - (#xfbf6 . #xE289) - (#xfbf7 . #xE28A) - (#xfbf8 . #xE28B) - (#xfbf9 . #xE28C) - (#xfbfa . #xE28D) - (#xfbfb . #xE28E) - (#xfbfc . #xE28F) - (#xfbfd . #xE290) - (#xfbfe . #xE291) - (#xfca1 . #xE292) - (#xfca2 . #xE293) - (#xfca3 . #xE294) - (#xfca4 . #xE295) - (#xfca5 . #xE296) - (#xfca6 . #xE297) - (#xfca7 . #xE298) - (#xfca8 . #xE299) - (#xfca9 . #xE29A) - (#xfcaa . #xE29B) - (#xfcab . #xE29C) - (#xfcac . #xE29D) - (#xfcad . #xE29E) - (#xfcae . #xE29F) - (#xfcaf . #xE2A0) - (#xfcb0 . #xE2A1) - (#xfcb1 . #xE2A2) - (#xfcb2 . #xE2A3) - (#xfcb3 . #xE2A4) - (#xfcb4 . #xE2A5) - (#xfcb5 . #xE2A6) - (#xfcb6 . #xE2A7) - (#xfcb7 . #xE2A8) - (#xfcb8 . #xE2A9) - (#xfcb9 . #xE2AA) - (#xfcba . #xE2AB) - (#xfcbb . #xE2AC) - (#xfcbc . #xE2AD) - (#xfcbd . #xE2AE) - (#xfcbe . #xE2AF) - (#xfcbf . #xE2B0) - (#xfcc0 . #xE2B1) - (#xfcc1 . #xE2B2) - (#xfcc2 . #xE2B3) - (#xfcc3 . #xE2B4) - (#xfcc4 . #xE2B5) - (#xfcc5 . #xE2B6) - (#xfcc6 . #xE2B7) - (#xfcc7 . #xE2B8) - (#xfcc8 . #xE2B9) - (#xfcc9 . #xE2BA) - (#xfcca . #xE2BB) - (#xfccb . #xE2BC) - (#xfccc . #xE2BD) - (#xfccd . #xE2BE) - (#xfcce . #xE2BF) - (#xfccf . #xE2C0) - (#xfcd0 . #xE2C1) - (#xfcd1 . #xE2C2) - (#xfcd2 . #xE2C3) - (#xfcd3 . #xE2C4) - (#xfcd4 . #xE2C5) - (#xfcd5 . #xE2C6) - (#xfcd6 . #xE2C7) - (#xfcd7 . #xE2C8) - (#xfcd8 . #xE2C9) - (#xfcd9 . #xE2CA) - (#xfcda . #xE2CB) - (#xfcdb . #xE2CC) - (#xfcdc . #xE2CD) - (#xfcdd . #xE2CE) - (#xfcde . #xE2CF) - (#xfcdf . #xE2D0) - (#xfce0 . #xE2D1) - (#xfce1 . #xE2D2) - (#xfce2 . #xE2D3) - (#xfce3 . #xE2D4) - (#xfce4 . #xE2D5) - (#xfce5 . #xE2D6) - (#xfce6 . #xE2D7) - (#xfce7 . #xE2D8) - (#xfce8 . #xE2D9) - (#xfce9 . #xE2DA) - (#xfcea . #xE2DB) - (#xfceb . #xE2DC) - (#xfcec . #xE2DD) - (#xfced . #xE2DE) - (#xfcee . #xE2DF) - (#xfcef . #xE2E0) - (#xfcf0 . #xE2E1) - (#xfcf1 . #xE2E2) - (#xfcf2 . #xE2E3) - (#xfcf3 . #xE2E4) - (#xfcf4 . #xE2E5) - (#xfcf5 . #xE2E6) - (#xfcf6 . #xE2E7) - (#xfcf7 . #xE2E8) - (#xfcf8 . #xE2E9) - (#xfcf9 . #xE2EA) - (#xfcfa . #xE2EB) - (#xfcfb . #xE2EC) - (#xfcfc . #xE2ED) - (#xfcfd . #xE2EE) - (#xfcfe . #xE2EF) - (#xfda1 . #xE2F0) - (#xfda2 . #xE2F1) - (#xfda3 . #xE2F2) - (#xfda4 . #xE2F3) - (#xfda5 . #xE2F4) - (#xfda6 . #xE2F5) - (#xfda7 . #xE2F6) - (#xfda8 . #xE2F7) - (#xfda9 . #xE2F8) - (#xfdaa . #xE2F9) - (#xfdab . #xE2FA) - (#xfdac . #xE2FB) - (#xfdad . #xE2FC) - (#xfdae . #xE2FD) - (#xfdaf . #xE2FE) - (#xfdb0 . #xE2FF) - (#xfdb1 . #xE300) - (#xfdb2 . #xE301) - (#xfdb3 . #xE302) - (#xfdb4 . #xE303) - (#xfdb5 . #xE304) - (#xfdb6 . #xE305) - (#xfdb7 . #xE306) - (#xfdb8 . #xE307) - (#xfdb9 . #xE308) - (#xfdba . #xE309) - (#xfdbb . #xE30A) - (#xfdbc . #xE30B) - (#xfdbd . #xE30C) - (#xfdbe . #xE30D) - (#xfdbf . #xE30E) - (#xfdc0 . #xE30F) - (#xfdc1 . #xE310) - (#xfdc2 . #xE311) - (#xfdc3 . #xE312) - (#xfdc4 . #xE313) - (#xfdc5 . #xE314) - (#xfdc6 . #xE315) - (#xfdc7 . #xE316) - (#xfdc8 . #xE317) - (#xfdc9 . #xE318) - (#xfdca . #xE319) - (#xfdcb . #xE31A) - (#xfdcc . #xE31B) - (#xfdcd . #xE31C) - (#xfdce . #xE31D) - (#xfdcf . #xE31E) - (#xfdd0 . #xE31F) - (#xfdd1 . #xE320) - (#xfdd2 . #xE321) - (#xfdd3 . #xE322) - (#xfdd4 . #xE323) - (#xfdd5 . #xE324) - (#xfdd6 . #xE325) - (#xfdd7 . #xE326) - (#xfdd8 . #xE327) - (#xfdd9 . #xE328) - (#xfdda . #xE329) - (#xfddb . #xE32A) - (#xfddc . #xE32B) - (#xfddd . #xE32C) - (#xfdde . #xE32D) - (#xfddf . #xE32E) - (#xfde0 . #xE32F) - (#xfde1 . #xE330) - (#xfde2 . #xE331) - (#xfde3 . #xE332) - (#xfde4 . #xE333) - (#xfde5 . #xE334) - (#xfde6 . #xE335) - (#xfde7 . #xE336) - (#xfde8 . #xE337) - (#xfde9 . #xE338) - (#xfdea . #xE339) - (#xfdeb . #xE33A) - (#xfdec . #xE33B) - (#xfded . #xE33C) - (#xfdee . #xE33D) - (#xfdef . #xE33E) - (#xfdf0 . #xE33F) - (#xfdf1 . #xE340) - (#xfdf2 . #xE341) - (#xfdf3 . #xE342) - (#xfdf4 . #xE343) - (#xfdf5 . #xE344) - (#xfdf6 . #xE345) - (#xfdf7 . #xE346) - (#xfdf8 . #xE347) - (#xfdf9 . #xE348) - (#xfdfa . #xE349) - (#xfdfb . #xE34A) - (#xfdfc . #xE34B) - (#xfdfd . #xE34C) - (#xfdfe . #xE34D) - (#xfea1 . #xE34E) - (#xfea2 . #xE34F) - (#xfea3 . #xE350) - (#xfea4 . #xE351) - (#xfea5 . #xE352) - (#xfea6 . #xE353) - (#xfea7 . #xE354) - (#xfea8 . #xE355) - (#xfea9 . #xE356) - (#xfeaa . #xE357) - (#xfeab . #xE358) - (#xfeac . #xE359) - (#xfead . #xE35A) - (#xfeae . #xE35B) - (#xfeaf . #xE35C) - (#xfeb0 . #xE35D) - (#xfeb1 . #xE35E) - (#xfeb2 . #xE35F) - (#xfeb3 . #xE360) - (#xfeb4 . #xE361) - (#xfeb5 . #xE362) - (#xfeb6 . #xE363) - (#xfeb7 . #xE364) - (#xfeb8 . #xE365) - (#xfeb9 . #xE366) - (#xfeba . #xE367) - (#xfebb . #xE368) - (#xfebc . #xE369) - (#xfebd . #xE36A) - (#xfebe . #xE36B) - (#xfebf . #xE36C) - (#xfec0 . #xE36D) - (#xfec1 . #xE36E) - (#xfec2 . #xE36F) - (#xfec3 . #xE370) - (#xfec4 . #xE371) - (#xfec5 . #xE372) - (#xfec6 . #xE373) - (#xfec7 . #xE374) - (#xfec8 . #xE375) - (#xfec9 . #xE376) - (#xfeca . #xE377) - (#xfecb . #xE378) - (#xfecc . #xE379) - (#xfecd . #xE37A) - (#xfece . #xE37B) - (#xfecf . #xE37C) - (#xfed0 . #xE37D) - (#xfed1 . #xE37E) - (#xfed2 . #xE37F) - (#xfed3 . #xE380) - (#xfed4 . #xE381) - (#xfed5 . #xE382) - (#xfed6 . #xE383) - (#xfed7 . #xE384) - (#xfed8 . #xE385) - (#xfed9 . #xE386) - (#xfeda . #xE387) - (#xfedb . #xE388) - (#xfedc . #xE389) - (#xfedd . #xE38A) - (#xfede . #xE38B) - (#xfedf . #xE38C) - (#xfee0 . #xE38D) - (#xfee1 . #xE38E) - (#xfee2 . #xE38F) - (#xfee3 . #xE390) - (#xfee4 . #xE391) - (#xfee5 . #xE392) - (#xfee6 . #xE393) - (#xfee7 . #xE394) - (#xfee8 . #xE395) - (#xfee9 . #xE396) - (#xfeea . #xE397) - (#xfeeb . #xE398) - (#xfeec . #xE399) - (#xfeed . #xE39A) - (#xfeee . #xE39B) - (#xfeef . #xE39C) - (#xfef0 . #xE39D) - (#xfef1 . #xE39E) - (#xfef2 . #xE39F) - (#xfef3 . #xE3A0) - (#xfef4 . #xE3A1) - (#xfef5 . #xE3A2) - (#xfef6 . #xE3A3) - (#xfef7 . #xE3A4) - (#xfef8 . #xE3A5) - (#xfef9 . #xE3A6) - (#xfefa . #xE3A7) - (#xfefb . #xE3A8) - (#xfefc . #xE3A9) - (#xfefd . #xE3AA) - (#xfefe . #xE3AB) - (#xf3f3 #x2170) - (#xf3f4 #x2171) - (#xf3f5 #x2172) - (#xf3f6 #x2173) - (#xf3f7 #x2174) - (#xf3f8 #x2175) - (#xf3f9 #x2176) - (#xf3fa #x2177) - (#xf3fb #x2178) - (#xf3fc #x2179) - (#xf3fd #x2160) - (#xf3fe #x2161) - (#xf4a1 #x2162) - (#xf4a2 #x2163) - (#xf4a3 #x2164) - (#xf4a4 #x2165) - (#xf4a5 #x2166) - (#xf4a6 #x2167) - (#xf4a7 #x2168) - (#xf4a8 #x2169) - (#xf4a9 #xFF07) - (#xf4aa #xFF02) - (#xf4ab #x3231) - (#xf4ac #x2116) - (#xf4ad #x2121) - (#xf4ae #x70BB) - (#xf4af #x4EFC) - (#xf4b0 #x50F4) - (#xf4b1 #x51EC) - (#xf4b2 #x5307) - (#xf4b3 #x5324) - (#xf4b4 #xFA0E) - (#xf4b5 #x548A) - (#xf4b6 #x5759) - (#xf4b7 #xFA0F) - (#xf4b8 #xFA10) - (#xf4b9 #x589E) - (#xf4ba #x5BEC) - (#xf4bb #x5CF5) - (#xf4bc #x5D53) - (#xf4bd #xFA11) - (#xf4be #x5FB7) - (#xf4bf #x6085) - (#xf4c0 #x6120) - (#xf4c1 #x654E) - (#xf4c2 #x663B) - (#xf4c3 #x6665) - (#xf4c4 #xFA12) - (#xf4c5 #xF929) - (#xf4c6 #x6801) - (#xf4c7 #xFA13) - (#xf4c8 #xFA14) - (#xf4c9 #x6A6B) - (#xf4ca #x6AE2) - (#xf4cb #x6DF8) - (#xf4cc #x6DF2) - (#xf4cd #x7028) - (#xf4ce #xFA15) - (#xf4cf #xFA16) - (#xf4d0 #x7501) - (#xf4d1 #x7682) - (#xf4d2 #x769E) - (#xf4d3 #xFA17) - (#xf4d4 #x7930) - (#xf4d5 #xFA18) - (#xf4d6 #xFA19) - (#xf4d7 #xFA1A) - (#xf4d8 #xFA1B) - (#xf4d9 #x7AE7) - (#xf4da #xFA1C) - (#xf4db #xFA1D) - (#xf4dc #x7DA0) - (#xf4dd #x7DD6) - (#xf4de #xFA1E) - (#xf4df #x8362) - (#xf4e0 #xFA1F) - (#xf4e1 #x85B0) - (#xf4e2 #xFA20) - (#xf4e3 #xFA21) - (#xf4e4 #x8807) - (#xf4e5 #xFA22) - (#xf4e6 #x8B7F) - (#xf4e7 #x8CF4) - (#xf4e8 #x8D76) - (#xf4e9 #xFA23) - (#xf4ea #xFA24) - (#xf4eb #xFA25) - (#xf4ec #x90DE) - (#xf4ed #xFA26) - (#xf4ee #x9115) - (#xf4ef #xFA27) - (#xf4f0 #xFA28) - (#xf4f1 #x9592) - (#xf4f2 #xF9DC) - (#xf4f3 #xFA29) - (#xf4f4 #x973B) - (#xf4f5 #x974D) - (#xf4f6 #x9751) - (#xf4f7 #xFA2A) - (#xf4f8 #xFA2B) - (#xf4f9 #xFA2C) - (#xf4fa #x999E) - (#xf4fb #x9AD9) - (#xf4fc #x9B72) - (#xf4fd #xFA2D) - (#xf4fe #x9ED1) - (#xf5a1 #xE3AC) - (#xf5a2 #xE3AD) - (#xf5a3 #xE3AE) - (#xf5a4 #xE3AF) - (#xf5a5 #xE3B0) - (#xf5a6 #xE3B1) - (#xf5a7 #xE3B2) - (#xf5a8 #xE3B3) - (#xf5a9 #xE3B4) - (#xf5aa #xE3B5) - (#xf5ab #xE3B6) - (#xf5ac #xE3B7) - (#xf5ad #xE3B8) - (#xf5ae #xE3B9) - (#xf5af #xE3BA) - (#xf5b0 #xE3BB) - (#xf5b1 #xE3BC) - (#xf5b2 #xE3BD) - (#xf5b3 #xE3BE) - (#xf5b4 #xE3BF) - (#xf5b5 #xE3C0) - (#xf5b6 #xE3C1) - (#xf5b7 #xE3C2) - (#xf5b8 #xE3C3) - (#xf5b9 #xE3C4) - (#xf5ba #xE3C5) - (#xf5bb #xE3C6) - (#xf5bc #xE3C7) - (#xf5bd #xE3C8) - (#xf5be #xE3C9) - (#xf5bf #xE3CA) - (#xf5c0 #xE3CB) - (#xf5c1 #xE3CC) - (#xf5c2 #xE3CD) - (#xf5c3 #xE3CE) - (#xf5c4 #xE3CF) - (#xf5c5 #xE3D0) - (#xf5c6 #xE3D1) - (#xf5c7 #xE3D2) - (#xf5c8 #xE3D3) - (#xf5c9 #xE3D4) - (#xf5ca #xE3D5) - (#xf5cb #xE3D6) - (#xf5cc #xE3D7) - (#xf5cd #xE3D8) - (#xf5ce #xE3D9) - (#xf5cf #xE3DA) - (#xf5d0 #xE3DB) - (#xf5d1 #xE3DC) - (#xf5d2 #xE3DD) - (#xf5d3 #xE3DE) - (#xf5d4 #xE3DF) - (#xf5d5 #xE3E0) - (#xf5d6 #xE3E1) - (#xf5d7 #xE3E2) - (#xf5d8 #xE3E3) - (#xf5d9 #xE3E4) - (#xf5da #xE3E5) - (#xf5db #xE3E6) - (#xf5dc #xE3E7) - (#xf5dd #xE3E8) - (#xf5de #xE3E9) - (#xf5df #xE3EA) - (#xf5e0 #xE3EB) - (#xf5e1 #xE3EC) - (#xf5e2 #xE3ED) - (#xf5e3 #xE3EE) - (#xf5e4 #xE3EF) - (#xf5e5 #xE3F0) - (#xf5e6 #xE3F1) - (#xf5e7 #xE3F2) - (#xf5e8 #xE3F3) - (#xf5e9 #xE3F4) - (#xf5ea #xE3F5) - (#xf5eb #xE3F6) - (#xf5ec #xE3F7) - (#xf5ed #xE3F8) - (#xf5ee #xE3F9) - (#xf5ef #xE3FA) - (#xf5f0 #xE3FB) - (#xf5f1 #xE3FC) - (#xf5f2 #xE3FD) - (#xf5f3 #xE3FE) - (#xf5f4 #xE3FF) - (#xf5f5 #xE400) - (#xf5f6 #xE401) - (#xf5f7 #xE402) - (#xf5f8 #xE403) - (#xf5f9 #xE404) - (#xf5fa #xE405) - (#xf5fb #xE406) - (#xf5fc #xE407) - (#xf5fd #xE408) - (#xf5fe #xE409) - (#xf6a1 #xE40A) - (#xf6a2 #xE40B) - (#xf6a3 #xE40C) - (#xf6a4 #xE40D) - (#xf6a5 #xE40E) - (#xf6a6 #xE40F) - (#xf6a7 #xE410) - (#xf6a8 #xE411) - (#xf6a9 #xE412) - (#xf6aa #xE413) - (#xf6ab #xE414) - (#xf6ac #xE415) - (#xf6ad #xE416) - (#xf6ae #xE417) - (#xf6af #xE418) - (#xf6b0 #xE419) - (#xf6b1 #xE41A) - (#xf6b2 #xE41B) - (#xf6b3 #xE41C) - (#xf6b4 #xE41D) - (#xf6b5 #xE41E) - (#xf6b6 #xE41F) - (#xf6b7 #xE420) - (#xf6b8 #xE421) - (#xf6b9 #xE422) - (#xf6ba #xE423) - (#xf6bb #xE424) - (#xf6bc #xE425) - (#xf6bd #xE426) - (#xf6be #xE427) - (#xf6bf #xE428) - (#xf6c0 #xE429) - (#xf6c1 #xE42A) - (#xf6c2 #xE42B) - (#xf6c3 #xE42C) - (#xf6c4 #xE42D) - (#xf6c5 #xE42E) - (#xf6c6 #xE42F) - (#xf6c7 #xE430) - (#xf6c8 #xE431) - (#xf6c9 #xE432) - (#xf6ca #xE433) - (#xf6cb #xE434) - (#xf6cc #xE435) - (#xf6cd #xE436) - (#xf6ce #xE437) - (#xf6cf #xE438) - (#xf6d0 #xE439) - (#xf6d1 #xE43A) - (#xf6d2 #xE43B) - (#xf6d3 #xE43C) - (#xf6d4 #xE43D) - (#xf6d5 #xE43E) - (#xf6d6 #xE43F) - (#xf6d7 #xE440) - (#xf6d8 #xE441) - (#xf6d9 #xE442) - (#xf6da #xE443) - (#xf6db #xE444) - (#xf6dc #xE445) - (#xf6dd #xE446) - (#xf6de #xE447) - (#xf6df #xE448) - (#xf6e0 #xE449) - (#xf6e1 #xE44A) - (#xf6e2 #xE44B) - (#xf6e3 #xE44C) - (#xf6e4 #xE44D) - (#xf6e5 #xE44E) - (#xf6e6 #xE44F) - (#xf6e7 #xE450) - (#xf6e8 #xE451) - (#xf6e9 #xE452) - (#xf6ea #xE453) - (#xf6eb #xE454) - (#xf6ec #xE455) - (#xf6ed #xE456) - (#xf6ee #xE457) - (#xf6ef #xE458) - (#xf6f0 #xE459) - (#xf6f1 #xE45A) - (#xf6f2 #xE45B) - (#xf6f3 #xE45C) - (#xf6f4 #xE45D) - (#xf6f5 #xE45E) - (#xf6f6 #xE45F) - (#xf6f7 #xE460) - (#xf6f8 #xE461) - (#xf6f9 #xE462) - (#xf6fa #xE463) - (#xf6fb #xE464) - (#xf6fc #xE465) - (#xf6fd #xE466) - (#xf6fe #xE467) - (#xf7a1 #xE468) - (#xf7a2 #xE469) - (#xf7a3 #xE46A) - (#xf7a4 #xE46B) - (#xf7a5 #xE46C) - (#xf7a6 #xE46D) - (#xf7a7 #xE46E) - (#xf7a8 #xE46F) - (#xf7a9 #xE470) - (#xf7aa #xE471) - (#xf7ab #xE472) - (#xf7ac #xE473) - (#xf7ad #xE474) - (#xf7ae #xE475) - (#xf7af #xE476) - (#xf7b0 #xE477) - (#xf7b1 #xE478) - (#xf7b2 #xE479) - (#xf7b3 #xE47A) - (#xf7b4 #xE47B) - (#xf7b5 #xE47C) - (#xf7b6 #xE47D) - (#xf7b7 #xE47E) - (#xf7b8 #xE47F) - (#xf7b9 #xE480) - (#xf7ba #xE481) - (#xf7bb #xE482) - (#xf7bc #xE483) - (#xf7bd #xE484) - (#xf7be #xE485) - (#xf7bf #xE486) - (#xf7c0 #xE487) - (#xf7c1 #xE488) - (#xf7c2 #xE489) - (#xf7c3 #xE48A) - (#xf7c4 #xE48B) - (#xf7c5 #xE48C) - (#xf7c6 #xE48D) - (#xf7c7 #xE48E) - (#xf7c8 #xE48F) - (#xf7c9 #xE490) - (#xf7ca #xE491) - (#xf7cb #xE492) - (#xf7cc #xE493) - (#xf7cd #xE494) - (#xf7ce #xE495) - (#xf7cf #xE496) - (#xf7d0 #xE497) - (#xf7d1 #xE498) - (#xf7d2 #xE499) - (#xf7d3 #xE49A) - (#xf7d4 #xE49B) - (#xf7d5 #xE49C) - (#xf7d6 #xE49D) - (#xf7d7 #xE49E) - (#xf7d8 #xE49F) - (#xf7d9 #xE4A0) - (#xf7da #xE4A1) - (#xf7db #xE4A2) - (#xf7dc #xE4A3) - (#xf7dd #xE4A4) - (#xf7de #xE4A5) - (#xf7df #xE4A6) - (#xf7e0 #xE4A7) - (#xf7e1 #xE4A8) - (#xf7e2 #xE4A9) - (#xf7e3 #xE4AA) - (#xf7e4 #xE4AB) - (#xf7e5 #xE4AC) - (#xf7e6 #xE4AD) - (#xf7e7 #xE4AE) - (#xf7e8 #xE4AF) - (#xf7e9 #xE4B0) - (#xf7ea #xE4B1) - (#xf7eb #xE4B2) - (#xf7ec #xE4B3) - (#xf7ed #xE4B4) - (#xf7ee #xE4B5) - (#xf7ef #xE4B6) - (#xf7f0 #xE4B7) - (#xf7f1 #xE4B8) - (#xf7f2 #xE4B9) - (#xf7f3 #xE4BA) - (#xf7f4 #xE4BB) - (#xf7f5 #xE4BC) - (#xf7f6 #xE4BD) - (#xf7f7 #xE4BE) - (#xf7f8 #xE4BF) - (#xf7f9 #xE4C0) - (#xf7fa #xE4C1) - (#xf7fb #xE4C2) - (#xf7fc #xE4C3) - (#xf7fd #xE4C4) - (#xf7fe #xE4C5) - (#xf8a1 #xE4C6) - (#xf8a2 #xE4C7) - (#xf8a3 #xE4C8) - (#xf8a4 #xE4C9) - (#xf8a5 #xE4CA) - (#xf8a6 #xE4CB) - (#xf8a7 #xE4CC) - (#xf8a8 #xE4CD) - (#xf8a9 #xE4CE) - (#xf8aa #xE4CF) - (#xf8ab #xE4D0) - (#xf8ac #xE4D1) - (#xf8ad #xE4D2) - (#xf8ae #xE4D3) - (#xf8af #xE4D4) - (#xf8b0 #xE4D5) - (#xf8b1 #xE4D6) - (#xf8b2 #xE4D7) - (#xf8b3 #xE4D8) - (#xf8b4 #xE4D9) - (#xf8b5 #xE4DA) - (#xf8b6 #xE4DB) - (#xf8b7 #xE4DC) - (#xf8b8 #xE4DD) - (#xf8b9 #xE4DE) - (#xf8ba #xE4DF) - (#xf8bb #xE4E0) - (#xf8bc #xE4E1) - (#xf8bd #xE4E2) - (#xf8be #xE4E3) - (#xf8bf #xE4E4) - (#xf8c0 #xE4E5) - (#xf8c1 #xE4E6) - (#xf8c2 #xE4E7) - (#xf8c3 #xE4E8) - (#xf8c4 #xE4E9) - (#xf8c5 #xE4EA) - (#xf8c6 #xE4EB) - (#xf8c7 #xE4EC) - (#xf8c8 #xE4ED) - (#xf8c9 #xE4EE) - (#xf8ca #xE4EF) - (#xf8cb #xE4F0) - (#xf8cc #xE4F1) - (#xf8cd #xE4F2) - (#xf8ce #xE4F3) - (#xf8cf #xE4F4) - (#xf8d0 #xE4F5) - (#xf8d1 #xE4F6) - (#xf8d2 #xE4F7) - (#xf8d3 #xE4F8) - (#xf8d4 #xE4F9) - (#xf8d5 #xE4FA) - (#xf8d6 #xE4FB) - (#xf8d7 #xE4FC) - (#xf8d8 #xE4FD) - (#xf8d9 #xE4FE) - (#xf8da #xE4FF) - (#xf8db #xE500) - (#xf8dc #xE501) - (#xf8dd #xE502) - (#xf8de #xE503) - (#xf8df #xE504) - (#xf8e0 #xE505) - (#xf8e1 #xE506) - (#xf8e2 #xE507) - (#xf8e3 #xE508) - (#xf8e4 #xE509) - (#xf8e5 #xE50A) - (#xf8e6 #xE50B) - (#xf8e7 #xE50C) - (#xf8e8 #xE50D) - (#xf8e9 #xE50E) - (#xf8ea #xE50F) - (#xf8eb #xE510) - (#xf8ec #xE511) - (#xf8ed #xE512) - (#xf8ee #xE513) - (#xf8ef #xE514) - (#xf8f0 #xE515) - (#xf8f1 #xE516) - (#xf8f2 #xE517) - (#xf8f3 #xE518) - (#xf8f4 #xE519) - (#xf8f5 #xE51A) - (#xf8f6 #xE51B) - (#xf8f7 #xE51C) - (#xf8f8 #xE51D) - (#xf8f9 #xE51E) - (#xf8fa #xE51F) - (#xf8fb #xE520) - (#xf8fc #xE521) - (#xf8fd #xE522) - (#xf8fe #xE523) - (#xf9a1 #xE524) - (#xf9a2 #xE525) - (#xf9a3 #xE526) - (#xf9a4 #xE527) - (#xf9a5 #xE528) - (#xf9a6 #xE529) - (#xf9a7 #xE52A) - (#xf9a8 #xE52B) - (#xf9a9 #xE52C) - (#xf9aa #xE52D) - (#xf9ab #xE52E) - (#xf9ac #xE52F) - (#xf9ad #xE530) - (#xf9ae #xE531) - (#xf9af #xE532) - (#xf9b0 #xE533) - (#xf9b1 #xE534) - (#xf9b2 #xE535) - (#xf9b3 #xE536) - (#xf9b4 #xE537) - (#xf9b5 #xE538) - (#xf9b6 #xE539) - (#xf9b7 #xE53A) - (#xf9b8 #xE53B) - (#xf9b9 #xE53C) - (#xf9ba #xE53D) - (#xf9bb #xE53E) - (#xf9bc #xE53F) - (#xf9bd #xE540) - (#xf9be #xE541) - (#xf9bf #xE542) - (#xf9c0 #xE543) - (#xf9c1 #xE544) - (#xf9c2 #xE545) - (#xf9c3 #xE546) - (#xf9c4 #xE547) - (#xf9c5 #xE548) - (#xf9c6 #xE549) - (#xf9c7 #xE54A) - (#xf9c8 #xE54B) - (#xf9c9 #xE54C) - (#xf9ca #xE54D) - (#xf9cb #xE54E) - (#xf9cc #xE54F) - (#xf9cd #xE550) - (#xf9ce #xE551) - (#xf9cf #xE552) - (#xf9d0 #xE553) - (#xf9d1 #xE554) - (#xf9d2 #xE555) - (#xf9d3 #xE556) - (#xf9d4 #xE557) - (#xf9d5 #xE558) - (#xf9d6 #xE559) - (#xf9d7 #xE55A) - (#xf9d8 #xE55B) - (#xf9d9 #xE55C) - (#xf9da #xE55D) - (#xf9db #xE55E) - (#xf9dc #xE55F) - (#xf9dd #xE560) - (#xf9de #xE561) - (#xf9df #xE562) - (#xf9e0 #xE563) - (#xf9e1 #xE564) - (#xf9e2 #xE565) - (#xf9e3 #xE566) - (#xf9e4 #xE567) - (#xf9e5 #xE568) - (#xf9e6 #xE569) - (#xf9e7 #xE56A) - (#xf9e8 #xE56B) - (#xf9e9 #xE56C) - (#xf9ea #xE56D) - (#xf9eb #xE56E) - (#xf9ec #xE56F) - (#xf9ed #xE570) - (#xf9ee #xE571) - (#xf9ef #xE572) - (#xf9f0 #xE573) - (#xf9f1 #xE574) - (#xf9f2 #xE575) - (#xf9f3 #xE576) - (#xf9f4 #xE577) - (#xf9f5 #xE578) - (#xf9f6 #xE579) - (#xf9f7 #xE57A) - (#xf9f8 #xE57B) - (#xf9f9 #xE57C) - (#xf9fa #xE57D) - (#xf9fb #xE57E) - (#xf9fc #xE57F) - (#xf9fd #xE580) - (#xf9fe #xE581) - (#xfaa1 #xE582) - (#xfaa2 #xE583) - (#xfaa3 #xE584) - (#xfaa4 #xE585) - (#xfaa5 #xE586) - (#xfaa6 #xE587) - (#xfaa7 #xE588) - (#xfaa8 #xE589) - (#xfaa9 #xE58A) - (#xfaaa #xE58B) - (#xfaab #xE58C) - (#xfaac #xE58D) - (#xfaad #xE58E) - (#xfaae #xE58F) - (#xfaaf #xE590) - (#xfab0 #xE591) - (#xfab1 #xE592) - (#xfab2 #xE593) - (#xfab3 #xE594) - (#xfab4 #xE595) - (#xfab5 #xE596) - (#xfab6 #xE597) - (#xfab7 #xE598) - (#xfab8 #xE599) - (#xfab9 #xE59A) - (#xfaba #xE59B) - (#xfabb #xE59C) - (#xfabc #xE59D) - (#xfabd #xE59E) - (#xfabe #xE59F) - (#xfabf #xE5A0) - (#xfac0 #xE5A1) - (#xfac1 #xE5A2) - (#xfac2 #xE5A3) - (#xfac3 #xE5A4) - (#xfac4 #xE5A5) - (#xfac5 #xE5A6) - (#xfac6 #xE5A7) - (#xfac7 #xE5A8) - (#xfac8 #xE5A9) - (#xfac9 #xE5AA) - (#xfaca #xE5AB) - (#xfacb #xE5AC) - (#xfacc #xE5AD) - (#xfacd #xE5AE) - (#xface #xE5AF) - (#xfacf #xE5B0) - (#xfad0 #xE5B1) - (#xfad1 #xE5B2) - (#xfad2 #xE5B3) - (#xfad3 #xE5B4) - (#xfad4 #xE5B5) - (#xfad5 #xE5B6) - (#xfad6 #xE5B7) - (#xfad7 #xE5B8) - (#xfad8 #xE5B9) - (#xfad9 #xE5BA) - (#xfada #xE5BB) - (#xfadb #xE5BC) - (#xfadc #xE5BD) - (#xfadd #xE5BE) - (#xfade #xE5BF) - (#xfadf #xE5C0) - (#xfae0 #xE5C1) - (#xfae1 #xE5C2) - (#xfae2 #xE5C3) - (#xfae3 #xE5C4) - (#xfae4 #xE5C5) - (#xfae5 #xE5C6) - (#xfae6 #xE5C7) - (#xfae7 #xE5C8) - (#xfae8 #xE5C9) - (#xfae9 #xE5CA) - (#xfaea #xE5CB) - (#xfaeb #xE5CC) - (#xfaec #xE5CD) - (#xfaed #xE5CE) - (#xfaee #xE5CF) - (#xfaef #xE5D0) - (#xfaf0 #xE5D1) - (#xfaf1 #xE5D2) - (#xfaf2 #xE5D3) - (#xfaf3 #xE5D4) - (#xfaf4 #xE5D5) - (#xfaf5 #xE5D6) - (#xfaf6 #xE5D7) - (#xfaf7 #xE5D8) - (#xfaf8 #xE5D9) - (#xfaf9 #xE5DA) - (#xfafa #xE5DB) - (#xfafb #xE5DC) - (#xfafc #xE5DD) - (#xfafd #xE5DE) - (#xfafe #xE5DF) - (#xfba1 #xE5E0) - (#xfba2 #xE5E1) - (#xfba3 #xE5E2) - (#xfba4 #xE5E3) - (#xfba5 #xE5E4) - (#xfba6 #xE5E5) - (#xfba7 #xE5E6) - (#xfba8 #xE5E7) - (#xfba9 #xE5E8) - (#xfbaa #xE5E9) - (#xfbab #xE5EA) - (#xfbac #xE5EB) - (#xfbad #xE5EC) - (#xfbae #xE5ED) - (#xfbaf #xE5EE) - (#xfbb0 #xE5EF) - (#xfbb1 #xE5F0) - (#xfbb2 #xE5F1) - (#xfbb3 #xE5F2) - (#xfbb4 #xE5F3) - (#xfbb5 #xE5F4) - (#xfbb6 #xE5F5) - (#xfbb7 #xE5F6) - (#xfbb8 #xE5F7) - (#xfbb9 #xE5F8) - (#xfbba #xE5F9) - (#xfbbb #xE5FA) - (#xfbbc #xE5FB) - (#xfbbd #xE5FC) - (#xfbbe #xE5FD) - (#xfbbf #xE5FE) - (#xfbc0 #xE5FF) - (#xfbc1 #xE600) - (#xfbc2 #xE601) - (#xfbc3 #xE602) - (#xfbc4 #xE603) - (#xfbc5 #xE604) - (#xfbc6 #xE605) - (#xfbc7 #xE606) - (#xfbc8 #xE607) - (#xfbc9 #xE608) - (#xfbca #xE609) - (#xfbcb #xE60A) - (#xfbcc #xE60B) - (#xfbcd #xE60C) - (#xfbce #xE60D) - (#xfbcf #xE60E) - (#xfbd0 #xE60F) - (#xfbd1 #xE610) - (#xfbd2 #xE611) - (#xfbd3 #xE612) - (#xfbd4 #xE613) - (#xfbd5 #xE614) - (#xfbd6 #xE615) - (#xfbd7 #xE616) - (#xfbd8 #xE617) - (#xfbd9 #xE618) - (#xfbda #xE619) - (#xfbdb #xE61A) - (#xfbdc #xE61B) - (#xfbdd #xE61C) - (#xfbde #xE61D) - (#xfbdf #xE61E) - (#xfbe0 #xE61F) - (#xfbe1 #xE620) - (#xfbe2 #xE621) - (#xfbe3 #xE622) - (#xfbe4 #xE623) - (#xfbe5 #xE624) - (#xfbe6 #xE625) - (#xfbe7 #xE626) - (#xfbe8 #xE627) - (#xfbe9 #xE628) - (#xfbea #xE629) - (#xfbeb #xE62A) - (#xfbec #xE62B) - (#xfbed #xE62C) - (#xfbee #xE62D) - (#xfbef #xE62E) - (#xfbf0 #xE62F) - (#xfbf1 #xE630) - (#xfbf2 #xE631) - (#xfbf3 #xE632) - (#xfbf4 #xE633) - (#xfbf5 #xE634) - (#xfbf6 #xE635) - (#xfbf7 #xE636) - (#xfbf8 #xE637) - (#xfbf9 #xE638) - (#xfbfa #xE639) - (#xfbfb #xE63A) - (#xfbfc #xE63B) - (#xfbfd #xE63C) - (#xfbfe #xE63D) - (#xfca1 #xE63E) - (#xfca2 #xE63F) - (#xfca3 #xE640) - (#xfca4 #xE641) - (#xfca5 #xE642) - (#xfca6 #xE643) - (#xfca7 #xE644) - (#xfca8 #xE645) - (#xfca9 #xE646) - (#xfcaa #xE647) - (#xfcab #xE648) - (#xfcac #xE649) - (#xfcad #xE64A) - (#xfcae #xE64B) - (#xfcaf #xE64C) - (#xfcb0 #xE64D) - (#xfcb1 #xE64E) - (#xfcb2 #xE64F) - (#xfcb3 #xE650) - (#xfcb4 #xE651) - (#xfcb5 #xE652) - (#xfcb6 #xE653) - (#xfcb7 #xE654) - (#xfcb8 #xE655) - (#xfcb9 #xE656) - (#xfcba #xE657) - (#xfcbb #xE658) - (#xfcbc #xE659) - (#xfcbd #xE65A) - (#xfcbe #xE65B) - (#xfcbf #xE65C) - (#xfcc0 #xE65D) - (#xfcc1 #xE65E) - (#xfcc2 #xE65F) - (#xfcc3 #xE660) - (#xfcc4 #xE661) - (#xfcc5 #xE662) - (#xfcc6 #xE663) - (#xfcc7 #xE664) - (#xfcc8 #xE665) - (#xfcc9 #xE666) - (#xfcca #xE667) - (#xfccb #xE668) - (#xfccc #xE669) - (#xfccd #xE66A) - (#xfcce #xE66B) - (#xfccf #xE66C) - (#xfcd0 #xE66D) - (#xfcd1 #xE66E) - (#xfcd2 #xE66F) - (#xfcd3 #xE670) - (#xfcd4 #xE671) - (#xfcd5 #xE672) - (#xfcd6 #xE673) - (#xfcd7 #xE674) - (#xfcd8 #xE675) - (#xfcd9 #xE676) - (#xfcda #xE677) - (#xfcdb #xE678) - (#xfcdc #xE679) - (#xfcdd #xE67A) - (#xfcde #xE67B) - (#xfcdf #xE67C) - (#xfce0 #xE67D) - (#xfce1 #xE67E) - (#xfce2 #xE67F) - (#xfce3 #xE680) - (#xfce4 #xE681) - (#xfce5 #xE682) - (#xfce6 #xE683) - (#xfce7 #xE684) - (#xfce8 #xE685) - (#xfce9 #xE686) - (#xfcea #xE687) - (#xfceb #xE688) - (#xfcec #xE689) - (#xfced #xE68A) - (#xfcee #xE68B) - (#xfcef #xE68C) - (#xfcf0 #xE68D) - (#xfcf1 #xE68E) - (#xfcf2 #xE68F) - (#xfcf3 #xE690) - (#xfcf4 #xE691) - (#xfcf5 #xE692) - (#xfcf6 #xE693) - (#xfcf7 #xE694) - (#xfcf8 #xE695) - (#xfcf9 #xE696) - (#xfcfa #xE697) - (#xfcfb #xE698) - (#xfcfc #xE699) - (#xfcfd #xE69A) - (#xfcfe #xE69B) - (#xfda1 #xE69C) - (#xfda2 #xE69D) - (#xfda3 #xE69E) - (#xfda4 #xE69F) - (#xfda5 #xE6A0) - (#xfda6 #xE6A1) - (#xfda7 #xE6A2) - (#xfda8 #xE6A3) - (#xfda9 #xE6A4) - (#xfdaa #xE6A5) - (#xfdab #xE6A6) - (#xfdac #xE6A7) - (#xfdad #xE6A8) - (#xfdae #xE6A9) - (#xfdaf #xE6AA) - (#xfdb0 #xE6AB) - (#xfdb1 #xE6AC) - (#xfdb2 #xE6AD) - (#xfdb3 #xE6AE) - (#xfdb4 #xE6AF) - (#xfdb5 #xE6B0) - (#xfdb6 #xE6B1) - (#xfdb7 #xE6B2) - (#xfdb8 #xE6B3) - (#xfdb9 #xE6B4) - (#xfdba #xE6B5) - (#xfdbb #xE6B6) - (#xfdbc #xE6B7) - (#xfdbd #xE6B8) - (#xfdbe #xE6B9) - (#xfdbf #xE6BA) - (#xfdc0 #xE6BB) - (#xfdc1 #xE6BC) - (#xfdc2 #xE6BD) - (#xfdc3 #xE6BE) - (#xfdc4 #xE6BF) - (#xfdc5 #xE6C0) - (#xfdc6 #xE6C1) - (#xfdc7 #xE6C2) - (#xfdc8 #xE6C3) - (#xfdc9 #xE6C4) - (#xfdca #xE6C5) - (#xfdcb #xE6C6) - (#xfdcc #xE6C7) - (#xfdcd #xE6C8) - (#xfdce #xE6C9) - (#xfdcf #xE6CA) - (#xfdd0 #xE6CB) - (#xfdd1 #xE6CC) - (#xfdd2 #xE6CD) - (#xfdd3 #xE6CE) - (#xfdd4 #xE6CF) - (#xfdd5 #xE6D0) - (#xfdd6 #xE6D1) - (#xfdd7 #xE6D2) - (#xfdd8 #xE6D3) - (#xfdd9 #xE6D4) - (#xfdda #xE6D5) - (#xfddb #xE6D6) - (#xfddc #xE6D7) - (#xfddd #xE6D8) - (#xfdde #xE6D9) - (#xfddf #xE6DA) - (#xfde0 #xE6DB) - (#xfde1 #xE6DC) - (#xfde2 #xE6DD) - (#xfde3 #xE6DE) - (#xfde4 #xE6DF) - (#xfde5 #xE6E0) - (#xfde6 #xE6E1) - (#xfde7 #xE6E2) - (#xfde8 #xE6E3) - (#xfde9 #xE6E4) - (#xfdea #xE6E5) - (#xfdeb #xE6E6) - (#xfdec #xE6E7) - (#xfded #xE6E8) - (#xfdee #xE6E9) - (#xfdef #xE6EA) - (#xfdf0 #xE6EB) - (#xfdf1 #xE6EC) - (#xfdf2 #xE6ED) - (#xfdf3 #xE6EE) - (#xfdf4 #xE6EF) - (#xfdf5 #xE6F0) - (#xfdf6 #xE6F1) - (#xfdf7 #xE6F2) - (#xfdf8 #xE6F3) - (#xfdf9 #xE6F4) - (#xfdfa #xE6F5) - (#xfdfb #xE6F6) - (#xfdfc #xE6F7) - (#xfdfd #xE6F8) - (#xfdfe #xE6F9) - (#xfea1 #xE6FA) - (#xfea2 #xE6FB) - (#xfea3 #xE6FC) - (#xfea4 #xE6FD) - (#xfea5 #xE6FE) - (#xfea6 #xE6FF) - (#xfea7 #xE700) - (#xfea8 #xE701) - (#xfea9 #xE702) - (#xfeaa #xE703) - (#xfeab #xE704) - (#xfeac #xE705) - (#xfead #xE706) - (#xfeae #xE707) - (#xfeaf #xE708) - (#xfeb0 #xE709) - (#xfeb1 #xE70A) - (#xfeb2 #xE70B) - (#xfeb3 #xE70C) - (#xfeb4 #xE70D) - (#xfeb5 #xE70E) - (#xfeb6 #xE70F) - (#xfeb7 #xE710) - (#xfeb8 #xE711) - (#xfeb9 #xE712) - (#xfeba #xE713) - (#xfebb #xE714) - (#xfebc #xE715) - (#xfebd #xE716) - (#xfebe #xE717) - (#xfebf #xE718) - (#xfec0 #xE719) - (#xfec1 #xE71A) - (#xfec2 #xE71B) - (#xfec3 #xE71C) - (#xfec4 #xE71D) - (#xfec5 #xE71E) - (#xfec6 #xE71F) - (#xfec7 #xE720) - (#xfec8 #xE721) - (#xfec9 #xE722) - (#xfeca #xE723) - (#xfecb #xE724) - (#xfecc #xE725) - (#xfecd #xE726) - (#xfece #xE727) - (#xfecf #xE728) - (#xfed0 #xE729) - (#xfed1 #xE72A) - (#xfed2 #xE72B) - (#xfed3 #xE72C) - (#xfed4 #xE72D) - (#xfed5 #xE72E) - (#xfed6 #xE72F) - (#xfed7 #xE730) - (#xfed8 #xE731) - (#xfed9 #xE732) - (#xfeda #xE733) - (#xfedb #xE734) - (#xfedc #xE735) - (#xfedd #xE736) - (#xfede #xE737) - (#xfedf #xE738) - (#xfee0 #xE739) - (#xfee1 #xE73A) - (#xfee2 #xE73B) - (#xfee3 #xE73C) - (#xfee4 #xE73D) - (#xfee5 #xE73E) - (#xfee6 #xE73F) - (#xfee7 #xE740) - (#xfee8 #xE741) - (#xfee9 #xE742) - (#xfeea #xE743) - (#xfeeb #xE744) - (#xfeec #xE745) - (#xfeed #xE746) - (#xfeee #xE747) - (#xfeef #xE748) - (#xfef0 #xE749) - (#xfef1 #xE74A) - (#xfef2 #xE74B) - (#xfef3 #xE74C) - (#xfef4 #xE74D) - (#xfef5 #xE74E) - (#xfef6 #xE74F) - (#xfef7 #xE750) - (#xfef8 #xE751) - (#xfef9 #xE752) - (#xfefa #xE753) - (#xfefb #xE754) - (#xfefc #xE755) - (#xfefd #xE756) - (#xfefe #xE757)))) - (mapc #'(lambda (x) - (let ((code (logand (car x) #x7F7F))) - (if (integerp (cdr x)) - (setcar x (decode-char 'japanese-jisx0208 code)) - (setcar x (decode-char 'japanese-jisx0212 code)) - (setcdr x (cadr x))))) - map) - (define-translation-table 'eucjp-ms-decode map) - (mapc #'(lambda (x) - (let ((tmp (car x))) - (setcar x (cdr x)) (setcdr x tmp))) - map) - (define-translation-table 'eucjp-ms-encode map)) diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el index 73bcae060b3..e9fb009a56e 100644 --- a/lisp/international/iso-transl.el +++ b/lisp/international/iso-transl.el @@ -1,4 +1,4 @@ -;;; iso-transl.el --- keyboard input definitions for ISO 8859-1 -*- coding: utf-8 -*- +;;; iso-transl.el --- keyboard input for ISO 10646 chars -*- coding: utf-8 -*- ;; Copyright (C) 1987, 1993-1999, 2001-2015 Free Software Foundation, ;; Inc. @@ -36,6 +36,10 @@ ;; to make all of the Alt keys autoload, and it is not clear ;; that the dead accent keys SHOULD autoload this package. +;; This package supports all characters defined by ISO 8859-1, along +;; with a few other ISO 10646 characters commonly used in English and +;; basic math. + ;;; Code: ;;; Provide some binding for startup: @@ -192,6 +196,31 @@ ("~o" . [?õ]) ("~t" . [?þ]) ("~~" . [?¬]) + ("_h" . [?‐]) + ("_H" . [?‑]) + ("_f" . [?‒]) + ("_n" . [?–]) + ("_m" . [?—]) + ("_q" . [?―]) + ("[" . [?‘]) + ("]" . [?’]) + ("{" . [?“]) + ("}" . [?”]) + ("1+" . [?†]) + ("2+" . [?‡]) + ("**" . [?•]) + ("*'" . [?′]) + ("*\"" . [?″]) + ("*E" . [?€]) + ("No" . [?№]) + ("a<" . [?←]) + ("a>" . [?→]) + ("a=" . [?↔]) + ("_-" . [?−]) + ("~=" . [?≈]) + ("/=" . [?≠]) + ("_<" . [?≤]) + ("_>" . [?≥]) ("' " . "'") ("` " . "`") ("\" " . "\"") diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index cca659f2cc1..474806d204e 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -177,7 +177,7 @@ "\\(charset\\)" "\\)\\s-+\\)?" ;; Note starting with word-syntax character: - "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'"))) + "[`‘]\\(\\sw\\(\\sw\\|\\s_\\)+\\)['’]"))) (defun coding-system-change-eol-conversion (coding-system eol-type) "Return a coding system which differs from CODING-SYSTEM in EOL conversion. @@ -1588,7 +1588,7 @@ which marks the variable `default-input-method' as set for Custom buffers." (with-output-to-temp-buffer (help-buffer) (let ((elt (assoc input-method input-method-alist))) (princ (format - "Input method: %s (`%s' in mode line) for %s\n %s\n" + "Input method: %s (‘%s’ in mode line) for %s\n %s\n" input-method (nth 3 elt) (nth 1 elt) (nth 4 elt)))))))))) (defun describe-current-input-method () @@ -1698,7 +1698,7 @@ Usually, the input method inserts the intermediate key sequence, or candidate translations corresponding to the sequence, at point in the current buffer. But, if this flag is non-nil, it displays them in echo area instead." - :type 'hook + :type 'boolean :group 'mule) (defvar input-method-exit-on-invalid-key nil @@ -2173,10 +2173,11 @@ See `set-language-info-alist' for use in programs." (search-backward (symbol-name (car l))) (help-xref-button 0 'help-coding-system (car l)) (goto-char (point-max)) - (insert " (`" + (insert " (‘" (coding-system-mnemonic (car l)) - "' in mode line):\n\t" - (coding-system-doc-string (car l)) + "’ in mode line):\n\t" + (substitute-command-keys + (coding-system-doc-string (car l))) "\n") (let ((aliases (coding-system-aliases (car l)))) (when aliases @@ -2687,14 +2688,22 @@ See also `locale-charset-language-names', `locale-language-names', ;; On Windows, override locale-coding-system, ;; default-file-name-coding-system, keyboard-coding-system, - ;; terminal-coding-system with system codepage. + ;; terminal-coding-system with the ANSI or console codepage. (when (and (eq system-type 'windows-nt) (boundp 'w32-ansi-code-page)) - (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page)))) + (let* ((code-page-coding + (intern (format "cp%d" (if noninteractive + (w32-get-console-codepage) + w32-ansi-code-page)))) + (output-coding + (if noninteractive + (intern (format "cp%d" (w32-get-console-output-codepage))) + code-page-coding))) (when (coding-system-p code-page-coding) + (or output-coding (setq output-coding code-page-coding)) (unless frame (setq locale-coding-system code-page-coding)) (set-keyboard-coding-system code-page-coding frame) - (set-terminal-coding-system code-page-coding frame) + (set-terminal-coding-system output-coding frame) (setq default-file-name-coding-system code-page-coding)))) (when (eq system-type 'darwin) @@ -2708,6 +2717,14 @@ See also `locale-charset-language-names', `locale-language-names', (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8))) + ;; If curved quotes don't work, display straight ASCII approximations. + (unless frame + (dolist (char-repl '((?‘ . [?\']) (?’ . [?\']) (?“ . [?\"]) (?” . [?\"]))) + (when (not (char-displayable-p (car char-repl))) + (or standard-display-table + (setq standard-display-table (make-display-table))) + (aset standard-display-table (car char-repl) (cdr char-repl))))) + ;; Default to A4 paper if we're not in a C, POSIX or US locale. ;; (See comments in Flocale_info.) (unless frame diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el index 42e78f9c904..7ef758b58de 100644 --- a/lisp/international/mule-diag.el +++ b/lisp/international/mule-diag.el @@ -332,7 +332,7 @@ meanings of these arguments." (let ((char (charset-iso-final-char charset))) (when (> char 0) (insert "Final char of ISO2022 designation sequence: ") - (insert (format "`%c'\n" char)))) + (insert (format "‘%c’\n" char)))) (let (aliases) (dolist (c charset-list) (if (and (not (eq c charset)) @@ -581,7 +581,7 @@ docstring, and print only the first line of the docstring." (if (string-match "\n" doc) (setq doc (substring doc 0 (match-beginning 0)))) (setq doc (concat " " doc))) - (princ (format "%s\n" doc)))))) + (princ (format "%s\n" (substitute-command-keys doc))))))) ;;;###autoload (defun describe-current-coding-system () @@ -1038,7 +1038,7 @@ see the function `describe-fontset' for the format of the list." (save-excursion (goto-char (point-min)) (while (re-search-forward - "^ \\([^ ]+\\) (`.*' in mode line)$" nil t) + "^ \\([^ ]+\\) (‘.*’ in mode line)$" nil t) (help-xref-button 1 'help-input-method (match-string 1))))))) (defun list-input-methods-1 () @@ -1046,7 +1046,7 @@ see the function `describe-fontset' for the format of the list." (princ " No input method is available, perhaps because you have not installed LEIM (Libraries of Emacs Input Methods).") - (princ "LANGUAGE\n NAME (`TITLE' in mode line)\n") + (princ "LANGUAGE\n NAME (‘TITLE’ in mode line)\n") (princ " SHORT-DESCRIPTION\n------------------------------\n") (setq input-method-alist (sort input-method-alist @@ -1058,7 +1058,7 @@ installed LEIM (Libraries of Emacs Input Methods).") (setq language (nth 1 elt)) (princ language) (terpri)) - (princ (format " %s (`%s' in mode line)\n %s\n" + (princ (format " %s (‘%s’ in mode line)\n %s\n" (car elt) (let ((title (nth 3 elt))) (if (and (consp title) (stringp (car title))) @@ -1066,8 +1066,9 @@ installed LEIM (Libraries of Emacs Input Methods).") title)) ;; If the doc is multi-line, indent all ;; non-blank lines. (Bug#8066) - (replace-regexp-in-string "\n\\(.\\)" "\n \\1" - (or (nth 4 elt) "")))))))) + (replace-regexp-in-string + "\n\\(.\\)" "\n \\1" + (substitute-command-keys (or (nth 4 elt) ""))))))))) ;;; DIAGNOSIS diff --git a/lisp/international/quail.el b/lisp/international/quail.el index 5e422bf5fdb..90a540aae30 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el @@ -793,9 +793,10 @@ you type is correctly handled." keyseq))) (defun quail-insert-kbd-layout (kbd-layout) -"Insert the visual keyboard layout table according to KBD-LAYOUT. + "Insert the visual keyboard layout table according to KBD-LAYOUT. The format of KBD-LAYOUT is the same as `quail-keyboard-layout'." (let (done-list layout i ch) + (setq bidi-paragraph-direction 'left-to-right) ;; At first, convert KBD-LAYOUT to the same size vector that ;; contains translated character or string. (setq layout (string-to-vector kbd-layout) diff --git a/lisp/international/robin.el b/lisp/international/robin.el index 897075f0faf..8254180fcc1 100644 --- a/lisp/international/robin.el +++ b/lisp/international/robin.el @@ -576,7 +576,7 @@ used." (provide 'robin) ;; Local Variables: -;; coding: utf-8-emacs +;; coding: utf-8 ;; End: ;;; robin.el ends here diff --git a/lisp/isearch.el b/lisp/isearch.el index 35fb0608dd0..d1b92bd6a9d 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -452,7 +452,7 @@ This is like `describe-bindings', but displays only Isearch keys." (define-key map "\M-\C-s" 'isearch-repeat-forward) (define-key map "\M-\C-r" 'isearch-repeat-backward) (define-key map "\177" 'isearch-delete-char) - (define-key map [backspace] 'isearch-delete-char) + (define-key map [backspace] 'undefined) ;bug#20466. (define-key map "\C-g" 'isearch-abort) ;; This assumes \e is the meta-prefix-char. @@ -932,12 +932,6 @@ convert the search string to a regexp used by regexp search functions." (add-hook 'post-command-hook 'isearch-post-command-hook) (add-hook 'mouse-leave-buffer-hook 'isearch-done) (add-hook 'kbd-macro-termination-hook 'isearch-done) - (make-local-variable 'cursor-sensor-inhibit) - (unless (boundp 'cursor-sensor-inhibit) - (setq cursor-sensor-inhibit nil)) - ;; Suspend things like cursor-intangible during Isearch so we can search even - ;; within intangible text. - (push 'isearch cursor-sensor-inhibit) ;; isearch-mode can be made modal (in the sense of not returning to ;; the calling function until searching is completed) by entering @@ -949,10 +943,23 @@ convert the search string to a regexp used by regexp search functions." ;; Some high level utilities. Others below. +(defvar isearch--current-buffer nil) (defun isearch-update () "This is called after every isearch command to update the display. The last thing it does is to run `isearch-update-post-hook'." + (unless (eq (current-buffer) isearch--current-buffer) + (when isearch--current-buffer + (with-current-buffer isearch--current-buffer + (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)))) + (setq isearch--current-buffer (current-buffer)) + (make-local-variable 'cursor-sensor-inhibit) + (unless (boundp 'cursor-sensor-inhibit) + (setq cursor-sensor-inhibit nil)) + ;; Suspend things like cursor-intangible during Isearch so we can search + ;; even within intangible text. + (push 'isearch cursor-sensor-inhibit)) + (if (and (null unread-command-events) (null executing-kbd-macro)) (progn @@ -1026,7 +1033,9 @@ NOPUSH is t and EDIT is t." (remove-hook 'mouse-leave-buffer-hook 'isearch-done) (remove-hook 'kbd-macro-termination-hook 'isearch-done) (setq isearch-lazy-highlight-start nil) - (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit)) + (with-current-buffer isearch--current-buffer + (setq isearch--current-buffer nil) + (setq cursor-sensor-inhibit (delq 'isearch cursor-sensor-inhibit))) ;; Called by all commands that terminate isearch-mode. ;; If NOPUSH is non-nil, we don't push the string on the search ring. @@ -1924,8 +1933,8 @@ If search string is empty, just beep." (defun isearch-yank-x-selection () "Pull current X selection into search string." (interactive) - (isearch-yank-string (x-get-selection)) - ;; If `x-get-selection' returned the text from the active region, + (isearch-yank-string (gui-get-selection)) + ;; If `gui-get-selection' returned the text from the active region, ;; then it "used" the mark which we should hence deactivate. (when select-active-regions (deactivate-mark))) diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el index 8575e7b6a93..127865760d0 100644 --- a/lisp/language/ethio-util.el +++ b/lisp/language/ethio-util.el @@ -129,9 +129,9 @@ isolated vowel.") "Degree of reduction in converting Ethiopic digits into Arabic digits. Should be 0, 1 or 2. For example, ({10}{9}{100}{80}{7}) is converted into: - `10`9`100`80`7 if `ethio-numeric-reduction' is 0, - `109100807 if `ethio-numeric-reduction' is 1, - `10900807 if `ethio-numeric-reduction' is 2.") + \\=`10\\=`9\\=`100\\=`80\\=`7 if `ethio-numeric-reduction' is 0, + \\=`109100807 if `ethio-numeric-reduction' is 1, + \\=`10900807 if `ethio-numeric-reduction' is 2.") (defvar ethio-java-save-lowercase nil "Non-nil means save Ethiopic characters in lowercase hex numbers to Java files. @@ -2071,5 +2071,3 @@ mark." (provide 'ethio-util) ;;; ethio-util.el ends here - -;;; ethio-util.el ends here diff --git a/lisp/language/japanese.el b/lisp/language/japanese.el index ce480252e7c..38159d7b458 100644 --- a/lisp/language/japanese.el +++ b/lisp/language/japanese.el @@ -34,8 +34,8 @@ ;;; Code: ;;; Load translation tables for CP932. -(load "international/cp51932") -(load "international/eucjp-ms") +(require 'cp51932) +(require 'eucjp-ms) (define-coding-system 'iso-2022-jp "ISO 2022 based 7bit encoding for Japanese (MIME:ISO-2022-JP)." diff --git a/lisp/language/tv-util.el b/lisp/language/tv-util.el index 400856d1aa3..ba1ee668825 100644 --- a/lisp/language/tv-util.el +++ b/lisp/language/tv-util.el @@ -34,7 +34,7 @@ (combining-vowel . "ꪴꪰꪲꪳꪷꪸꪾ") (combining-tone . "꪿꫁") (misc . "-")))) - ;; Set all TaiViet characters to `t'. + ;; Set all TaiViet characters to t. (set-char-table-range table (cons #xaa80 #xaac2) t) (set-char-table-range table (cons #xaadb #xaadf) t) ;; Overwrite it for special characters. diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index ff09bf79c25..0559f4c0809 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -3,7 +3,7 @@ ;;; Code: -;;;### (autoloads nil "5x5" "play/5x5.el" (21799 24401 566172 757000)) +;;;### (autoloads nil "5x5" "play/5x5.el" (21799 41767 31221 635000)) ;;; Generated autoloads from play/5x5.el (autoload '5x5 "5x5" "\ @@ -65,8 +65,8 @@ should return a grid vector array that is the new solution. ;;;*** -;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21678 60840 -;;;;;; 221777 189000)) +;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21814 9129 +;;;;;; 380496 997000)) ;;; Generated autoloads from progmodes/ada-mode.el (autoload 'ada-add-extensions "ada-mode" "\ @@ -85,8 +85,8 @@ Ada mode is the major mode for editing Ada code. ;;;*** -;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21678 60840 -;;;;;; 221777 189000)) +;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/ada-stmt.el (autoload 'ada-header "ada-stmt" "\ @@ -96,8 +96,8 @@ Insert a descriptive header at the top of the file. ;;;*** -;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21678 60840 -;;;;;; 225777 350000)) +;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21855 577 +;;;;;; 357945 168000)) ;;; Generated autoloads from progmodes/ada-xref.el (autoload 'ada-find-file "ada-xref" "\ @@ -108,8 +108,8 @@ Completion is available. ;;;*** -;;;### (autoloads nil "add-log" "vc/add-log.el" (21678 60840 513788 -;;;;;; 871000)) +;;;### (autoloads nil "add-log" "vc/add-log.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from vc/add-log.el (put 'change-log-default-name 'safe-local-variable 'string-or-null-p) @@ -238,8 +238,8 @@ old-style time formats for entries are supported. ;;;*** -;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21678 60839 -;;;;;; 441745 885000)) +;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21853 45243 +;;;;;; 381515 341000)) ;;; Generated autoloads from emacs-lisp/advice.el (defvar ad-redefinition-action 'warn "\ @@ -374,7 +374,7 @@ usage: (defadvice FUNCTION (CLASS NAME [POSITION] [ARGLIST] FLAG...) ;;;*** -;;;### (autoloads nil "align" "align.el" (21678 60839 237737 687000)) +;;;### (autoloads nil "align" "align.el" (21670 32330 885624 725000)) ;;; Generated autoloads from align.el (autoload 'align "align" "\ @@ -477,7 +477,7 @@ A replacement function for `newline-and-indent', aligning as it goes. ;;;*** -;;;### (autoloads nil "allout" "allout.el" (21678 60839 245738 8000)) +;;;### (autoloads nil "allout" "allout.el" (21855 576 477946 398000)) ;;; Generated autoloads from allout.el (push (purecopy '(allout 2 3)) package--builtin-versions) @@ -837,8 +837,8 @@ for details on preparing Emacs for automatic allout activation. ;;;*** -;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21678 -;;;;;; 60839 241737 848000)) +;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21855 +;;;;;; 576 417950 874000)) ;;; Generated autoloads from allout-widgets.el (push (purecopy '(allout-widgets 1 0)) package--builtin-versions) @@ -896,8 +896,8 @@ outline hot-spot navigation (see `allout-mode'). ;;;*** -;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21697 290 536850 -;;;;;; 376000)) +;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21855 577 137948 +;;;;;; 458000)) ;;; Generated autoloads from net/ange-ftp.el (defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir) @@ -918,8 +918,8 @@ directory, so that Emacs will know its current contents. ;;;*** -;;;### (autoloads nil "animate" "play/animate.el" (21678 60840 197776 -;;;;;; 230000)) +;;;### (autoloads nil "animate" "play/animate.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/animate.el (autoload 'animate-string "animate" "\ @@ -951,8 +951,8 @@ the buffer *Birthday-Present-for-Name*. ;;;*** -;;;### (autoloads nil "ansi-color" "ansi-color.el" (21678 60839 249738 -;;;;;; 169000)) +;;;### (autoloads nil "ansi-color" "ansi-color.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from ansi-color.el (push (purecopy '(ansi-color 3 4 2)) package--builtin-versions) @@ -978,8 +978,8 @@ This is a good function to put in `comint-output-filter-functions'. ;;;*** -;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21678 -;;;;;; 60840 229777 510000)) +;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/antlr-mode.el (push (purecopy '(antlr-mode 2 2 3)) package--builtin-versions) @@ -1015,8 +1015,8 @@ Used in `antlr-mode'. Also a useful function in `java-mode-hook'. ;;;*** -;;;### (autoloads nil "appt" "calendar/appt.el" (21678 60839 305740 -;;;;;; 419000)) +;;;### (autoloads nil "appt" "calendar/appt.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from calendar/appt.el (autoload 'appt-add "appt" "\ @@ -1037,8 +1037,8 @@ ARG is positive, otherwise off. ;;;*** -;;;### (autoloads nil "apropos" "apropos.el" (21678 60839 249738 -;;;;;; 169000)) +;;;### (autoloads nil "apropos" "apropos.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from apropos.el (autoload 'apropos-read-pattern "apropos" "\ @@ -1153,8 +1153,8 @@ Returns list of symbols and documentation found. ;;;*** -;;;### (autoloads nil "arc-mode" "arc-mode.el" (21678 60839 249738 -;;;;;; 169000)) +;;;### (autoloads nil "arc-mode" "arc-mode.el" (21862 60209 608658 +;;;;;; 477000)) ;;; Generated autoloads from arc-mode.el (autoload 'archive-mode "arc-mode" "\ @@ -1174,7 +1174,7 @@ archive. ;;;*** -;;;### (autoloads nil "array" "array.el" (21678 60839 253738 330000)) +;;;### (autoloads nil "array" "array.el" (21670 32330 885624 725000)) ;;; Generated autoloads from array.el (autoload 'array-mode "array" "\ @@ -1245,8 +1245,8 @@ Entering array mode calls the function `array-mode-hook'. ;;;*** -;;;### (autoloads nil "artist" "textmodes/artist.el" (21756 63738 -;;;;;; 14470 148000)) +;;;### (autoloads nil "artist" "textmodes/artist.el" (21852 24382 +;;;;;; 57264 475000)) ;;; Generated autoloads from textmodes/artist.el (push (purecopy '(artist 1 2 6)) package--builtin-versions) @@ -1328,7 +1328,7 @@ Drawing with the mouse: * Cut copies, then clears the rectangle/square. * When drawing lines or poly-lines, you can set arrows. - See below under ``Arrows'' for more info. + See below under \"Arrows\" for more info. * The mode line shows the currently selected drawing operation. In addition, if it has an asterisk (*) at the end, you @@ -1436,8 +1436,8 @@ Variables artist-vaporize-fuzziness Tolerance when recognizing lines artist-spray-interval Seconds between repeated sprayings artist-spray-radius Size of the spray-area - artist-spray-chars The spray-``color'' - artist-spray-new-chars Initial spray-``color'' + artist-spray-chars The spray-\"color\" + artist-spray-new-chars Initial spray-\"color\" Hooks @@ -1452,8 +1452,8 @@ Keymap summary ;;;*** -;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21678 60840 -;;;;;; 229777 510000)) +;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/asm-mode.el (autoload 'asm-mode "asm-mode" "\ @@ -1480,8 +1480,8 @@ Special commands: ;;;*** -;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21678 -;;;;;; 60839 625753 279000)) +;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from gnus/auth-source.el (defvar auth-source-cache-expiry 7200 "\ @@ -1493,8 +1493,8 @@ let-binding.") ;;;*** -;;;### (autoloads nil "autoarg" "autoarg.el" (21678 60839 253738 -;;;;;; 330000)) +;;;### (autoloads nil "autoarg" "autoarg.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from autoarg.el (defvar autoarg-mode nil "\ @@ -1554,8 +1554,8 @@ This is similar to `autoarg-mode' but rebinds the keypad keys ;;;*** -;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21678 60840 -;;;;;; 229777 510000)) +;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/autoconf.el (autoload 'autoconf-mode "autoconf" "\ @@ -1565,8 +1565,8 @@ Major mode for editing Autoconf configure.ac files. ;;;*** -;;;### (autoloads nil "autoinsert" "autoinsert.el" (21678 60839 253738 -;;;;;; 330000)) +;;;### (autoloads nil "autoinsert" "autoinsert.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from autoinsert.el (autoload 'auto-insert "autoinsert" "\ @@ -1604,8 +1604,8 @@ insert a template for the file depending on the mode of the buffer. ;;;*** -;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21803 -;;;;;; 61751 253342 299000)) +;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21853 +;;;;;; 45243 381515 341000)) ;;; Generated autoloads from emacs-lisp/autoload.el (put 'generated-autoload-file 'safe-local-variable 'stringp) @@ -1656,8 +1656,8 @@ should be non-nil). ;;;*** -;;;### (autoloads nil "autorevert" "autorevert.el" (21756 63737 806475 -;;;;;; 370000)) +;;;### (autoloads nil "autorevert" "autorevert.el" (21855 576 477946 +;;;;;; 398000)) ;;; Generated autoloads from autorevert.el (autoload 'auto-revert-mode "autorevert" "\ @@ -1680,7 +1680,7 @@ without being changed in the part that is already in the buffer. Turn on Auto-Revert Mode. This function is designed to be added to hooks, for example: - (add-hook 'c-mode-hook 'turn-on-auto-revert-mode) + (add-hook 'c-mode-hook #'turn-on-auto-revert-mode) \(fn)" nil nil) @@ -1708,7 +1708,7 @@ Use `auto-revert-mode' for changes other than appends! Turn on Auto-Revert Tail mode. This function is designed to be added to hooks, for example: - (add-hook 'my-logfile-mode-hook 'turn-on-auto-revert-tail-mode) + (add-hook 'my-logfile-mode-hook #'turn-on-auto-revert-tail-mode) \(fn)" nil nil) @@ -1745,7 +1745,7 @@ specifies in the mode line. ;;;*** -;;;### (autoloads nil "avoid" "avoid.el" (21678 60839 253738 330000)) +;;;### (autoloads nil "avoid" "avoid.el" (21670 32330 885624 725000)) ;;; Generated autoloads from avoid.el (defvar mouse-avoidance-mode nil "\ @@ -1783,8 +1783,8 @@ definition of \"random distance\".) ;;;*** -;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21678 60840 -;;;;;; 229777 510000)) +;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/bat-mode.el (add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode)) @@ -1802,8 +1802,8 @@ Run script using `bat-run' and `bat-run-args'. ;;;*** -;;;### (autoloads nil "battery" "battery.el" (21756 63737 810475 -;;;;;; 270000)) +;;;### (autoloads nil "battery" "battery.el" (21754 56896 744606 +;;;;;; 568000)) ;;; Generated autoloads from battery.el (put 'battery-mode-line-string 'risky-local-variable t) @@ -1838,8 +1838,8 @@ seconds. ;;;*** -;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21678 -;;;;;; 60839 441745 885000)) +;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/benchmark.el (autoload 'benchmark-run "benchmark" "\ @@ -1875,8 +1875,8 @@ For non-interactive use see also `benchmark-run' and ;;;*** -;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21678 60840 -;;;;;; 445786 150000)) +;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21855 577 517944 +;;;;;; 90000)) ;;; Generated autoloads from textmodes/bibtex.el (autoload 'bibtex-initialize "bibtex" "\ @@ -1968,7 +1968,7 @@ A prefix arg negates the value of `bibtex-search-entry-globally'. ;;;*** ;;;### (autoloads nil "bibtex-style" "textmodes/bibtex-style.el" -;;;;;; (21678 60840 441785 990000)) +;;;;;; (21670 32331 885635 586000)) ;;; Generated autoloads from textmodes/bibtex-style.el (autoload 'bibtex-style-mode "bibtex-style" "\ @@ -1978,8 +1978,8 @@ Major mode for editing BibTeX style files. ;;;*** -;;;### (autoloads nil "binhex" "mail/binhex.el" (21678 60839 869763 -;;;;;; 84000)) +;;;### (autoloads nil "binhex" "mail/binhex.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from mail/binhex.el (defconst binhex-begin-line "^:...............................................................$" "\ @@ -2003,8 +2003,8 @@ Binhex decode region between START and END. ;;;*** -;;;### (autoloads nil "blackbox" "play/blackbox.el" (21678 60840 -;;;;;; 197776 230000)) +;;;### (autoloads nil "blackbox" "play/blackbox.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from play/blackbox.el (autoload 'blackbox "blackbox" "\ @@ -2123,8 +2123,8 @@ a reflection. ;;;*** -;;;### (autoloads nil "bookmark" "bookmark.el" (21798 38124 240660 -;;;;;; 218000)) +;;;### (autoloads nil "bookmark" "bookmark.el" (21798 49947 232670 +;;;;;; 676000)) ;;; Generated autoloads from bookmark.el (define-key ctl-x-r-map "b" 'bookmark-jump) (define-key ctl-x-r-map "m" 'bookmark-set) @@ -2317,8 +2317,8 @@ Incremental search of bookmarks, hiding the non-matches as we go. ;;;*** -;;;### (autoloads nil "browse-url" "net/browse-url.el" (21797 54705 -;;;;;; 60905 16000)) +;;;### (autoloads nil "browse-url" "net/browse-url.el" (21811 32939 +;;;;;; 190503 320000)) ;;; Generated autoloads from net/browse-url.el (defvar browse-url-browser-function 'browse-url-default-browser "\ @@ -2363,16 +2363,21 @@ Ask a WWW browser to display the current region. (autoload 'browse-url "browse-url" "\ Ask a WWW browser to load URL. -Prompt for a URL, defaulting to the URL at or before point. Variable -`browse-url-browser-function' says which browser to use. +Prompt for a URL, defaulting to the URL at or before point. +The variable `browse-url-browser-function' says which browser to use. If the URL is a mailto: URL, consult `browse-url-mailto-function' first, if that exists. +Passes any ARGS to the browser function. +The default is to pass `browse-url-new-window-flag'. + \(fn URL &rest ARGS)" t nil) (autoload 'browse-url-at-point "browse-url" "\ Ask a WWW browser to load the URL at or before point. Variable `browse-url-browser-function' says which browser to use. +Optional prefix argument ARG non-nil inverts the value of the option +`browse-url-new-window-flag'. \(fn &optional ARG)" t nil) @@ -2653,7 +2658,7 @@ from `browse-url-elinks-wrapper'. ;;;*** -;;;### (autoloads nil "bs" "bs.el" (21678 60839 257738 491000)) +;;;### (autoloads nil "bs" "bs.el" (21670 32330 885624 725000)) ;;; Generated autoloads from bs.el (push (purecopy '(bs 1 17)) package--builtin-versions) @@ -2694,8 +2699,8 @@ name of buffer configuration. ;;;*** -;;;### (autoloads nil "bubbles" "play/bubbles.el" (21678 60840 197776 -;;;;;; 230000)) +;;;### (autoloads nil "bubbles" "play/bubbles.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/bubbles.el (autoload 'bubbles "bubbles" "\ @@ -2717,7 +2722,7 @@ columns on its right towards the left. ;;;*** ;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el" -;;;;;; (21678 60840 229777 510000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from progmodes/bug-reference.el (put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format))))) @@ -2737,8 +2742,8 @@ Like `bug-reference-mode', but only buttonize in comments and strings. ;;;*** -;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21804 -;;;;;; 3763 202437 529000)) +;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21855 +;;;;;; 576 747949 136000)) ;;; Generated autoloads from emacs-lisp/bytecomp.el (put 'byte-compile-dynamic 'safe-local-variable 'booleanp) (put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp) @@ -2757,7 +2762,7 @@ else the global value will be modified. (autoload 'byte-compile-enable-warning "bytecomp" "\ Change `byte-compile-warnings' to enable WARNING. -If `byte-compile-warnings' is `t', do nothing. Otherwise, if the +If `byte-compile-warnings' is t, do nothing. Otherwise, if the first element is `not', remove WARNING, else add it. Normally you should let-bind `byte-compile-warnings' before calling this, else the global value will be modified. @@ -2858,8 +2863,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21678 -;;;;;; 60839 305740 419000)) +;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from calendar/cal-china.el (put 'calendar-chinese-time-zone 'risky-local-variable t) @@ -2868,8 +2873,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21678 60839 -;;;;;; 305740 419000)) +;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from calendar/cal-dst.el (put 'calendar-daylight-savings-starts 'risky-local-variable t) @@ -2880,8 +2885,8 @@ and corresponding effects. ;;;*** -;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21678 -;;;;;; 60839 305740 419000)) +;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from calendar/cal-hebrew.el (autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\ @@ -2893,7 +2898,7 @@ from the cursor position. ;;;*** -;;;### (autoloads nil "calc" "calc/calc.el" (21678 60839 297740 98000)) +;;;### (autoloads nil "calc" "calc/calc.el" (21855 576 517945 858000)) ;;; Generated autoloads from calc/calc.el (define-key ctl-x-map "*" 'calc-dispatch) @@ -2979,8 +2984,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21678 60839 -;;;;;; 289739 776000)) +;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from calc/calc-undo.el (autoload 'calc-undo "calc-undo" "\ @@ -2990,8 +2995,8 @@ See Info node `(calc)Defining Functions'. ;;;*** -;;;### (autoloads nil "calculator" "calculator.el" (21702 18751 28687 -;;;;;; 539000)) +;;;### (autoloads nil "calculator" "calculator.el" (21850 35126 597287 +;;;;;; 693000)) ;;; Generated autoloads from calculator.el (autoload 'calculator "calculator" "\ @@ -3002,8 +3007,8 @@ See the documentation for `calculator-mode' for more information. ;;;*** -;;;### (autoloads nil "calendar" "calendar/calendar.el" (21678 60839 -;;;;;; 313740 741000)) +;;;### (autoloads nil "calendar" "calendar/calendar.el" (21852 24381 +;;;;;; 457257 198000)) ;;; Generated autoloads from calendar/calendar.el (autoload 'calendar "calendar" "\ @@ -3046,8 +3051,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads nil "canlock" "gnus/canlock.el" (21678 60839 625753 -;;;;;; 279000)) +;;;### (autoloads nil "canlock" "gnus/canlock.el" (21852 24381 567240 +;;;;;; 49000)) ;;; Generated autoloads from gnus/canlock.el (autoload 'canlock-insert-header "canlock" "\ @@ -3064,8 +3069,8 @@ it fails. ;;;*** -;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21743 -;;;;;; 12185 601417 366000)) +;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21855 +;;;;;; 577 387944 393000)) ;;; Generated autoloads from progmodes/cc-engine.el (autoload 'c-guess-basic-syntax "cc-engine" "\ @@ -3075,8 +3080,8 @@ Return the syntactic context of the current line. ;;;*** -;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21678 60840 -;;;;;; 249778 310000)) +;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21855 577 +;;;;;; 397944 786000)) ;;; Generated autoloads from progmodes/cc-guess.el (defvar c-guess-guessed-offsets-alist nil "\ @@ -3174,8 +3179,8 @@ the absolute file name of the file if STYLE-NAME is nil. ;;;*** -;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21797 54705 -;;;;;; 112903 894000)) +;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21861 39358 +;;;;;; 537945 535000)) ;;; Generated autoloads from progmodes/cc-mode.el (autoload 'c-initialize-cc-mode "cc-mode" "\ @@ -3332,8 +3337,8 @@ Key bindings: ;;;*** -;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21678 -;;;;;; 60840 253778 470000)) +;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/cc-styles.el (autoload 'c-set-style "cc-styles" "\ @@ -3384,8 +3389,8 @@ and exists only for compatibility reasons. ;;;*** -;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21678 60840 -;;;;;; 257778 629000)) +;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/cc-vars.el (put 'c-basic-offset 'safe-local-variable 'integerp) (put 'c-backslash-column 'safe-local-variable 'integerp) @@ -3393,8 +3398,8 @@ and exists only for compatibility reasons. ;;;*** -;;;### (autoloads nil "ccl" "international/ccl.el" (21684 3021 710224 -;;;;;; 877000)) +;;;### (autoloads nil "ccl" "international/ccl.el" (21682 23484 726747 +;;;;;; 991000)) ;;; Generated autoloads from international/ccl.el (autoload 'ccl-compile "ccl" "\ @@ -3687,8 +3692,8 @@ See the documentation of `define-ccl-program' for the detail of CCL program. ;;;*** -;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21715 51226 -;;;;;; 268496 513000)) +;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21716 41663 +;;;;;; 456033 27000)) ;;; Generated autoloads from emacs-lisp/cconv.el (autoload 'cconv-closure-convert "cconv" "\ @@ -3707,15 +3712,15 @@ Add the warnings that closure conversion would encounter. ;;;*** -;;;### (autoloads nil "cedet" "cedet/cedet.el" (21678 60839 333741 -;;;;;; 545000)) +;;;### (autoloads nil "cedet" "cedet/cedet.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from cedet/cedet.el (push (purecopy '(cedet 2 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21694 48017 -;;;;;; 606102 36000)) +;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21695 35516 +;;;;;; 595262 313000)) ;;; Generated autoloads from progmodes/cfengine.el (push (purecopy '(cfengine 1 3)) package--builtin-versions) @@ -3744,15 +3749,15 @@ Choose `cfengine2-mode' or `cfengine3-mode' by buffer contents. ;;;*** -;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21678 60854 -;;;;;; 898345 827000)) +;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21841 54062 +;;;;;; 162628 940000)) ;;; Generated autoloads from emacs-lisp/chart.el (push (purecopy '(chart 0 2)) package--builtin-versions) ;;;*** ;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el" -;;;;;; (21756 63737 822474 968000)) +;;;;;; (21855 576 747949 136000)) ;;; Generated autoloads from emacs-lisp/check-declare.el (autoload 'check-declare-file "check-declare" "\ @@ -3769,8 +3774,8 @@ Returns non-nil if any false statements are found. ;;;*** -;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21778 -;;;;;; 65092 741003 198000)) +;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21862 +;;;;;; 60209 647465 565000)) ;;; Generated autoloads from emacs-lisp/checkdoc.el (push (purecopy '(checkdoc 0 6 2)) package--builtin-versions) (put 'checkdoc-force-docstrings-flag 'safe-local-variable #'booleanp) @@ -3970,8 +3975,8 @@ checking of documentation strings. ;;;*** -;;;### (autoloads nil "china-util" "language/china-util.el" (21678 -;;;;;; 60839 797760 191000)) +;;;### (autoloads nil "china-util" "language/china-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/china-util.el (autoload 'decode-hz-region "china-util" "\ @@ -4008,8 +4013,8 @@ Encode the text in the current buffer to HZ. ;;;*** -;;;### (autoloads nil "chistory" "chistory.el" (21678 60839 401744 -;;;;;; 277000)) +;;;### (autoloads nil "chistory" "chistory.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from chistory.el (autoload 'repeat-matching-complex-command "chistory" "\ @@ -4048,8 +4053,8 @@ and runs the normal hook `command-history-hook'. ;;;*** -;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21765 -;;;;;; 52461 376136 680000)) +;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21855 +;;;;;; 576 767950 442000)) ;;; Generated autoloads from emacs-lisp/cl-indent.el (autoload 'common-lisp-indent-function "cl-indent" "\ @@ -4132,8 +4137,8 @@ instead. ;;;*** -;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21799 24999 -;;;;;; 410026 774000)) +;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21843 55159 +;;;;;; 639401 629000)) ;;; Generated autoloads from emacs-lisp/cl-lib.el (push (purecopy '(cl-lib 1 0)) package--builtin-versions) @@ -4151,8 +4156,8 @@ a future Emacs interpreter will be able to use it.") ;;;*** -;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21678 60840 -;;;;;; 257778 629000)) +;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21828 42028 +;;;;;; 650494 471000)) ;;; Generated autoloads from progmodes/cmacexp.el (autoload 'c-macro-expand "cmacexp" "\ @@ -4172,8 +4177,8 @@ For use inside Lisp programs, see also `c-macro-expansion'. ;;;*** -;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21678 60839 401744 -;;;;;; 277000)) +;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from cmuscheme.el (autoload 'run-scheme "cmuscheme" "\ @@ -4193,7 +4198,7 @@ is run). ;;;*** -;;;### (autoloads nil "color" "color.el" (21678 60839 401744 277000)) +;;;### (autoloads nil "color" "color.el" (21670 32330 885624 725000)) ;;; Generated autoloads from color.el (autoload 'color-name-to-rgb "color" "\ @@ -4212,7 +4217,7 @@ If FRAME cannot display COLOR, return nil. ;;;*** -;;;### (autoloads nil "comint" "comint.el" (21798 37607 346141 281000)) +;;;### (autoloads nil "comint" "comint.el" (21810 12071 401207 648000)) ;;; Generated autoloads from comint.el (defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\ @@ -4313,8 +4318,8 @@ REGEXP-GROUP is the regular expression group in REGEXP to use. ;;;*** -;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21678 60840 -;;;;;; 513788 871000)) +;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21855 577 527945 +;;;;;; 248000)) ;;; Generated autoloads from vc/compare-w.el (autoload 'compare-windows "compare-w" "\ @@ -4350,8 +4355,8 @@ on third call it again advances points to the next difference and so on. ;;;*** -;;;### (autoloads nil "compile" "progmodes/compile.el" (21798 37675 -;;;;;; 396889 196000)) +;;;### (autoloads nil "compile" "progmodes/compile.el" (21850 34915 +;;;;;; 107315 406000)) ;;; Generated autoloads from progmodes/compile.el (defvar compilation-mode-hook nil "\ @@ -4532,8 +4537,8 @@ This is the value of `next-error-function' in Compilation buffers. ;;;*** -;;;### (autoloads nil "completion" "completion.el" (21803 61751 249342 -;;;;;; 464000)) +;;;### (autoloads nil "completion" "completion.el" (21804 59688 154807 +;;;;;; 989000)) ;;; Generated autoloads from completion.el (defvar dynamic-completion-mode nil "\ @@ -4555,8 +4560,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21678 -;;;;;; 60840 445786 150000)) +;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from textmodes/conf-mode.el (autoload 'conf-mode "conf-mode" "\ @@ -4711,8 +4716,8 @@ For details see `conf-mode'. Example: ;;;*** -;;;### (autoloads nil "cookie1" "play/cookie1.el" (21678 60840 197776 -;;;;;; 230000)) +;;;### (autoloads nil "cookie1" "play/cookie1.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/cookie1.el (autoload 'cookie "cookie1" "\ @@ -4740,8 +4745,8 @@ and subsequent calls on the same file won't go to disk. ;;;*** -;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21678 -;;;;;; 60839 461746 688000)) +;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/copyright.el (put 'copyright-at-end-flag 'safe-local-variable 'booleanp) (put 'copyright-names-regexp 'safe-local-variable 'stringp) @@ -4779,8 +4784,8 @@ If FIX is non-nil, run `copyright-fix-years' instead. ;;;*** -;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21772 -;;;;;; 3649 129589 390000)) +;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21862 +;;;;;; 60209 828658 75000)) ;;; Generated autoloads from progmodes/cperl-mode.el (put 'cperl-indent-level 'safe-local-variable 'integerp) (put 'cperl-brace-offset 'safe-local-variable 'integerp) @@ -4978,8 +4983,8 @@ Run a `perldoc' on the word around point. ;;;*** -;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21678 60840 269779 -;;;;;; 110000)) +;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from progmodes/cpp.el (autoload 'cpp-highlight-buffer "cpp" "\ @@ -4997,8 +5002,8 @@ Edit display information for cpp conditionals. ;;;*** -;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21678 60839 461746 -;;;;;; 688000)) +;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/crm.el (autoload 'completing-read-multiple "crm" "\ @@ -5024,8 +5029,8 @@ with empty strings removed. ;;;*** -;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21799 19718 -;;;;;; 378236 623000)) +;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21811 32939 +;;;;;; 200500 777000)) ;;; Generated autoloads from textmodes/css-mode.el (autoload 'css-mode "css-mode" "\ @@ -5041,8 +5046,8 @@ Major mode to edit \"Sassy CSS\" files. ;;;*** -;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21804 3763 -;;;;;; 202437 529000)) +;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21826 50080 +;;;;;; 561727 536000)) ;;; Generated autoloads from emulation/cua-base.el (defvar cua-mode nil "\ @@ -5087,8 +5092,8 @@ Enable CUA selection mode without the C-z/C-x/C-c/C-v bindings. ;;;*** -;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21678 60839 -;;;;;; 501748 296000)) +;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emulation/cua-rect.el (autoload 'cua-rectangle-mark-mode "cua-rect" "\ @@ -5099,8 +5104,29 @@ Activates the region if needed. Only lasts until the region is deactivated. ;;;*** -;;;### (autoloads nil "cus-edit" "cus-edit.el" (21803 61751 249342 -;;;;;; 464000)) +;;;### (autoloads nil "cursor-sensor" "emacs-lisp/cursor-sensor.el" +;;;;;; (21804 59688 154807 989000)) +;;; Generated autoloads from emacs-lisp/cursor-sensor.el + +(autoload 'cursor-intangible-mode "cursor-sensor" "\ +Keep cursor outside of any `cursor-intangible' text property. + +\(fn &optional ARG)" t nil) + +(autoload 'cursor-sensor-mode "cursor-sensor" "\ +Handle the `cursor-sensor-functions' text property. +This property should hold a list of functions which react to the motion +of the cursor. They're called with three arguments (WINDOW OLDPOS DIR) +where WINDOW is the affected window, OLDPOS is the last known position of +the cursor and DIR can be `left' or `entered' depending on whether the cursor is +entering the area covered by the text-property property or leaving it. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil "cus-edit" "cus-edit.el" (21855 576 647952 +;;;;;; 330000)) ;;; Generated autoloads from cus-edit.el (defvar custom-browse-sort-alphabetically nil "\ @@ -5419,8 +5445,8 @@ The format is suitable for use with `easy-menu-define'. ;;;*** -;;;### (autoloads nil "cus-theme" "cus-theme.el" (21678 60839 413744 -;;;;;; 759000)) +;;;### (autoloads nil "cus-theme" "cus-theme.el" (21862 60209 618658 +;;;;;; 448000)) ;;; Generated autoloads from cus-theme.el (autoload 'customize-create-theme "cus-theme" "\ @@ -5453,8 +5479,8 @@ omitted, a buffer named *Custom Themes* is used. ;;;*** -;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21678 60840 -;;;;;; 513788 871000)) +;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from vc/cvs-status.el (autoload 'cvs-status-mode "cvs-status" "\ @@ -5464,8 +5490,8 @@ Mode used for cvs status output. ;;;*** -;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21678 60840 269779 -;;;;;; 110000)) +;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from progmodes/cwarn.el (push (purecopy '(cwarn 1 3 1)) package--builtin-versions) @@ -5509,8 +5535,8 @@ See `cwarn-mode' for more information on Cwarn mode. ;;;*** -;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21678 -;;;;;; 60839 797760 191000)) +;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/cyril-util.el (autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\ @@ -5538,8 +5564,8 @@ If the argument is nil, we return the display table to its standard state. ;;;*** -;;;### (autoloads nil "dabbrev" "dabbrev.el" (21678 60839 417744 -;;;;;; 920000)) +;;;### (autoloads nil "dabbrev" "dabbrev.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from dabbrev.el (put 'dabbrev-case-fold-search 'risky-local-variable t) (put 'dabbrev-case-replace 'risky-local-variable t) @@ -5585,8 +5611,8 @@ See also `dabbrev-abbrev-char-regexp' and \\[dabbrev-completion]. ;;;*** -;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21678 60839 -;;;;;; 333741 545000)) +;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from cedet/data-debug.el (autoload 'data-debug-new-buffer "data-debug" "\ @@ -5596,7 +5622,7 @@ Create a new data-debug buffer with NAME. ;;;*** -;;;### (autoloads nil "dbus" "net/dbus.el" (21799 25402 297856 218000)) +;;;### (autoloads nil "dbus" "net/dbus.el" (21855 577 147947 107000)) ;;; Generated autoloads from net/dbus.el (autoload 'dbus-handle-event "dbus" "\ @@ -5609,8 +5635,8 @@ If the HANDLER returns a `dbus-error', it is propagated as return message. ;;;*** -;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21678 60840 -;;;;;; 269779 110000)) +;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/dcl-mode.el (autoload 'dcl-mode "dcl-mode" "\ @@ -5736,8 +5762,8 @@ There is some minimal font-lock support (see vars ;;;*** -;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21776 37118 -;;;;;; 308010 713000)) +;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21855 576 767950 +;;;;;; 442000)) ;;; Generated autoloads from emacs-lisp/debug.el (setq debugger 'debug) @@ -5780,8 +5806,8 @@ To specify a nil argument interactively, exit with an empty minibuffer. ;;;*** -;;;### (autoloads nil "decipher" "play/decipher.el" (21799 24401 -;;;;;; 570172 675000)) +;;;### (autoloads nil "decipher" "play/decipher.el" (21799 41767 +;;;;;; 31221 635000)) ;;; Generated autoloads from play/decipher.el (autoload 'decipher "decipher" "\ @@ -5809,8 +5835,8 @@ The most useful commands are: ;;;*** -;;;### (autoloads nil "delim-col" "delim-col.el" (21678 60839 417744 -;;;;;; 920000)) +;;;### (autoloads nil "delim-col" "delim-col.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from delim-col.el (push (purecopy '(delim-col 2 1)) package--builtin-versions) @@ -5835,7 +5861,7 @@ START and END delimits the corners of text rectangle. ;;;*** -;;;### (autoloads nil "delsel" "delsel.el" (21714 30294 262748 97000)) +;;;### (autoloads nil "delsel" "delsel.el" (21716 41663 456033 27000)) ;;; Generated autoloads from delsel.el (defalias 'pending-delete-mode 'delete-selection-mode) @@ -5863,8 +5889,8 @@ point regardless of any selection. ;;;*** -;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 62119 -;;;;;; 434295 103000)) +;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21703 29629 +;;;;;; 608890 826000)) ;;; Generated autoloads from emacs-lisp/derived.el (autoload 'define-derived-mode "derived" "\ @@ -5932,8 +5958,8 @@ the first time the mode is used. ;;;*** -;;;### (autoloads nil "descr-text" "descr-text.el" (21694 48017 602102 -;;;;;; 111000)) +;;;### (autoloads nil "descr-text" "descr-text.el" (21862 60209 618658 +;;;;;; 448000)) ;;; Generated autoloads from descr-text.el (autoload 'describe-text-properties "descr-text" "\ @@ -5982,8 +6008,7 @@ This function is meant to be used as a value of ;;;*** -;;;### (autoloads nil "desktop" "desktop.el" (21799 25192 774103 -;;;;;; 976000)) +;;;### (autoloads nil "desktop" "desktop.el" (21860 18496 17962 857000)) ;;; Generated autoloads from desktop.el (defvar desktop-save-mode nil "\ @@ -6074,7 +6099,9 @@ code like (add-to-list 'desktop-buffer-mode-handlers '(foo-mode . foo-restore-desktop-buffer)) -Furthermore the major mode function must be autoloaded.") +The major mode function must either be autoloaded, or of the form +\"foobar-mode\" and defined in library \"foobar\", so that desktop +can guess how to load the mode's definition.") (put 'desktop-buffer-mode-handlers 'risky-local-variable t) @@ -6116,7 +6143,9 @@ code like (add-to-list 'desktop-minor-mode-handlers '(foo-mode . foo-desktop-restore)) -Furthermore the minor mode function must be autoloaded. +The minor mode function must either be autoloaded, or of the form +\"foobar-mode\" and defined in library \"foobar\", so that desktop +can guess how to load the mode's definition. See also `desktop-minor-mode-table'.") @@ -6188,8 +6217,8 @@ Revert to the last loaded desktop. ;;;*** -;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21797 54705 -;;;;;; 36905 533000)) +;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21855 576 877944 +;;;;;; 285000)) ;;; Generated autoloads from gnus/deuglify.el (autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\ @@ -6221,8 +6250,8 @@ Deuglify broken Outlook (Express) articles and redisplay. ;;;*** -;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21678 -;;;;;; 60839 317740 902000)) +;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21855 +;;;;;; 576 517945 858000)) ;;; Generated autoloads from calendar/diary-lib.el (autoload 'diary "diary-lib" "\ @@ -6264,10 +6293,10 @@ Major mode for editing the diary file. ;;;*** -;;;### (autoloads nil "diff" "vc/diff.el" (21678 60840 517789 31000)) +;;;### (autoloads nil "diff" "vc/diff.el" (21804 59688 284811 0)) ;;; Generated autoloads from vc/diff.el -(defvar diff-switches (purecopy "-c") "\ +(defvar diff-switches (purecopy "-u") "\ A string or list of strings specifying switches to be passed to diff.") (custom-autoload 'diff-switches "diff" t) @@ -6312,8 +6341,8 @@ This requires the external program `diff' to be in your `exec-path'. ;;;*** -;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21797 55597 -;;;;;; 620753 991000)) +;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21798 20907 +;;;;;; 11218 42000)) ;;; Generated autoloads from vc/diff-mode.el (autoload 'diff-mode "diff-mode" "\ @@ -6345,7 +6374,7 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "dig" "net/dig.el" (21678 60839 961766 782000)) +;;;### (autoloads nil "dig" "net/dig.el" (21670 32331 385639 720000)) ;;; Generated autoloads from net/dig.el (autoload 'dig "dig" "\ @@ -6356,7 +6385,7 @@ Optional arguments are passed to `dig-invoke'. ;;;*** -;;;### (autoloads nil "dired" "dired.el" (21757 49303 481943 552000)) +;;;### (autoloads nil "dired" "dired.el" (21855 576 727950 398000)) ;;; Generated autoloads from dired.el (defvar dired-listing-switches (purecopy "-al") "\ @@ -6476,8 +6505,8 @@ Keybindings: ;;;*** -;;;### (autoloads nil "dirtrack" "dirtrack.el" (21678 60839 429745 -;;;;;; 402000)) +;;;### (autoloads nil "dirtrack" "dirtrack.el" (21855 576 727950 +;;;;;; 398000)) ;;; Generated autoloads from dirtrack.el (autoload 'dirtrack-mode "dirtrack" "\ @@ -6507,8 +6536,8 @@ from `default-directory'. ;;;*** -;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21678 60839 -;;;;;; 461746 688000)) +;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/disass.el (autoload 'disassemble "disass" "\ @@ -6522,8 +6551,8 @@ redefine OBJECT if it is a symbol. ;;;*** -;;;### (autoloads nil "disp-table" "disp-table.el" (21678 60839 429745 -;;;;;; 402000)) +;;;### (autoloads nil "disp-table" "disp-table.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from disp-table.el (autoload 'make-display-table "disp-table" "\ @@ -6644,8 +6673,8 @@ in `.emacs'. ;;;*** -;;;### (autoloads nil "dissociate" "play/dissociate.el" (21678 60840 -;;;;;; 197776 230000)) +;;;### (autoloads nil "dissociate" "play/dissociate.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from play/dissociate.el (autoload 'dissociated-press "dissociate" "\ @@ -6661,7 +6690,7 @@ Default is 2. ;;;*** -;;;### (autoloads nil "dnd" "dnd.el" (21678 60839 429745 402000)) +;;;### (autoloads nil "dnd" "dnd.el" (21670 32330 885624 725000)) ;;; Generated autoloads from dnd.el (defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\ @@ -6681,8 +6710,8 @@ if some action was made, or nil if the URL is ignored.") ;;;*** -;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21678 60840 -;;;;;; 449786 311000)) +;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from textmodes/dns-mode.el (autoload 'dns-mode "dns-mode" "\ @@ -6705,8 +6734,8 @@ Locate SOA record and increment the serial field. ;;;*** -;;;### (autoloads nil "doc-view" "doc-view.el" (21718 7576 270960 -;;;;;; 954000)) +;;;### (autoloads nil "doc-view" "doc-view.el" (21716 41663 456033 +;;;;;; 27000)) ;;; Generated autoloads from doc-view.el (autoload 'doc-view-mode-p "doc-view" "\ @@ -6752,8 +6781,8 @@ See the command `doc-view-mode' for more information on this mode. ;;;*** -;;;### (autoloads nil "doctor" "play/doctor.el" (21678 60840 201776 -;;;;;; 390000)) +;;;### (autoloads nil "doctor" "play/doctor.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/doctor.el (autoload 'doctor "doctor" "\ @@ -6763,7 +6792,7 @@ Switch to *doctor* buffer and start giving psychotherapy. ;;;*** -;;;### (autoloads nil "double" "double.el" (21678 60839 433745 563000)) +;;;### (autoloads nil "double" "double.el" (21670 32330 885624 725000)) ;;; Generated autoloads from double.el (autoload 'double-mode "double" "\ @@ -6779,8 +6808,8 @@ strings when pressed twice. See `double-map' for details. ;;;*** -;;;### (autoloads nil "dunnet" "play/dunnet.el" (21678 60840 201776 -;;;;;; 390000)) +;;;### (autoloads nil "dunnet" "play/dunnet.el" (21841 54062 172628 +;;;;;; 227000)) ;;; Generated autoloads from play/dunnet.el (push (purecopy '(dunnet 2 1)) package--builtin-versions) @@ -6792,7 +6821,7 @@ Switch to *dungeon* buffer and start game. ;;;*** ;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21732 -;;;;;; 38826 390629 134000)) +;;;;;; 29888 498897 471000)) ;;; Generated autoloads from emacs-lisp/easy-mmode.el (defalias 'easy-mmode-define-minor-mode 'define-minor-mode) @@ -6936,8 +6965,8 @@ CSS contains a list of syntax specifications of the form (CHAR . SYNTAX). ;;;*** -;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21678 -;;;;;; 60839 461746 688000)) +;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/easymenu.el (autoload 'easy-menu-define "easymenu" "\ @@ -7075,8 +7104,8 @@ To implement dynamic menus, either call this from ;;;*** -;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21678 60840 -;;;;;; 277779 430000)) +;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/ebnf2ps.el (push (purecopy '(ebnf2ps 4 4)) package--builtin-versions) @@ -7341,8 +7370,8 @@ See `ebnf-style-database' documentation. ;;;*** -;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21678 60840 -;;;;;; 281779 590000)) +;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/ebrowse.el (autoload 'ebrowse-tree-mode "ebrowse" "\ @@ -7490,8 +7519,8 @@ Display statistics for a class tree. ;;;*** -;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21678 60839 433745 -;;;;;; 563000)) +;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from ebuff-menu.el (autoload 'electric-buffer-list "ebuff-menu" "\ @@ -7523,8 +7552,8 @@ Run hooks in `electric-buffer-menu-mode-hook' on entry. ;;;*** -;;;### (autoloads nil "echistory" "echistory.el" (21678 60839 433745 -;;;;;; 563000)) +;;;### (autoloads nil "echistory" "echistory.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from echistory.el (autoload 'Electric-command-history-redo-expression "echistory" "\ @@ -7535,8 +7564,8 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** -;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21678 60839 -;;;;;; 625753 279000)) +;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/ecomplete.el (autoload 'ecomplete-setup "ecomplete" "\ @@ -7546,7 +7575,7 @@ With prefix arg NOCONFIRM, execute current line as-is without editing. ;;;*** -;;;### (autoloads nil "ede" "cedet/ede.el" (21714 11434 472202 812000)) +;;;### (autoloads nil "ede" "cedet/ede.el" (21834 29303 521933 754000)) ;;; Generated autoloads from cedet/ede.el (push (purecopy '(ede 1 2)) package--builtin-versions) @@ -7572,8 +7601,8 @@ an EDE controlled project. ;;;*** -;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21803 61751 -;;;;;; 261341 967000)) +;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21857 42300 +;;;;;; 387957 585000)) ;;; Generated autoloads from emacs-lisp/edebug.el (defvar edebug-all-defs nil "\ @@ -7637,7 +7666,7 @@ Toggle edebugging of all forms. ;;;*** -;;;### (autoloads nil "ediff" "vc/ediff.el" (21678 60840 529789 511000)) +;;;### (autoloads nil "ediff" "vc/ediff.el" (21670 32331 885635 586000)) ;;; Generated autoloads from vc/ediff.el (push (purecopy '(ediff 2 81 4)) package--builtin-versions) @@ -7909,8 +7938,8 @@ With optional NODE, goes to that node. ;;;*** -;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21678 60840 -;;;;;; 517789 31000)) +;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21861 5946 +;;;;;; 771514 868000)) ;;; Generated autoloads from vc/ediff-help.el (autoload 'ediff-customize "ediff-help" "\ @@ -7920,8 +7949,8 @@ With optional NODE, goes to that node. ;;;*** -;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21678 60840 -;;;;;; 521789 190000)) +;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from vc/ediff-mult.el (autoload 'ediff-show-registry "ediff-mult" "\ @@ -7933,8 +7962,8 @@ Display Ediff's registry. ;;;*** -;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21678 60840 -;;;;;; 525789 351000)) +;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21852 24382 +;;;;;; 97237 703000)) ;;; Generated autoloads from vc/ediff-util.el (autoload 'ediff-toggle-multiframe "ediff-util" "\ @@ -7953,8 +7982,8 @@ To change the default, set the variable `ediff-use-toolbar-p', which see. ;;;*** -;;;### (autoloads nil "edmacro" "edmacro.el" (21799 24401 550173 -;;;;;; 82000)) +;;;### (autoloads nil "edmacro" "edmacro.el" (21799 41766 961230 +;;;;;; 875000)) ;;; Generated autoloads from edmacro.el (push (purecopy '(edmacro 2 1)) package--builtin-versions) @@ -8003,8 +8032,8 @@ or nil, use a compact 80-column format. ;;;*** -;;;### (autoloads nil "edt" "emulation/edt.el" (21678 60839 505748 -;;;;;; 457000)) +;;;### (autoloads nil "edt" "emulation/edt.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emulation/edt.el (autoload 'edt-set-scroll-margins "edt" "\ @@ -8021,7 +8050,7 @@ Turn on EDT Emulation. ;;;*** -;;;### (autoloads nil "ehelp" "ehelp.el" (21678 60839 437745 724000)) +;;;### (autoloads nil "ehelp" "ehelp.el" (21670 32330 885624 725000)) ;;; Generated autoloads from ehelp.el (autoload 'with-electric-help "ehelp" "\ @@ -8057,15 +8086,15 @@ BUFFER is put back into its original major mode. ;;;*** -;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21803 61751 -;;;;;; 261341 967000)) +;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21862 60482 +;;;;;; 430808 412000)) ;;; Generated autoloads from emacs-lisp/eieio.el (push (purecopy '(eieio 1 4)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21797 -;;;;;; 54704 984906 655000)) +;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21827 +;;;;;; 47608 610495 897000)) ;;; Generated autoloads from emacs-lisp/eieio-core.el (push (purecopy '(eieio-core 1 4)) package--builtin-versions) @@ -8081,8 +8110,8 @@ It creates an autoload function for CNAME's constructor. ;;;*** -;;;### (autoloads nil "elec-pair" "elec-pair.el" (21783 27762 910046 -;;;;;; 655000)) +;;;### (autoloads nil "elec-pair" "elec-pair.el" (21811 32939 170488 +;;;;;; 968000)) ;;; Generated autoloads from elec-pair.el (defvar electric-pair-text-pairs '((34 . 34)) "\ @@ -8123,8 +8152,8 @@ Toggle `electric-pair-mode' only in this buffer. ;;;*** -;;;### (autoloads nil "elide-head" "elide-head.el" (21678 60839 437745 -;;;;;; 724000)) +;;;### (autoloads nil "elide-head" "elide-head.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from elide-head.el (autoload 'elide-head "elide-head" "\ @@ -8139,8 +8168,8 @@ This is suitable as an entry on `find-file-hook' or appropriate mode hooks. ;;;*** -;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21678 60839 -;;;;;; 473747 171000)) +;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21853 45243 +;;;;;; 381515 341000)) ;;; Generated autoloads from emacs-lisp/elint.el (autoload 'elint-file "elint" "\ @@ -8175,8 +8204,8 @@ optional prefix argument REINIT is non-nil. ;;;*** -;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21678 60839 473747 -;;;;;; 171000)) +;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/elp.el (autoload 'elp-instrument-function "elp" "\ @@ -8210,8 +8239,8 @@ displayed. ;;;*** -;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21678 60839 497748 -;;;;;; 135000)) +;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lock.el (autoload 'emacs-lock-mode "emacs-lock" "\ @@ -8238,8 +8267,8 @@ Other values are interpreted as usual. ;;;*** -;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21678 60839 -;;;;;; 869763 84000)) +;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21814 9129 290493 +;;;;;; 495000)) ;;; Generated autoloads from mail/emacsbug.el (autoload 'report-emacs-bug "emacsbug" "\ @@ -8252,8 +8281,8 @@ Prompts for bug subject. Leaves you in a mail buffer. ;;;*** -;;;### (autoloads nil "emerge" "vc/emerge.el" (21605 26937 780008 -;;;;;; 15000)) +;;;### (autoloads nil "emerge" "vc/emerge.el" (21607 54478 800121 +;;;;;; 42000)) ;;; Generated autoloads from vc/emerge.el (autoload 'emerge-files "emerge" "\ @@ -8313,8 +8342,8 @@ Emerge two RCS revisions of a file, with another revision as ancestor. ;;;*** -;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21690 51765 -;;;;;; 876519 934000)) +;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21691 38459 +;;;;;; 74604 918000)) ;;; Generated autoloads from textmodes/enriched.el (autoload 'enriched-mode "enriched" "\ @@ -8349,7 +8378,7 @@ Commands: ;;;*** -;;;### (autoloads nil "epa" "epa.el" (21678 60839 517748 939000)) +;;;### (autoloads nil "epa" "epa.el" (21670 32330 885624 725000)) ;;; Generated autoloads from epa.el (autoload 'epa-list-keys "epa" "\ @@ -8537,8 +8566,8 @@ Insert selected KEYS after the point. ;;;*** -;;;### (autoloads nil "epa-dired" "epa-dired.el" (21678 60839 513748 -;;;;;; 778000)) +;;;### (autoloads nil "epa-dired" "epa-dired.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from epa-dired.el (autoload 'epa-dired-do-decrypt "epa-dired" "\ @@ -8563,8 +8592,8 @@ Encrypt marked files. ;;;*** -;;;### (autoloads nil "epa-file" "epa-file.el" (21678 60839 517748 -;;;;;; 939000)) +;;;### (autoloads nil "epa-file" "epa-file.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from epa-file.el (autoload 'epa-file-handler "epa-file" "\ @@ -8584,8 +8613,8 @@ Encrypt marked files. ;;;*** -;;;### (autoloads nil "epa-mail" "epa-mail.el" (21678 60839 517748 -;;;;;; 939000)) +;;;### (autoloads nil "epa-mail" "epa-mail.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from epa-mail.el (autoload 'epa-mail-mode "epa-mail" "\ @@ -8662,7 +8691,7 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "epg" "epg.el" (21803 61751 269341 636000)) +;;;### (autoloads nil "epg" "epg.el" (21802 17960 412629 175000)) ;;; Generated autoloads from epg.el (push (purecopy '(epg 1 0 0)) package--builtin-versions) @@ -8673,8 +8702,8 @@ Return a context object. ;;;*** -;;;### (autoloads nil "epg-config" "epg-config.el" (21678 60839 517748 -;;;;;; 939000)) +;;;### (autoloads nil "epg-config" "epg-config.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from epg-config.el (autoload 'epg-configuration "epg-config" "\ @@ -8694,7 +8723,7 @@ Look at CONFIG and try to expand GROUP. ;;;*** -;;;### (autoloads nil "erc" "erc/erc.el" (21778 44895 439347 149000)) +;;;### (autoloads nil "erc" "erc/erc.el" (21862 60209 688658 322000)) ;;; Generated autoloads from erc/erc.el (push (purecopy '(erc 5 3)) package--builtin-versions) @@ -8743,36 +8772,36 @@ Otherwise, connect to HOST:PORT as USER and /join CHANNEL. ;;;*** -;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21678 -;;;;;; 60839 529749 421000)) +;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-autoaway.el (autoload 'erc-autoaway-mode "erc-autoaway") ;;;*** -;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21678 60839 -;;;;;; 533749 582000)) +;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-button.el (autoload 'erc-button-mode "erc-button" nil t) ;;;*** -;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21678 60839 -;;;;;; 533749 582000)) +;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-capab.el (autoload 'erc-capab-identify-mode "erc-capab" nil t) ;;;*** -;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21678 60839 -;;;;;; 533749 582000)) +;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-compat.el (autoload 'erc-define-minor-mode "erc-compat") ;;;*** -;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21697 290 520850 -;;;;;; 834000)) +;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21696 56380 925320 +;;;;;; 624000)) ;;; Generated autoloads from erc/erc-dcc.el (autoload 'erc-dcc-mode "erc-dcc") @@ -8802,14 +8831,14 @@ that subcommand. ;;;*** ;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el" -;;;;;; (21678 60839 533749 582000)) +;;;;;; (21670 32330 885624 725000)) ;;; Generated autoloads from erc/erc-desktop-notifications.el (autoload 'erc-notifications-mode "erc-desktop-notifications" "" t) ;;;*** -;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21678 -;;;;;; 60839 533749 582000)) +;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21855 +;;;;;; 576 787951 155000)) ;;; Generated autoloads from erc/erc-ezbounce.el (autoload 'erc-cmd-ezb "erc-ezbounce" "\ @@ -8820,7 +8849,7 @@ Send EZB commands to the EZBouncer verbatim. (autoload 'erc-ezb-get-login "erc-ezbounce" "\ Return an appropriate EZBounce login for SERVER and PORT. Look up entries in `erc-ezb-login-alist'. If the username or password -in the alist is `nil', prompt for the appropriate values. +in the alist is nil, prompt for the appropriate values. \(fn SERVER PORT)" nil nil) @@ -8871,8 +8900,8 @@ Add EZBouncer convenience functions to ERC. ;;;*** -;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21678 60839 533749 -;;;;;; 582000)) +;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-fill.el (autoload 'erc-fill-mode "erc-fill" nil t) @@ -8884,8 +8913,8 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'. ;;;*** -;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21678 60839 -;;;;;; 537749 742000)) +;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-identd.el (autoload 'erc-identd-mode "erc-identd") @@ -8906,8 +8935,8 @@ system. ;;;*** -;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21678 60839 -;;;;;; 537749 742000)) +;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-imenu.el (autoload 'erc-create-imenu-index "erc-imenu" "\ @@ -8917,22 +8946,22 @@ system. ;;;*** -;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21678 60839 537749 -;;;;;; 742000)) +;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-join.el (autoload 'erc-autojoin-mode "erc-join" nil t) ;;;*** -;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21678 60839 537749 -;;;;;; 742000)) +;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-list.el (autoload 'erc-list-mode "erc-list") ;;;*** -;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21678 60839 537749 -;;;;;; 742000)) +;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-log.el (autoload 'erc-log-mode "erc-log" nil t) @@ -8961,8 +8990,8 @@ You can save every individual message by putting this function on ;;;*** -;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21678 60839 -;;;;;; 537749 742000)) +;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-match.el (autoload 'erc-match-mode "erc-match") @@ -9008,15 +9037,15 @@ Delete dangerous-host interactively to `erc-dangerous-hosts'. ;;;*** -;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21678 60839 537749 -;;;;;; 742000)) +;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-menu.el (autoload 'erc-menu-mode "erc-menu" nil t) ;;;*** -;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21678 -;;;;;; 60839 537749 742000)) +;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-netsplit.el (autoload 'erc-netsplit-mode "erc-netsplit") @@ -9027,8 +9056,8 @@ Show who's gone. ;;;*** -;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21678 -;;;;;; 60839 541749 903000)) +;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-networks.el (autoload 'erc-determine-network "erc-networks" "\ @@ -9045,8 +9074,8 @@ Interactively select a server to connect to using `erc-server-alist'. ;;;*** -;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21678 60839 -;;;;;; 541749 903000)) +;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-notify.el (autoload 'erc-notify-mode "erc-notify" nil t) @@ -9064,36 +9093,36 @@ with args, toggle notify status of people. ;;;*** -;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21678 60839 541749 -;;;;;; 903000)) +;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-page.el (autoload 'erc-page-mode "erc-page") ;;;*** -;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21804 -;;;;;; 3763 202437 529000)) +;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21855 +;;;;;; 576 787951 155000)) ;;; Generated autoloads from erc/erc-pcomplete.el (autoload 'erc-completion-mode "erc-pcomplete" nil t) ;;;*** -;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21678 60839 -;;;;;; 541749 903000)) +;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-replace.el (autoload 'erc-replace-mode "erc-replace") ;;;*** -;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21678 60839 541749 -;;;;;; 903000)) +;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-ring.el (autoload 'erc-ring-mode "erc-ring" nil t) ;;;*** -;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21678 -;;;;;; 60839 541749 903000)) +;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-services.el (autoload 'erc-services-mode "erc-services" nil t) @@ -9110,15 +9139,15 @@ When called interactively, read the password using `read-passwd'. ;;;*** -;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21678 60839 -;;;;;; 541749 903000)) +;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-sound.el (autoload 'erc-sound-mode "erc-sound") ;;;*** -;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21678 -;;;;;; 60839 541749 903000)) +;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-speedbar.el (autoload 'erc-speedbar-browser "erc-speedbar" "\ @@ -9130,21 +9159,21 @@ This will add a speedbar major display mode. ;;;*** ;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21727 -;;;;;; 22885 681250 112000)) +;;;;;; 11963 635339 992000)) ;;; Generated autoloads from erc/erc-spelling.el (autoload 'erc-spelling-mode "erc-spelling" nil t) ;;;*** -;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21804 4012 -;;;;;; 674064 262000)) +;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21860 18496 +;;;;;; 27951 644000)) ;;; Generated autoloads from erc/erc-stamp.el (autoload 'erc-timestamp-mode "erc-stamp" nil t) ;;;*** -;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21678 60839 -;;;;;; 541749 903000)) +;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from erc/erc-track.el (defvar erc-track-minor-mode nil "\ @@ -9169,8 +9198,8 @@ keybindings will not do anything useful. ;;;*** -;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21678 -;;;;;; 60839 545750 64000)) +;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from erc/erc-truncate.el (autoload 'erc-truncate-mode "erc-truncate" nil t) @@ -9189,8 +9218,8 @@ Meant to be used in hooks, like `erc-insert-post-hook'. ;;;*** -;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21678 60839 545750 -;;;;;; 64000)) +;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from erc/erc-xdcc.el (autoload 'erc-xdcc-mode "erc-xdcc") @@ -9201,8 +9230,8 @@ Add a file to `erc-xdcc-files'. ;;;*** -;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21678 60839 477747 -;;;;;; 331000)) +;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21843 54898 597238 +;;;;;; 876000)) ;;; Generated autoloads from emacs-lisp/ert.el (autoload 'ert-deftest "ert" "\ @@ -9271,8 +9300,8 @@ Display the documentation for TEST-OR-TEST-NAME (a symbol or ert-test). ;;;*** -;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21678 60839 -;;;;;; 473747 171000)) +;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/ert-x.el (put 'ert-with-test-buffer 'lisp-indent-function 1) @@ -9284,8 +9313,8 @@ Kill all test buffers that are still live. ;;;*** -;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21767 20340 -;;;;;; 938139 905000)) +;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21861 39358 +;;;;;; 497944 643000)) ;;; Generated autoloads from eshell/esh-mode.el (autoload 'eshell-mode "esh-mode" "\ @@ -9295,8 +9324,8 @@ Emacs shell interactive mode. ;;;*** -;;;### (autoloads nil "eshell" "eshell/eshell.el" (21678 60839 561750 -;;;;;; 707000)) +;;;### (autoloads nil "eshell" "eshell/eshell.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from eshell/eshell.el (push (purecopy '(eshell 2 4 2)) package--builtin-versions) @@ -9331,8 +9360,8 @@ corresponding to a successful execution. ;;;*** -;;;### (autoloads nil "etags" "progmodes/etags.el" (21697 290 536850 -;;;;;; 376000)) +;;;### (autoloads nil "etags" "progmodes/etags.el" (21866 57262 677944 +;;;;;; 752000)) ;;; Generated autoloads from progmodes/etags.el (defvar tags-file-name nil "\ @@ -9479,6 +9508,8 @@ See documentation of variable `tags-file-name'. \(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil) +(make-obsolete 'find-tag 'xref-find-definitions '"25.1") + (autoload 'find-tag-other-window "etags" "\ Find tag (in current tags table) whose name contains TAGNAME. Select the buffer containing the tag's definition in another window, and @@ -9647,8 +9678,8 @@ for \\[find-tag] (which see). ;;;*** -;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21678 -;;;;;; 60839 797760 191000)) +;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21862 +;;;;;; 60209 768658 443000)) ;;; Generated autoloads from language/ethio-util.el (autoload 'setup-ethiopic-environment-internal "ethio-util" "\ @@ -9816,7 +9847,7 @@ With ARG, insert that many delimiters. ;;;*** -;;;### (autoloads nil "eudc" "net/eudc.el" (21799 24829 185482 342000)) +;;;### (autoloads nil "eudc" "net/eudc.el" (21799 41767 21224 988000)) ;;; Generated autoloads from net/eudc.el (autoload 'eudc-set-server "eudc" "\ @@ -9870,8 +9901,8 @@ This does nothing except loading eudc by autoload side-effect. ;;;*** -;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21703 62119 462294 -;;;;;; 474000)) +;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21704 50495 455324 +;;;;;; 752000)) ;;; Generated autoloads from net/eudc-bob.el (autoload 'eudc-display-generic-binary "eudc-bob" "\ @@ -9906,8 +9937,8 @@ Display a button for the JPEG DATA. ;;;*** -;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21799 24730 -;;;;;; 583484 950000)) +;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21794 23865 +;;;;;; 772631 636000)) ;;; Generated autoloads from net/eudc-export.el (autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\ @@ -9923,8 +9954,8 @@ Call `eudc-insert-record-at-point-into-bbdb' if on a record. ;;;*** -;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21703 -;;;;;; 62119 462294 474000)) +;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21704 +;;;;;; 50495 455324 752000)) ;;; Generated autoloads from net/eudc-hotlist.el (autoload 'eudc-edit-hotlist "eudc-hotlist" "\ @@ -9934,8 +9965,8 @@ Edit the hotlist of directory servers in a specialized buffer. ;;;*** -;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21678 60839 477747 -;;;;;; 331000)) +;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/ewoc.el (autoload 'ewoc-create "ewoc" "\ @@ -9961,7 +9992,7 @@ fourth arg NOSEP non-nil inhibits this. ;;;*** -;;;### (autoloads nil "eww" "net/eww.el" (21756 63737 898473 61000)) +;;;### (autoloads nil "eww" "net/eww.el" (21826 49851 770496 504000)) ;;; Generated autoloads from net/eww.el (defvar eww-suggest-uris '(eww-links-at-point url-get-url-at-point eww-current-url) "\ @@ -10008,8 +10039,8 @@ Display the bookmarks. ;;;*** -;;;### (autoloads nil "executable" "progmodes/executable.el" (21678 -;;;;;; 60840 285779 750000)) +;;;### (autoloads nil "executable" "progmodes/executable.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/executable.el (autoload 'executable-command-find-posix-p "executable" "\ @@ -10050,7 +10081,7 @@ file modes. ;;;*** -;;;### (autoloads nil "expand" "expand.el" (21678 60839 561750 707000)) +;;;### (autoloads nil "expand" "expand.el" (21670 32330 885624 725000)) ;;; Generated autoloads from expand.el (autoload 'expand-add-abbrevs "expand" "\ @@ -10099,8 +10130,8 @@ This is used only in conjunction with `expand-add-abbrevs'. ;;;*** -;;;### (autoloads nil "f90" "progmodes/f90.el" (21741 10923 306579 -;;;;;; 600000)) +;;;### (autoloads nil "f90" "progmodes/f90.el" (21862 60209 828658 +;;;;;; 75000)) ;;; Generated autoloads from progmodes/f90.el (autoload 'f90-mode "f90" "\ @@ -10111,7 +10142,7 @@ For fixed format code, use `fortran-mode'. \\[f90-indent-new-line] indents current line and creates a new indented line. \\[f90-indent-subprogram] indents the current subprogram. -Type `? or `\\[help-command] to display a list of built-in abbrevs for F90 keywords. +Type \\=`? or \\=`\\[help-command] to display a list of built-in abbrevs for F90 keywords. Key definitions: \\{f90-mode-map} @@ -10167,8 +10198,8 @@ with no args, if that value is non-nil. ;;;*** -;;;### (autoloads nil "face-remap" "face-remap.el" (21678 60839 561750 -;;;;;; 707000)) +;;;### (autoloads nil "face-remap" "face-remap.el" (21855 576 807944 +;;;;;; 863000)) ;;; Generated autoloads from face-remap.el (autoload 'face-remap-add-relative "face-remap" "\ @@ -10213,7 +10244,7 @@ of face attribute/value pairs, like in a `face' text property. If SPECS is empty, call `face-remap-reset-base' to use the normal definition of FACE as the base remapping; note that this is -different from SPECS containing a single value `nil', which means +different from SPECS containing a single value nil, which means not to inherit from the global definition of FACE at all. \(fn FACE &rest SPECS)" nil nil) @@ -10327,8 +10358,8 @@ Besides the choice of face, it is the same as `buffer-face-mode'. ;;;*** -;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21605 26936 -;;;;;; 980023 383000)) +;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21607 54478 +;;;;;; 300138 641000)) ;;; Generated autoloads from mail/feedmail.el (push (purecopy '(feedmail 11)) package--builtin-versions) @@ -10382,7 +10413,7 @@ you can set `feedmail-queue-reminder-alist' to nil. ;;;*** -;;;### (autoloads nil "ffap" "ffap.el" (21797 54704 996906 396000)) +;;;### (autoloads nil "ffap" "ffap.el" (21837 20508 21231 579000)) ;;; Generated autoloads from ffap.el (autoload 'ffap-next "ffap" "\ @@ -10445,8 +10476,8 @@ Evaluate the forms in variable `ffap-bindings'. ;;;*** -;;;### (autoloads nil "filecache" "filecache.el" (21741 10923 302579 -;;;;;; 694000)) +;;;### (autoloads nil "filecache" "filecache.el" (21740 23998 26747 +;;;;;; 125000)) ;;; Generated autoloads from filecache.el (autoload 'file-cache-add-directory "filecache" "\ @@ -10503,8 +10534,8 @@ the name is considered already unique; only the second substitution ;;;*** -;;;### (autoloads nil "filenotify" "filenotify.el" (21706 14224 249963 -;;;;;; 176000)) +;;;### (autoloads nil "filenotify" "filenotify.el" (21704 50495 455324 +;;;;;; 752000)) ;;; Generated autoloads from filenotify.el (autoload 'file-notify-handle-event "filenotify" "\ @@ -10519,8 +10550,8 @@ Otherwise, signal a `file-notify-error'. ;;;*** -;;;### (autoloads nil "files-x" "files-x.el" (21678 60839 569751 -;;;;;; 28000)) +;;;### (autoloads nil "files-x" "files-x.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from files-x.el (autoload 'add-file-local-variable "files-x" "\ @@ -10585,8 +10616,8 @@ Copy directory-local variables to the -*- line. ;;;*** -;;;### (autoloads nil "filesets" "filesets.el" (21678 60839 577751 -;;;;;; 350000)) +;;;### (autoloads nil "filesets" "filesets.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from filesets.el (autoload 'filesets-init "filesets" "\ @@ -10597,8 +10628,8 @@ Set up hooks, load the cache file -- if existing -- and build the menu. ;;;*** -;;;### (autoloads nil "find-cmd" "find-cmd.el" (21678 60839 577751 -;;;;;; 350000)) +;;;### (autoloads nil "find-cmd" "find-cmd.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from find-cmd.el (push (purecopy '(find-cmd 0 6)) package--builtin-versions) @@ -10618,8 +10649,8 @@ result is a string that should be ready for the command line. ;;;*** -;;;### (autoloads nil "find-dired" "find-dired.el" (21678 60839 577751 -;;;;;; 350000)) +;;;### (autoloads nil "find-dired" "find-dired.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from find-dired.el (autoload 'find-dired "find-dired" "\ @@ -10659,8 +10690,8 @@ use in place of \"-ls\" as the final argument. ;;;*** -;;;### (autoloads nil "find-file" "find-file.el" (21678 60839 581751 -;;;;;; 511000)) +;;;### (autoloads nil "find-file" "find-file.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from find-file.el (defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\ @@ -10750,8 +10781,8 @@ Visit the file you click on in another window. ;;;*** -;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21701 -;;;;;; 12613 256523 949000)) +;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21700 +;;;;;; 53432 444919 658000)) ;;; Generated autoloads from emacs-lisp/find-func.el (autoload 'find-library "find-func" "\ @@ -10909,8 +10940,8 @@ Define some key bindings for the find-function family of functions. ;;;*** -;;;### (autoloads nil "find-lisp" "find-lisp.el" (21678 60839 581751 -;;;;;; 511000)) +;;;### (autoloads nil "find-lisp" "find-lisp.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from find-lisp.el (autoload 'find-lisp-find-dired "find-lisp" "\ @@ -10930,7 +10961,7 @@ Change the filter on a `find-lisp-find-dired' buffer to REGEXP. ;;;*** -;;;### (autoloads nil "finder" "finder.el" (21678 60839 581751 511000)) +;;;### (autoloads nil "finder" "finder.el" (21862 60209 708661 34000)) ;;; Generated autoloads from finder.el (push (purecopy '(finder 1 0)) package--builtin-versions) @@ -10952,8 +10983,8 @@ Find packages matching a given keyword. ;;;*** -;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21678 60839 581751 -;;;;;; 511000)) +;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from flow-ctrl.el (autoload 'enable-flow-control "flow-ctrl" "\ @@ -10974,8 +11005,8 @@ to get the effect of a C-q. ;;;*** -;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21678 60839 -;;;;;; 625753 279000)) +;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/flow-fill.el (autoload 'fill-flowed-encode "flow-fill" "\ @@ -10990,8 +11021,8 @@ to get the effect of a C-q. ;;;*** -;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21678 60840 -;;;;;; 289779 910000)) +;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/flymake.el (push (purecopy '(flymake 0 3)) package--builtin-versions) @@ -11021,8 +11052,8 @@ Turn flymake mode off. ;;;*** -;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21756 63738 -;;;;;; 18470 49000)) +;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21750 59840 +;;;;;; 704617 663000)) ;;; Generated autoloads from textmodes/flyspell.el (autoload 'flyspell-prog-mode "flyspell" "\ @@ -11092,14 +11123,14 @@ Flyspell whole buffer. ;;;*** -;;;### (autoloads nil "foldout" "foldout.el" (21678 60839 581751 -;;;;;; 511000)) +;;;### (autoloads nil "foldout" "foldout.el" (21824 11953 672190 +;;;;;; 35000)) ;;; Generated autoloads from foldout.el (push (purecopy '(foldout 1 10)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "follow" "follow.el" (21678 60839 581751 511000)) +;;;### (autoloads nil "follow" "follow.el" (21670 32330 885624 725000)) ;;; Generated autoloads from follow.el (autoload 'turn-on-follow-mode "follow" "\ @@ -11167,8 +11198,8 @@ selected if the original window is the first one in the frame. ;;;*** -;;;### (autoloads nil "footnote" "mail/footnote.el" (21799 24401 -;;;;;; 558172 920000)) +;;;### (autoloads nil "footnote" "mail/footnote.el" (21814 9129 310503 +;;;;;; 742000)) ;;; Generated autoloads from mail/footnote.el (push (purecopy '(footnote 0 19)) package--builtin-versions) @@ -11187,7 +11218,7 @@ play around with the following keys: ;;;*** -;;;### (autoloads nil "forms" "forms.el" (21804 4012 674064 262000)) +;;;### (autoloads nil "forms" "forms.el" (21852 24381 567240 49000)) ;;; Generated autoloads from forms.el (autoload 'forms-mode "forms" "\ @@ -11223,8 +11254,8 @@ Visit a file in Forms mode in other window. ;;;*** -;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21678 60840 -;;;;;; 289779 910000)) +;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/fortran.el (autoload 'fortran-mode "fortran" "\ @@ -11301,8 +11332,8 @@ with no args, if that value is non-nil. ;;;*** -;;;### (autoloads nil "fortune" "play/fortune.el" (21678 60840 201776 -;;;;;; 390000)) +;;;### (autoloads nil "fortune" "play/fortune.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/fortune.el (autoload 'fortune-add-fortune "fortune" "\ @@ -11350,8 +11381,8 @@ and choose the directory as the fortune-file. ;;;*** -;;;### (autoloads nil "frameset" "frameset.el" (21799 24401 554173 -;;;;;; 1000)) +;;;### (autoloads nil "frameset" "frameset.el" (21799 41766 981374 +;;;;;; 972000)) ;;; Generated autoloads from frameset.el (defvar frameset-session-filter-alist '((name . :never) (left . frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . frameset-filter-iconified)) "\ @@ -11537,15 +11568,15 @@ Interactively, reads the register using `register-read-with-preview'. ;;;*** -;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 48653 -;;;;;; 160356 477000)) +;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21720 38720 +;;;;;; 956749 443000)) ;;; Generated autoloads from play/gamegrid.el (push (purecopy '(gamegrid 1 2)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21724 48240 -;;;;;; 923325 678000)) +;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21852 24381 +;;;;;; 917233 10000)) ;;; Generated autoloads from progmodes/gdb-mi.el (defvar gdb-enable-debug nil "\ @@ -11622,8 +11653,8 @@ detailed description of this mode. ;;;*** -;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21678 60839 -;;;;;; 477747 331000)) +;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/generic.el (defvar generic-mode-list nil "\ @@ -11703,8 +11734,8 @@ regular expression that can be used as an element of ;;;*** -;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21678 60840 -;;;;;; 293780 70000)) +;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/glasses.el (autoload 'glasses-mode "glasses" "\ @@ -11718,8 +11749,8 @@ add virtual separators (like underscores) at places they belong to. ;;;*** -;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21678 60839 -;;;;;; 629753 440000)) +;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gmm-utils.el (autoload 'gmm-regexp-concat "gmm-utils" "\ @@ -11773,7 +11804,7 @@ DEFAULT-MAP specifies the default key map for ICON-LIST. ;;;*** -;;;### (autoloads nil "gnus" "gnus/gnus.el" (21678 60839 681755 530000)) +;;;### (autoloads nil "gnus" "gnus/gnus.el" (21670 32330 885624 725000)) ;;; Generated autoloads from gnus/gnus.el (push (purecopy '(gnus 5 13)) package--builtin-versions) (when (fboundp 'custom-autoload) @@ -11823,8 +11854,8 @@ prompt the user for the name of an NNTP server to use. ;;;*** -;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21678 60839 -;;;;;; 629753 440000)) +;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-agent.el (autoload 'gnus-unplugged "gnus-agent" "\ @@ -11914,8 +11945,8 @@ CLEAN is obsolete and ignored. ;;;*** -;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21799 14518 -;;;;;; 691699 178000)) +;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21864 15535 +;;;;;; 27945 734000)) ;;; Generated autoloads from gnus/gnus-art.el (autoload 'gnus-article-prepare-display "gnus-art" "\ @@ -11925,8 +11956,8 @@ Make the current buffer look like a nice article. ;;;*** -;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21678 -;;;;;; 60839 637753 761000)) +;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from gnus/gnus-bookmark.el (autoload 'gnus-bookmark-set "gnus-bookmark" "\ @@ -11949,8 +11980,8 @@ deletion, or > if it is flagged for displaying. ;;;*** -;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21678 60839 -;;;;;; 641753 922000)) +;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-cache.el (autoload 'gnus-jog-cache "gnus-cache" "\ @@ -11991,8 +12022,8 @@ supported. ;;;*** -;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21678 60839 -;;;;;; 641753 922000)) +;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-delay.el (autoload 'gnus-delay-article "gnus-delay" "\ @@ -12027,8 +12058,8 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** -;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21678 60839 -;;;;;; 641753 922000)) +;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-diary.el (autoload 'gnus-user-format-function-d "gnus-diary" "\ @@ -12043,8 +12074,8 @@ Checking delayed messages is skipped if optional arg NO-CHECK is non-nil. ;;;*** -;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21678 60839 -;;;;;; 641753 922000)) +;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-dired.el (autoload 'turn-on-gnus-dired-mode "gnus-dired" "\ @@ -12054,8 +12085,8 @@ Convenience method to turn on gnus-dired-mode. ;;;*** -;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21678 60839 -;;;;;; 645754 83000)) +;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-draft.el (autoload 'gnus-draft-reminder "gnus-draft" "\ @@ -12065,8 +12096,8 @@ Reminder user if there are unsent drafts. ;;;*** -;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21678 60839 -;;;;;; 645754 83000)) +;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-fun.el (autoload 'gnus--random-face-with-type "gnus-fun" "\ @@ -12131,8 +12162,8 @@ Insert a random Face header from `gnus-face-directory'. ;;;*** -;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21678 -;;;;;; 60839 645754 83000)) +;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from gnus/gnus-gravatar.el (autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\ @@ -12149,8 +12180,8 @@ If gravatars are already displayed, remove them. ;;;*** -;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21804 4012 -;;;;;; 678064 192000)) +;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21852 24381 +;;;;;; 597233 80000)) ;;; Generated autoloads from gnus/gnus-group.el (autoload 'gnus-fetch-group "gnus-group" "\ @@ -12167,8 +12198,8 @@ Pop up a frame and enter GROUP. ;;;*** -;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21678 60839 -;;;;;; 649754 243000)) +;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-html.el (autoload 'gnus-article-html "gnus-html" "\ @@ -12183,8 +12214,8 @@ Pop up a frame and enter GROUP. ;;;*** -;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21678 60839 -;;;;;; 649754 243000)) +;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-kill.el (defalias 'gnus-batch-kill 'gnus-batch-score) @@ -12197,8 +12228,8 @@ Usage: emacs -batch -l ~/.emacs -l gnus -f gnus-batch-score ;;;*** -;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21678 60839 653754 -;;;;;; 404000)) +;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from gnus/gnus-ml.el (autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\ @@ -12221,8 +12252,8 @@ Minor mode for providing mailing-list commands. ;;;*** -;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21678 60839 -;;;;;; 653754 404000)) +;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-mlspl.el (autoload 'gnus-group-split-setup "gnus-mlspl" "\ @@ -12322,8 +12353,8 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns: ;;;*** -;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21727 22885 -;;;;;; 701249 695000)) +;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21725 56638 +;;;;;; 795320 63000)) ;;; Generated autoloads from gnus/gnus-msg.el (autoload 'gnus-msg-mail "gnus-msg" "\ @@ -12350,7 +12381,7 @@ Like `message-reply'. ;;;*** ;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el" -;;;;;; (21756 63737 858474 66000)) +;;;;;; (21757 29489 158925 687000)) ;;; Generated autoloads from gnus/gnus-notifications.el (autoload 'gnus-notifications "gnus-notifications" "\ @@ -12366,8 +12397,8 @@ This is typically a function to add in ;;;*** -;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21678 60839 -;;;;;; 653754 404000)) +;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-picon.el (autoload 'gnus-treat-from-picon "gnus-picon" "\ @@ -12390,8 +12421,8 @@ If picons are already displayed, remove them. ;;;*** -;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21678 60839 -;;;;;; 653754 404000)) +;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-range.el (autoload 'gnus-sorted-difference "gnus-range" "\ @@ -12459,7 +12490,7 @@ Add NUM into sorted LIST by side effect. ;;;*** ;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21774 -;;;;;; 52426 305831 981000)) +;;;;;; 38574 225319 550000)) ;;; Generated autoloads from gnus/gnus-registry.el (autoload 'gnus-registry-initialize "gnus-registry" "\ @@ -12474,8 +12505,8 @@ Install the registry hooks. ;;;*** -;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21678 60839 -;;;;;; 661754 726000)) +;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-sieve.el (autoload 'gnus-sieve-update "gnus-sieve" "\ @@ -12502,8 +12533,8 @@ See the documentation for these variables and functions for details. ;;;*** -;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21678 60839 -;;;;;; 661754 726000)) +;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-spec.el (autoload 'gnus-update-format "gnus-spec" "\ @@ -12513,8 +12544,8 @@ Update the format specification near point. ;;;*** -;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21715 35341 -;;;;;; 203436 746000)) +;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21716 41663 +;;;;;; 456033 27000)) ;;; Generated autoloads from gnus/gnus-start.el (autoload 'gnus-declare-backend "gnus-start" "\ @@ -12524,8 +12555,8 @@ Declare back end NAME with ABILITIES as a Gnus back end. ;;;*** -;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21803 61751 -;;;;;; 289340 808000)) +;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21855 576 897951 +;;;;;; 62000)) ;;; Generated autoloads from gnus/gnus-sum.el (autoload 'gnus-summary-bookmark-jump "gnus-sum" "\ @@ -12536,8 +12567,8 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** -;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21678 60839 -;;;;;; 673755 208000)) +;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21832 3452 +;;;;;; 581913 198000)) ;;; Generated autoloads from gnus/gnus-sync.el (autoload 'gnus-sync-initialize "gnus-sync" "\ @@ -12552,8 +12583,8 @@ Install the sync hooks. ;;;*** -;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21678 60839 -;;;;;; 681755 530000)) +;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gnus-win.el (autoload 'gnus-add-configuration "gnus-win" "\ @@ -12563,8 +12594,8 @@ Add the window configuration CONF to `gnus-buffer-configuration'. ;;;*** -;;;### (autoloads nil "gnutls" "net/gnutls.el" (21678 60839 969767 -;;;;;; 103000)) +;;;### (autoloads nil "gnutls" "net/gnutls.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from net/gnutls.el (defvar gnutls-min-prime-bits 256 "\ @@ -12580,8 +12611,8 @@ A value of nil says to use the default GnuTLS value.") ;;;*** -;;;### (autoloads nil "gomoku" "play/gomoku.el" (21678 60840 205776 -;;;;;; 549000)) +;;;### (autoloads nil "gomoku" "play/gomoku.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/gomoku.el (autoload 'gomoku "gomoku" "\ @@ -12607,8 +12638,8 @@ Use \\[describe-mode] for more info. ;;;*** -;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21678 60839 -;;;;;; 969767 103000)) +;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from net/goto-addr.el (define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1") @@ -12649,8 +12680,8 @@ Like `goto-address-mode', but only for comments and strings. ;;;*** -;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21678 60839 -;;;;;; 685755 690000)) +;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/gravatar.el (autoload 'gravatar-retrieve "gravatar" "\ @@ -12666,8 +12697,8 @@ Retrieve MAIL-ADDRESS gravatar and returns it. ;;;*** -;;;### (autoloads nil "grep" "progmodes/grep.el" (21678 60840 297780 -;;;;;; 230000)) +;;;### (autoloads nil "grep" "progmodes/grep.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from progmodes/grep.el (defvar grep-window-height nil "\ @@ -12831,7 +12862,7 @@ file name to `*.gz', and sets `grep-highlight-matches' to `always'. ;;;*** -;;;### (autoloads nil "gs" "gs.el" (21678 60839 733757 619000)) +;;;### (autoloads nil "gs" "gs.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gs.el (autoload 'gs-load-image "gs" "\ @@ -12844,8 +12875,8 @@ the form \"WINDOW-ID PIXMAP-ID\". Value is non-nil if successful. ;;;*** -;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 35727 354145 -;;;;;; 723000)) +;;;### (autoloads nil "gud" "progmodes/gud.el" (21769 20661 366048 +;;;;;; 601000)) ;;; Generated autoloads from progmodes/gud.el (autoload 'gud-gdb "gud" "\ @@ -12940,8 +12971,8 @@ it if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21756 63737 830474 -;;;;;; 768000)) +;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21750 59840 206034 +;;;;;; 761000)) ;;; Generated autoloads from emacs-lisp/gv.el (autoload 'gv-get "gv" "\ @@ -13043,8 +13074,8 @@ binding mode. ;;;*** -;;;### (autoloads nil "handwrite" "play/handwrite.el" (21678 60840 -;;;;;; 205776 549000)) +;;;### (autoloads nil "handwrite" "play/handwrite.el" (21852 24381 +;;;;;; 887244 288000)) ;;; Generated autoloads from play/handwrite.el (autoload 'handwrite "handwrite" "\ @@ -13061,8 +13092,8 @@ Variables: `handwrite-linespace' (default 12) ;;;*** -;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 25474 348396 -;;;;;; 169000)) +;;;### (autoloads nil "hanoi" "play/hanoi.el" (21799 41767 31221 +;;;;;; 635000)) ;;; Generated autoloads from play/hanoi.el (autoload 'hanoi "hanoi" "\ @@ -13089,8 +13120,8 @@ to be updated. ;;;*** -;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21678 60839 -;;;;;; 869763 84000)) +;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/hashcash.el (autoload 'hashcash-insert-payment "hashcash" "\ @@ -13132,8 +13163,8 @@ Prefix arg sets default accept amount temporarily. ;;;*** -;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21678 60839 733757 -;;;;;; 619000)) +;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from help-at-pt.el (autoload 'help-at-pt-string "help-at-pt" "\ @@ -13260,8 +13291,8 @@ different regions. With numeric argument ARG, behaves like ;;;*** -;;;### (autoloads nil "help-fns" "help-fns.el" (21720 48653 588347 -;;;;;; 670000)) +;;;### (autoloads nil "help-fns" "help-fns.el" (21862 60209 718658 +;;;;;; 824000)) ;;; Generated autoloads from help-fns.el (autoload 'describe-function "help-fns" "\ @@ -13347,8 +13378,8 @@ Produce a texinfo buffer with sorted doc-strings from the DOC file. ;;;*** -;;;### (autoloads nil "help-macro" "help-macro.el" (21678 60839 737757 -;;;;;; 780000)) +;;;### (autoloads nil "help-macro" "help-macro.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from help-macro.el (defvar three-step-help nil "\ @@ -13362,8 +13393,8 @@ gives the window that lists the options.") ;;;*** -;;;### (autoloads nil "help-mode" "help-mode.el" (21733 15494 350926 -;;;;;; 217000)) +;;;### (autoloads nil "help-mode" "help-mode.el" (21862 60209 718658 +;;;;;; 824000)) ;;; Generated autoloads from help-mode.el (autoload 'help-mode "help-mode" "\ @@ -13470,8 +13501,8 @@ BOOKMARK is a bookmark name or a bookmark record. ;;;*** -;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21678 60839 -;;;;;; 481747 492000)) +;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/helper.el (autoload 'Helper-describe-bindings "helper" "\ @@ -13486,7 +13517,7 @@ Provide help for current mode. ;;;*** -;;;### (autoloads nil "hexl" "hexl.el" (21694 48017 602102 111000)) +;;;### (autoloads nil "hexl" "hexl.el" (21695 35516 595262 313000)) ;;; Generated autoloads from hexl.el (autoload 'hexl-mode "hexl" "\ @@ -13580,8 +13611,7 @@ This discards the buffer's undo information. ;;;*** -;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 10923 302579 -;;;;;; 694000)) +;;;### (autoloads nil "hi-lock" "hi-lock.el" (21741 1161 438890 423000)) ;;; Generated autoloads from hi-lock.el (autoload 'hi-lock-mode "hi-lock" "\ @@ -13748,8 +13778,8 @@ be found in variable `hi-lock-interactive-patterns'. ;;;*** -;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21799 25495 -;;;;;; 339970 854000)) +;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21799 41767 +;;;;;; 51222 992000)) ;;; Generated autoloads from progmodes/hideif.el (autoload 'hide-ifdef-mode "hideif" "\ @@ -13796,8 +13826,8 @@ Several variables affect how the hiding is done: ;;;*** -;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21678 60840 -;;;;;; 301780 390000)) +;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/hideshow.el (defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\ @@ -13859,8 +13889,8 @@ Unconditionally turn off `hs-minor-mode'. ;;;*** -;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21678 60839 741757 -;;;;;; 940000)) +;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from hilit-chg.el (autoload 'highlight-changes-mode "hilit-chg" "\ @@ -13991,8 +14021,8 @@ See `highlight-changes-mode' for more information on Highlight-Changes mode. ;;;*** -;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21678 60839 741757 -;;;;;; 940000)) +;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21850 34968 457268 +;;;;;; 630000)) ;;; Generated autoloads from hippie-exp.el (push (purecopy '(hippie-exp 1 6)) package--builtin-versions) @@ -14024,8 +14054,8 @@ argument VERBOSE non-nil makes the function verbose. ;;;*** -;;;### (autoloads nil "hl-line" "hl-line.el" (21678 60839 741757 -;;;;;; 940000)) +;;;### (autoloads nil "hl-line" "hl-line.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from hl-line.el (autoload 'hl-line-mode "hl-line" "\ @@ -14074,8 +14104,8 @@ Global-Hl-Line mode uses the functions `global-hl-line-unhighlight' and ;;;*** -;;;### (autoloads nil "holidays" "calendar/holidays.el" (21678 60839 -;;;;;; 317740 902000)) +;;;### (autoloads nil "holidays" "calendar/holidays.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from calendar/holidays.el (defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 "Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 "President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 "April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 "Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's Day") (holiday-fixed 7 4 "Independence Day") (holiday-float 9 1 1 "Labor Day") (holiday-float 10 1 2 "Columbus Day") (holiday-fixed 10 31 "Halloween") (holiday-fixed 11 11 "Veteran's Day") (holiday-float 11 4 4 "Thanksgiving"))) "\ @@ -14185,8 +14215,8 @@ The optional LABEL is used to label the buffer created. ;;;*** -;;;### (autoloads nil "html2text" "gnus/html2text.el" (21678 60839 -;;;;;; 685755 690000)) +;;;### (autoloads nil "html2text" "gnus/html2text.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from gnus/html2text.el (autoload 'html2text "html2text" "\ @@ -14196,8 +14226,8 @@ Convert HTML to plain text in the current buffer. ;;;*** -;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21797 54705 -;;;;;; 36905 533000)) +;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21794 23865 +;;;;;; 762631 503000)) ;;; Generated autoloads from htmlfontify.el (push (purecopy '(htmlfontify 0 21)) package--builtin-versions) @@ -14230,8 +14260,8 @@ You may also want to set `hfy-page-header' and `hfy-page-footer'. ;;;*** -;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21678 60839 745758 -;;;;;; 101000)) +;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from ibuf-macs.el (autoload 'define-ibuffer-column "ibuf-macs" "\ @@ -14333,8 +14363,7 @@ bound to the current value of the filter. ;;;*** -;;;### (autoloads nil "ibuffer" "ibuffer.el" (21799 25376 342382 -;;;;;; 265000)) +;;;### (autoloads nil "ibuffer" "ibuffer.el" (21855 577 47945 133000)) ;;; Generated autoloads from ibuffer.el (autoload 'ibuffer-list-buffers "ibuffer" "\ @@ -14373,8 +14402,8 @@ FORMATS is the value to use for `ibuffer-formats'. ;;;*** -;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21797 -;;;;;; 54704 968907 0)) +;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21795 +;;;;;; 44704 594368 994000)) ;;; Generated autoloads from calendar/icalendar.el (push (purecopy '(icalendar 0 19)) package--builtin-versions) @@ -14427,8 +14456,8 @@ buffer `*icalendar-errors*'. ;;;*** -;;;### (autoloads nil "icomplete" "icomplete.el" (21678 60839 749758 -;;;;;; 262000)) +;;;### (autoloads nil "icomplete" "icomplete.el" (21852 24381 607274 +;;;;;; 219000)) ;;; Generated autoloads from icomplete.el (defvar icomplete-mode nil "\ @@ -14467,8 +14496,8 @@ completions: ;;;*** -;;;### (autoloads nil "icon" "progmodes/icon.el" (21678 60840 301780 -;;;;;; 390000)) +;;;### (autoloads nil "icon" "progmodes/icon.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from progmodes/icon.el (autoload 'icon-mode "icon" "\ @@ -14508,8 +14537,8 @@ with no args, if that value is non-nil. ;;;*** -;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21678 -;;;;;; 60840 309780 710000)) +;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21855 +;;;;;; 577 397944 786000)) ;;; Generated autoloads from progmodes/idlw-shell.el (autoload 'idlwave-shell "idlw-shell" "\ @@ -14534,8 +14563,8 @@ See also the variable `idlwave-shell-prompt-pattern'. ;;;*** -;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21678 60840 -;;;;;; 313780 870000)) +;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21862 60209 +;;;;;; 838658 475000)) ;;; Generated autoloads from progmodes/idlwave.el (push (purecopy '(idlwave 6 1 22)) package--builtin-versions) @@ -14607,7 +14636,7 @@ The main features of this mode are 5. Code Templates and Abbreviations -------------------------------- Many Abbreviations are predefined to expand to code fragments and templates. - The abbreviations start generally with a `\\`. Some examples: + The abbreviations start generally with a `\\'. Some examples: \\pr PROCEDURE template \\fu FUNCTION template @@ -14664,7 +14693,7 @@ The main features of this mode are ;;;*** -;;;### (autoloads nil "ido" "ido.el" (21767 20340 942139 827000)) +;;;### (autoloads nil "ido" "ido.el" (21862 60209 728658 929000)) ;;; Generated autoloads from ido.el (defvar ido-mode nil "\ @@ -14926,7 +14955,7 @@ DEF, if non-nil, is the default value. ;;;*** -;;;### (autoloads nil "ielm" "ielm.el" (21694 48017 602102 111000)) +;;;### (autoloads nil "ielm" "ielm.el" (21855 577 47945 133000)) ;;; Generated autoloads from ielm.el (autoload 'ielm "ielm" "\ @@ -14938,7 +14967,7 @@ See `inferior-emacs-lisp-mode' for details. ;;;*** -;;;### (autoloads nil "iimage" "iimage.el" (21678 60839 753758 423000)) +;;;### (autoloads nil "iimage" "iimage.el" (21670 32331 385639 720000)) ;;; Generated autoloads from iimage.el (define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1") @@ -14954,7 +14983,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;*** -;;;### (autoloads nil "image" "image.el" (21678 60839 757758 583000)) +;;;### (autoloads nil "image" "image.el" (21670 32331 385639 720000)) ;;; Generated autoloads from image.el (autoload 'image-type-from-data "image" "\ @@ -15147,8 +15176,8 @@ If Emacs is compiled without ImageMagick support, this does nothing. ;;;*** -;;;### (autoloads nil "image-dired" "image-dired.el" (21678 60839 -;;;;;; 757758 583000)) +;;;### (autoloads nil "image-dired" "image-dired.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from image-dired.el (push (purecopy '(image-dired 0 4 11)) package--builtin-versions) @@ -15285,8 +15314,8 @@ easy-to-use form. ;;;*** -;;;### (autoloads nil "image-file" "image-file.el" (21678 60839 757758 -;;;;;; 583000)) +;;;### (autoloads nil "image-file" "image-file.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from image-file.el (defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\ @@ -15348,8 +15377,8 @@ An image file is one whose name has an extension in ;;;*** -;;;### (autoloads nil "image-mode" "image-mode.el" (21718 7576 278960 -;;;;;; 757000)) +;;;### (autoloads nil "image-mode" "image-mode.el" (21716 41663 456033 +;;;;;; 27000)) ;;; Generated autoloads from image-mode.el (autoload 'image-mode "image-mode" "\ @@ -15396,7 +15425,7 @@ on these modes. ;;;*** -;;;### (autoloads nil "imenu" "imenu.el" (21678 60839 761758 744000)) +;;;### (autoloads nil "imenu" "imenu.el" (21670 32331 385639 720000)) ;;; Generated autoloads from imenu.el (defvar imenu-sort-function nil "\ @@ -15534,8 +15563,8 @@ for more information. ;;;*** -;;;### (autoloads nil "ind-util" "language/ind-util.el" (21678 60839 -;;;;;; 813760 834000)) +;;;### (autoloads nil "ind-util" "language/ind-util.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from language/ind-util.el (autoload 'indian-compose-region "ind-util" "\ @@ -15565,8 +15594,8 @@ Convert old Emacs Devanagari characters to UCS. ;;;*** -;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21678 60840 -;;;;;; 317781 30000)) +;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/inf-lisp.el (autoload 'inferior-lisp "inf-lisp" "\ @@ -15584,7 +15613,7 @@ of `inferior-lisp-program'). Runs the hooks from ;;;*** -;;;### (autoloads nil "info" "info.el" (21678 60839 765758 905000)) +;;;### (autoloads nil "info" "info.el" (21862 60209 738095 873000)) ;;; Generated autoloads from info.el (defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\ @@ -15796,8 +15825,8 @@ completion alternatives to currently visited manuals. ;;;*** -;;;### (autoloads nil "info-look" "info-look.el" (21763 18426 747793 -;;;;;; 948000)) +;;;### (autoloads nil "info-look" "info-look.el" (21862 60209 738095 +;;;;;; 873000)) ;;; Generated autoloads from info-look.el (autoload 'info-lookup-reset "info-look" "\ @@ -15844,8 +15873,8 @@ Perform completion on file preceding point. ;;;*** -;;;### (autoloads nil "info-xref" "info-xref.el" (21678 60839 761758 -;;;;;; 744000)) +;;;### (autoloads nil "info-xref" "info-xref.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from info-xref.el (push (purecopy '(info-xref 3)) package--builtin-versions) @@ -15928,8 +15957,8 @@ the sources handy. ;;;*** -;;;### (autoloads nil "informat" "informat.el" (21678 60839 765758 -;;;;;; 905000)) +;;;### (autoloads nil "informat" "informat.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from informat.el (autoload 'Info-tagify "informat" "\ @@ -15974,8 +16003,8 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\" ;;;*** -;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21678 60839 -;;;;;; 481747 492000)) +;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/inline.el (autoload 'define-inline "inline" "\ @@ -15989,8 +16018,8 @@ For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\" ;;;*** -;;;### (autoloads nil "inversion" "cedet/inversion.el" (21678 60839 -;;;;;; 349742 188000)) +;;;### (autoloads nil "inversion" "cedet/inversion.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from cedet/inversion.el (push (purecopy '(inversion 1 3)) package--builtin-versions) @@ -16002,8 +16031,8 @@ Only checks one based on which kind of Emacs is being run. ;;;*** -;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21678 -;;;;;; 60839 769759 66000)) +;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from international/isearch-x.el (autoload 'isearch-toggle-specified-input-method "isearch-x" "\ @@ -16023,8 +16052,8 @@ Toggle input method in interactive search. ;;;*** -;;;### (autoloads nil "isearchb" "isearchb.el" (21767 20340 942139 -;;;;;; 827000)) +;;;### (autoloads nil "isearchb" "isearchb.el" (21767 65327 504606 +;;;;;; 256000)) ;;; Generated autoloads from isearchb.el (push (purecopy '(isearchb 1 5)) package--builtin-versions) @@ -16038,8 +16067,8 @@ accessed via isearchb. ;;;*** -;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21678 -;;;;;; 60839 769759 66000)) +;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from international/iso-cvt.el (autoload 'iso-spanish "iso-cvt" "\ @@ -16130,15 +16159,15 @@ Add submenus to the File menu, to convert to and from various formats. ;;;*** ;;;### (autoloads nil "iso-transl" "international/iso-transl.el" -;;;;;; (21678 60839 769759 66000)) +;;;;;; (21840 19142 552627 956000)) ;;; Generated autoloads from international/iso-transl.el (define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map) (autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap) ;;;*** -;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21756 63738 -;;;;;; 22469 950000)) +;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21855 577 527945 +;;;;;; 248000)) ;;; Generated autoloads from textmodes/ispell.el (put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive)))) @@ -16371,8 +16400,8 @@ You can bind this to the key C-c i in GNUS or mail by adding to ;;;*** -;;;### (autoloads nil "japan-util" "language/japan-util.el" (21678 -;;;;;; 60839 817760 994000)) +;;;### (autoloads nil "japan-util" "language/japan-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/japan-util.el (autoload 'setup-japanese-environment-internal "japan-util" "\ @@ -16449,8 +16478,8 @@ If non-nil, second arg INITIAL-INPUT is a string to insert before reading. ;;;*** -;;;### (autoloads nil "jka-compr" "jka-compr.el" (21678 60839 793760 -;;;;;; 30000)) +;;;### (autoloads nil "jka-compr" "jka-compr.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from jka-compr.el (defvar jka-compr-inhibit nil "\ @@ -16473,8 +16502,8 @@ by `jka-compr-installed'. ;;;*** -;;;### (autoloads nil "js" "progmodes/js.el" (21790 46509 351608 -;;;;;; 183000)) +;;;### (autoloads nil "js" "progmodes/js.el" (21833 59993 694773 +;;;;;; 201000)) ;;; Generated autoloads from progmodes/js.el (push (purecopy '(js 9)) package--builtin-versions) @@ -16488,14 +16517,14 @@ Major mode for editing JavaScript. ;;;*** -;;;### (autoloads nil "json" "json.el" (21779 20029 611175 954000)) +;;;### (autoloads nil "json" "json.el" (21779 56495 106033 935000)) ;;; Generated autoloads from json.el (push (purecopy '(json 1 4)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "keypad" "emulation/keypad.el" (21678 60839 -;;;;;; 505748 457000)) +;;;### (autoloads nil "keypad" "emulation/keypad.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emulation/keypad.el (defvar keypad-setup nil "\ @@ -16550,8 +16579,8 @@ the decimal key on the keypad is mapped to DECIMAL instead of `.' ;;;*** -;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21678 -;;;;;; 60839 773759 227000)) +;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from international/kinsoku.el (autoload 'kinsoku "kinsoku" "\ @@ -16572,8 +16601,8 @@ the context of text formatting. ;;;*** -;;;### (autoloads nil "kkc" "international/kkc.el" (21678 60839 773759 -;;;;;; 227000)) +;;;### (autoloads nil "kkc" "international/kkc.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from international/kkc.el (defvar kkc-after-update-conversion-functions nil "\ @@ -16595,7 +16624,7 @@ and the return value is the length of the conversion. ;;;*** -;;;### (autoloads nil "kmacro" "kmacro.el" (21678 60839 793760 30000)) +;;;### (autoloads nil "kmacro" "kmacro.el" (21670 32331 385639 720000)) ;;; Generated autoloads from kmacro.el (global-set-key "\C-x(" 'kmacro-start-macro) (global-set-key "\C-x)" 'kmacro-end-macro) @@ -16707,8 +16736,8 @@ If kbd macro currently being defined end it before activating it. ;;;*** -;;;### (autoloads nil "korea-util" "language/korea-util.el" (21678 -;;;;;; 60839 817760 994000)) +;;;### (autoloads nil "korea-util" "language/korea-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/korea-util.el (defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\ @@ -16722,8 +16751,8 @@ The kind of Korean keyboard for Korean input method. ;;;*** -;;;### (autoloads nil "landmark" "play/landmark.el" (21678 60840 -;;;;;; 209776 710000)) +;;;### (autoloads nil "landmark" "play/landmark.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from play/landmark.el (push (purecopy '(landmark 1 0)) package--builtin-versions) @@ -16754,8 +16783,8 @@ Use \\[describe-mode] for more info. ;;;*** -;;;### (autoloads nil "lao-util" "language/lao-util.el" (21678 60839 -;;;;;; 817760 994000)) +;;;### (autoloads nil "lao-util" "language/lao-util.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from language/lao-util.el (autoload 'lao-compose-string "lao-util" "\ @@ -16792,8 +16821,8 @@ Transcribe Romanized Lao string STR to Lao character string. ;;;*** -;;;### (autoloads nil "latexenc" "international/latexenc.el" (21678 -;;;;;; 60839 773759 227000)) +;;;### (autoloads nil "latexenc" "international/latexenc.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from international/latexenc.el (defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\ @@ -16825,7 +16854,7 @@ coding system names is determined from `latex-inputenc-coding-alist'. ;;;*** ;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el" -;;;;;; (21678 60839 773759 227000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from international/latin1-disp.el (defvar latin1-display nil "\ @@ -16866,8 +16895,8 @@ use either \\[customize] or the function `latin1-display'.") ;;;*** -;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21678 -;;;;;; 60840 317781 30000)) +;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/ld-script.el (autoload 'ld-script-mode "ld-script" "\ @@ -16877,8 +16906,8 @@ A major mode to edit GNU ld script files ;;;*** -;;;### (autoloads nil "let-alist" "let-alist.el" (21678 60839 865762 -;;;;;; 924000)) +;;;### (autoloads nil "let-alist" "let-alist.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from let-alist.el (push (purecopy '(let-alist 1 0 3)) package--builtin-versions) @@ -16917,7 +16946,7 @@ displayed in the example above. ;;;*** -;;;### (autoloads nil "life" "play/life.el" (21678 60840 209776 710000)) +;;;### (autoloads nil "life" "play/life.el" (21670 32331 385639 720000)) ;;; Generated autoloads from play/life.el (autoload 'life "life" "\ @@ -16930,7 +16959,7 @@ generations (this defaults to 1). ;;;*** -;;;### (autoloads nil "linum" "linum.el" (21678 60839 865762 924000)) +;;;### (autoloads nil "linum" "linum.el" (21855 577 57945 485000)) ;;; Generated autoloads from linum.el (push (purecopy '(linum 0 9 24)) package--builtin-versions) @@ -16967,8 +16996,8 @@ See `linum-mode' for more information on Linum mode. ;;;*** -;;;### (autoloads nil "loadhist" "loadhist.el" (21678 60839 865762 -;;;;;; 924000)) +;;;### (autoloads nil "loadhist" "loadhist.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from loadhist.el (autoload 'unload-feature "loadhist" "\ @@ -16999,7 +17028,7 @@ something strange, such as redefining an Emacs function. ;;;*** -;;;### (autoloads nil "locate" "locate.el" (21678 60839 865762 924000)) +;;;### (autoloads nil "locate" "locate.el" (21670 32331 385639 720000)) ;;; Generated autoloads from locate.el (defvar locate-ls-subdir-switches (purecopy "-al") "\ @@ -17051,8 +17080,8 @@ except that FILTER is not optional. ;;;*** -;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21803 61751 305340 -;;;;;; 145000)) +;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21852 24382 97237 +;;;;;; 703000)) ;;; Generated autoloads from vc/log-edit.el (autoload 'log-edit "log-edit" "\ @@ -17083,8 +17112,8 @@ done. Otherwise, it uses the current buffer. ;;;*** -;;;### (autoloads nil "log-view" "vc/log-view.el" (21678 60840 529789 -;;;;;; 511000)) +;;;### (autoloads nil "log-view" "vc/log-view.el" (21850 34915 117255 +;;;;;; 375000)) ;;; Generated autoloads from vc/log-view.el (autoload 'log-view-mode "log-view" "\ @@ -17094,7 +17123,7 @@ Major mode for browsing CVS log output. ;;;*** -;;;### (autoloads nil "lpr" "lpr.el" (21678 60839 865762 924000)) +;;;### (autoloads nil "lpr" "lpr.el" (21670 32331 385639 720000)) ;;; Generated autoloads from lpr.el (defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\ @@ -17189,8 +17218,7 @@ for further customization of the printer command. ;;;*** -;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21678 60839 865762 -;;;;;; 924000)) +;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21855 577 57945 485000)) ;;; Generated autoloads from ls-lisp.el (defvar ls-lisp-support-shell-wildcards t "\ @@ -17201,8 +17229,8 @@ Otherwise they are treated as Emacs regexps (for backward compatibility).") ;;;*** -;;;### (autoloads nil "lunar" "calendar/lunar.el" (21678 60839 321741 -;;;;;; 62000)) +;;;### (autoloads nil "lunar" "calendar/lunar.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from calendar/lunar.el (autoload 'lunar-phases "lunar" "\ @@ -17214,8 +17242,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21678 60840 -;;;;;; 317781 30000)) +;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/m4-mode.el (autoload 'm4-mode "m4-mode" "\ @@ -17225,7 +17253,7 @@ A major mode to edit m4 macro files. ;;;*** -;;;### (autoloads nil "macros" "macros.el" (21678 60839 869763 84000)) +;;;### (autoloads nil "macros" "macros.el" (21670 32331 385639 720000)) ;;; Generated autoloads from macros.el (autoload 'name-last-kbd-macro "macros" "\ @@ -17314,8 +17342,8 @@ and then select the region of un-tablified names and use ;;;*** -;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21678 60839 -;;;;;; 869763 84000)) +;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/mail-extr.el (autoload 'mail-extract-address-components "mail-extr" "\ @@ -17345,8 +17373,8 @@ Convert mail domain DOMAIN to the country it corresponds to. ;;;*** -;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/mail-hist.el (autoload 'mail-hist-define-keys "mail-hist" "\ @@ -17375,8 +17403,8 @@ This function normally would be called when the message is sent. ;;;*** -;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/mail-utils.el (defvar mail-use-rfc822 nil "\ @@ -17450,8 +17478,8 @@ matches may be returned from the message body. ;;;*** -;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21850 35149 +;;;;;; 497265 880000)) ;;; Generated autoloads from mail/mailabbrev.el (defvar mail-abbrevs-mode nil "\ @@ -17500,13 +17528,13 @@ double-quotes. ;;;*** -;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21855 577 +;;;;;; 57945 485000)) ;;; Generated autoloads from mail/mailalias.el (defvar mail-complete-style 'angles "\ Specifies how \\[mail-complete] formats the full name when it completes. -If `nil', they contain just the return address like: +If nil, they contain just the return address like: king@grassland.com If `parens', they look like: king@grassland.com (Elvis Parsley) @@ -17554,8 +17582,8 @@ current header, calls `mail-complete-function' and passes prefix ARG if any. ;;;*** -;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/mailclient.el (autoload 'mailclient-send-it "mailclient" "\ @@ -17567,8 +17595,8 @@ The mail client is taken to be the handler of mailto URLs. ;;;*** -;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21678 -;;;;;; 60840 321781 190000)) +;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/make-mode.el (autoload 'makefile-mode "make-mode" "\ @@ -17685,8 +17713,8 @@ An adapted `makefile-mode' that knows about imake. ;;;*** -;;;### (autoloads nil "makesum" "makesum.el" (21678 60839 893764 -;;;;;; 49000)) +;;;### (autoloads nil "makesum" "makesum.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from makesum.el (autoload 'make-command-summary "makesum" "\ @@ -17697,7 +17725,7 @@ Previous contents of that buffer are killed first. ;;;*** -;;;### (autoloads nil "man" "man.el" (21678 60839 893764 49000)) +;;;### (autoloads nil "man" "man.el" (21814 9129 320508 708000)) ;;; Generated autoloads from man.el (defalias 'manual-entry 'man) @@ -17753,7 +17781,7 @@ Default bookmark handler for Man buffers. ;;;*** -;;;### (autoloads nil "master" "master.el" (21678 60839 893764 49000)) +;;;### (autoloads nil "master" "master.el" (21670 32331 385639 720000)) ;;; Generated autoloads from master.el (push (purecopy '(master 1 0 2)) package--builtin-versions) @@ -17776,8 +17804,8 @@ yourself the value of `master-of' by calling `master-show-slave'. ;;;*** -;;;### (autoloads nil "mb-depth" "mb-depth.el" (21678 60839 893764 -;;;;;; 49000)) +;;;### (autoloads nil "mb-depth" "mb-depth.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from mb-depth.el (defvar minibuffer-depth-indicate-mode nil "\ @@ -17804,14 +17832,14 @@ recursion depth in the minibuffer prompt. This is only useful if ;;;*** -;;;### (autoloads nil "md4" "md4.el" (21678 60839 897764 210000)) +;;;### (autoloads nil "md4" "md4.el" (21670 32331 385639 720000)) ;;; Generated autoloads from md4.el (push (purecopy '(md4 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "message" "gnus/message.el" (21803 61751 293340 -;;;;;; 642000)) +;;;### (autoloads nil "message" "gnus/message.el" (21855 576 917950 +;;;;;; 620000)) ;;; Generated autoloads from gnus/message.el (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) @@ -17976,8 +18004,8 @@ which specify the range to operate on. ;;;*** -;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21678 -;;;;;; 60840 321781 190000)) +;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/meta-mode.el (push (purecopy '(meta-mode 1 0)) package--builtin-versions) @@ -17993,8 +18021,8 @@ Major mode for editing MetaPost sources. ;;;*** -;;;### (autoloads nil "metamail" "mail/metamail.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "metamail" "mail/metamail.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/metamail.el (autoload 'metamail-interpret-header "metamail" "\ @@ -18037,8 +18065,8 @@ redisplayed as output is inserted. ;;;*** -;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21678 60839 913764 -;;;;;; 853000)) +;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from mh-e/mh-comp.el (autoload 'mh-smail "mh-comp" "\ @@ -18128,7 +18156,7 @@ delete the draft message. ;;;*** -;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21678 60839 917765 13000)) +;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21670 32331 385639 720000)) ;;; Generated autoloads from mh-e/mh-e.el (push (purecopy '(mh-e 8 6)) package--builtin-versions) @@ -18145,8 +18173,8 @@ Display version information about MH-E and the MH mail handling system. ;;;*** -;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21678 60839 -;;;;;; 917765 13000)) +;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mh-e/mh-folder.el (autoload 'mh-rmail "mh-folder" "\ @@ -18227,10 +18255,24 @@ perform the operation on all messages in that region. ;;;*** -;;;### (autoloads nil "midnight" "midnight.el" (21678 60839 937765 -;;;;;; 817000)) +;;;### (autoloads nil "midnight" "midnight.el" (21822 58098 20521 +;;;;;; 61000)) ;;; Generated autoloads from midnight.el +(defvar midnight-mode nil "\ +Non-nil if Midnight mode is enabled. +See the command `midnight-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `midnight-mode'.") + +(custom-autoload 'midnight-mode "midnight" nil) + +(autoload 'midnight-mode "midnight" "\ +Non-nil means run `midnight-hook' at midnight. + +\(fn &optional ARG)" t nil) + (autoload 'clean-buffer-list "midnight" "\ Kill old buffers that have not been displayed recently. The relevant variables are `clean-buffer-list-delay-general', @@ -18254,8 +18296,8 @@ to its second argument TM. ;;;*** -;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21678 60839 -;;;;;; 937765 817000)) +;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from minibuf-eldef.el (defvar minibuffer-electric-default-mode nil "\ @@ -18284,7 +18326,7 @@ is modified to remove the default indication. ;;;*** -;;;### (autoloads nil "misc" "misc.el" (21678 60839 941765 977000)) +;;;### (autoloads nil "misc" "misc.el" (21670 32331 385639 720000)) ;;; Generated autoloads from misc.el (autoload 'butterfly "misc" "\ @@ -18312,8 +18354,7 @@ The return value is always nil. ;;;*** -;;;### (autoloads nil "misearch" "misearch.el" (21797 54705 52905 -;;;;;; 188000)) +;;;### (autoloads nil "misearch" "misearch.el" (21797 36 720489 297000)) ;;; Generated autoloads from misearch.el (add-hook 'isearch-mode-hook 'multi-isearch-setup) @@ -18401,8 +18442,8 @@ whose file names match the specified wildcard. ;;;*** -;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21678 -;;;;;; 60840 321781 190000)) +;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/mixal-mode.el (push (purecopy '(mixal-mode 0 1)) package--builtin-versions) @@ -18413,8 +18454,8 @@ Major mode for the mixal asm language. ;;;*** -;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21678 60839 -;;;;;; 697756 173000)) +;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/mm-encode.el (autoload 'mm-default-file-encoding "mm-encode" "\ @@ -18424,8 +18465,8 @@ Return a default encoding for FILE. ;;;*** -;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21678 60839 -;;;;;; 697756 173000)) +;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/mm-extern.el (autoload 'mm-extern-cache-contents "mm-extern" "\ @@ -18443,8 +18484,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** -;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21678 60839 -;;;;;; 697756 173000)) +;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/mm-partial.el (autoload 'mm-inline-partial "mm-partial" "\ @@ -18457,8 +18498,8 @@ If NO-DISPLAY is nil, display it. Otherwise, do nothing after replacing. ;;;*** -;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21678 60839 697756 -;;;;;; 173000)) +;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/mm-url.el (autoload 'mm-url-insert-file-contents "mm-url" "\ @@ -18474,8 +18515,8 @@ Insert file contents of URL using `mm-url-program'. ;;;*** -;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21678 60839 697756 -;;;;;; 173000)) +;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/mm-uu.el (autoload 'mm-uu-dissect "mm-uu" "\ @@ -18494,7 +18535,7 @@ Assume text has been decoded if DECODED is non-nil. ;;;*** -;;;### (autoloads nil "mml" "gnus/mml.el" (21678 60839 701756 333000)) +;;;### (autoloads nil "mml" "gnus/mml.el" (21826 49866 790514 606000)) ;;; Generated autoloads from gnus/mml.el (autoload 'mml-to-mime "mml" "\ @@ -18519,8 +18560,8 @@ body) or \"attachment\" (separate from the body). ;;;*** -;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21678 60839 701756 -;;;;;; 333000)) +;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/mml1991.el (autoload 'mml1991-encrypt "mml1991" "\ @@ -18535,8 +18576,8 @@ body) or \"attachment\" (separate from the body). ;;;*** -;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21678 60839 701756 -;;;;;; 333000)) +;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/mml2015.el (autoload 'mml2015-decrypt "mml2015" "\ @@ -18576,16 +18617,16 @@ body) or \"attachment\" (separate from the body). ;;;*** -;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21678 60839 -;;;;;; 349742 188000)) +;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21862 60209 +;;;;;; 618658 448000)) ;;; Generated autoloads from cedet/mode-local.el (put 'define-overloadable-function 'doc-string-elt 3) ;;;*** -;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21605 26937 -;;;;;; 524012 932000)) +;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21607 54478 +;;;;;; 800121 42000)) ;;; Generated autoloads from progmodes/modula2.el (defalias 'modula-2-mode 'm2-mode) @@ -18618,8 +18659,8 @@ followed by the first character of the construct. ;;;*** -;;;### (autoloads nil "morse" "play/morse.el" (21678 60840 209776 -;;;;;; 710000)) +;;;### (autoloads nil "morse" "play/morse.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/morse.el (autoload 'morse-region "morse" "\ @@ -18644,8 +18685,8 @@ Convert NATO phonetic alphabet in region to ordinary ASCII text. ;;;*** -;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21678 60839 949766 -;;;;;; 299000)) +;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from mouse-drag.el (autoload 'mouse-drag-throw "mouse-drag" "\ @@ -18692,7 +18733,7 @@ To test this function, evaluate: ;;;*** -;;;### (autoloads nil "mpc" "mpc.el" (21678 60839 953766 460000)) +;;;### (autoloads nil "mpc" "mpc.el" (21670 32331 385639 720000)) ;;; Generated autoloads from mpc.el (autoload 'mpc "mpc" "\ @@ -18702,7 +18743,7 @@ Main entry point for MPC. ;;;*** -;;;### (autoloads nil "mpuz" "play/mpuz.el" (21678 60840 209776 710000)) +;;;### (autoloads nil "mpuz" "play/mpuz.el" (21670 32331 385639 720000)) ;;; Generated autoloads from play/mpuz.el (autoload 'mpuz "mpuz" "\ @@ -18712,7 +18753,7 @@ Multiplication puzzle with GNU Emacs. ;;;*** -;;;### (autoloads nil "msb" "msb.el" (21678 60839 953766 460000)) +;;;### (autoloads nil "msb" "msb.el" (21670 32331 385639 720000)) ;;; Generated autoloads from msb.el (defvar msb-mode nil "\ @@ -18737,8 +18778,8 @@ different buffer menu using the function `msb'. ;;;*** -;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21678 -;;;;;; 60839 777759 387000)) +;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21862 +;;;;;; 60209 748658 481000)) ;;; Generated autoloads from international/mule-diag.el (autoload 'list-character-sets "mule-diag" "\ @@ -18870,8 +18911,8 @@ The default is 20. If LIMIT is negative, do not limit the listing. ;;;*** -;;;### (autoloads nil "mule-util" "international/mule-util.el" (21678 -;;;;;; 60839 781759 548000)) +;;;### (autoloads nil "mule-util" "international/mule-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from international/mule-util.el (defsubst string-to-list (string) "\ @@ -19002,8 +19043,8 @@ per-character basis, this may not be accurate. ;;;*** -;;;### (autoloads nil "net-utils" "net/net-utils.el" (21706 14224 -;;;;;; 285958 900000)) +;;;### (autoloads nil "net-utils" "net/net-utils.el" (21826 50071 +;;;;;; 80489 638000)) ;;; Generated autoloads from net/net-utils.el (autoload 'ifconfig "net-utils" "\ @@ -19097,8 +19138,8 @@ Open a network connection to HOST on PORT. ;;;*** -;;;### (autoloads nil "netrc" "net/netrc.el" (21678 60839 973767 -;;;;;; 264000)) +;;;### (autoloads nil "netrc" "net/netrc.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from net/netrc.el (autoload 'netrc-credentials "netrc" "\ @@ -19110,8 +19151,8 @@ listed in the PORTS list. ;;;*** -;;;### (autoloads nil "network-stream" "net/network-stream.el" (21718 -;;;;;; 7576 278960 757000)) +;;;### (autoloads nil "network-stream" "net/network-stream.el" (21855 +;;;;;; 577 147947 107000)) ;;; Generated autoloads from net/network-stream.el (autoload 'open-network-stream "network-stream" "\ @@ -19184,7 +19225,7 @@ values: :client-certificate should either be a list where the first element is the certificate key file name, and the second - element is the certificate file name itself, or `t', which + element is the certificate file name itself, or t, which means that `auth-source' will be queried for the key and the certificate. This parameter will only be used when doing TLS or STARTTLS connections. @@ -19207,8 +19248,8 @@ asynchronously, if possible. ;;;*** -;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21678 -;;;;;; 60839 977767 424000)) +;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from net/newst-backend.el (autoload 'newsticker-running-p "newst-backend" "\ @@ -19230,7 +19271,7 @@ Run `newsticker-start-hook' if newsticker was not running already. ;;;*** ;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el" -;;;;;; (21678 60839 977767 424000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from net/newst-plainview.el (autoload 'newsticker-plainview "newst-plainview" "\ @@ -19240,8 +19281,8 @@ Start newsticker plainview. ;;;*** -;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21678 -;;;;;; 60839 977767 424000)) +;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from net/newst-reader.el (autoload 'newsticker-show-news "newst-reader" "\ @@ -19251,8 +19292,8 @@ Start reading news. You may want to bind this to a key. ;;;*** -;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21678 -;;;;;; 60839 977767 424000)) +;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from net/newst-ticker.el (autoload 'newsticker-ticker-running-p "newst-ticker" "\ @@ -19272,8 +19313,8 @@ running already. ;;;*** -;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21678 -;;;;;; 60839 981767 585000)) +;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from net/newst-treeview.el (autoload 'newsticker-treeview "newst-treeview" "\ @@ -19283,8 +19324,8 @@ Start newsticker treeview. ;;;*** -;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21678 60839 705756 -;;;;;; 494000)) +;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/nndiary.el (autoload 'nndiary-generate-nov-databases "nndiary" "\ @@ -19294,8 +19335,7 @@ Generate NOV databases in all nndiary directories. ;;;*** -;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21678 60839 705756 -;;;;;; 494000)) +;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21855 576 927958 586000)) ;;; Generated autoloads from gnus/nndoc.el (autoload 'nndoc-add-type "nndoc" "\ @@ -19309,8 +19349,8 @@ symbol in the alist. ;;;*** -;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21678 60839 -;;;;;; 709756 654000)) +;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/nnfolder.el (autoload 'nnfolder-generate-active-file "nnfolder" "\ @@ -19321,7 +19361,7 @@ This command does not work if you use short group names. ;;;*** -;;;### (autoloads nil "nnml" "gnus/nnml.el" (21678 60839 717756 976000)) +;;;### (autoloads nil "nnml" "gnus/nnml.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gnus/nnml.el (autoload 'nnml-generate-nov-databases "nnml" "\ @@ -19331,7 +19371,7 @@ Generate NOV databases in all nnml directories. ;;;*** -;;;### (autoloads nil "novice" "novice.el" (21678 60840 13768 869000)) +;;;### (autoloads nil "novice" "novice.el" (21670 32331 385639 720000)) ;;; Generated autoloads from novice.el (define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1") @@ -19363,8 +19403,8 @@ future sessions. ;;;*** -;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21678 -;;;;;; 60840 457786 630000)) +;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from textmodes/nroff-mode.el (autoload 'nroff-mode "nroff-mode" "\ @@ -19378,14 +19418,14 @@ closing requests for requests that are used in matched pairs. ;;;*** -;;;### (autoloads nil "ntlm" "net/ntlm.el" (21678 60839 981767 585000)) +;;;### (autoloads nil "ntlm" "net/ntlm.el" (21670 32331 385639 720000)) ;;; Generated autoloads from net/ntlm.el (push (purecopy '(ntlm 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21678 60840 -;;;;;; 13768 869000)) +;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/nxml-glyph.el (autoload 'nxml-glyph-display-string "nxml-glyph" "\ @@ -19397,8 +19437,8 @@ Return nil if the face cannot display a glyph for N. ;;;*** -;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21678 60840 -;;;;;; 17769 29000)) +;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/nxml-mode.el (autoload 'nxml-mode "nxml-mode" "\ @@ -19458,8 +19498,8 @@ Many aspects this mode can be customized using ;;;*** -;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21678 60840 -;;;;;; 17769 29000)) +;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/nxml-uchnm.el (autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\ @@ -19471,8 +19511,8 @@ the variable `nxml-enabled-unicode-blocks'. ;;;*** -;;;### (autoloads nil "octave" "progmodes/octave.el" (21694 48017 -;;;;;; 610101 961000)) +;;;### (autoloads nil "octave" "progmodes/octave.el" (21695 35516 +;;;;;; 595262 313000)) ;;; Generated autoloads from progmodes/octave.el (autoload 'octave-mode "octave" "\ @@ -19509,8 +19549,8 @@ startup file, `~/.emacs-octave'. ;;;*** -;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21678 60840 -;;;;;; 325781 350000)) +;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/opascal.el (define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4") @@ -19545,7 +19585,7 @@ Coloring: ;;;*** -;;;### (autoloads nil "org" "org/org.el" (21804 3763 242436 828000)) +;;;### (autoloads nil "org" "org/org.el" (21866 57262 677944 752000)) ;;; Generated autoloads from org/org.el (autoload 'org-babel-do-load-languages "org" "\ @@ -19766,8 +19806,8 @@ Call the customize function with org as argument. ;;;*** -;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21804 3763 -;;;;;; 222437 179000)) +;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21862 60209 +;;;;;; 818658 502000)) ;;; Generated autoloads from org/org-agenda.el (autoload 'org-toggle-sticky-agenda "org-agenda" "\ @@ -20040,8 +20080,8 @@ to override `appt-message-warning-time'. ;;;*** -;;;### (autoloads nil "org-capture" "org/org-capture.el" (21678 60840 -;;;;;; 117773 29000)) +;;;### (autoloads nil "org-capture" "org/org-capture.el" (21855 577 +;;;;;; 287944 835000)) ;;; Generated autoloads from org/org-capture.el (autoload 'org-capture-string "org-capture" "\ @@ -20083,8 +20123,8 @@ Set `org-capture-templates' to be similar to `org-remember-templates'. ;;;*** -;;;### (autoloads nil "org-colview" "org/org-colview.el" (21804 3763 -;;;;;; 222437 179000)) +;;;### (autoloads nil "org-colview" "org/org-colview.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from org/org-colview.el (autoload 'org-columns-remove-overlays "org-colview" "\ @@ -20147,8 +20187,8 @@ Turn on or update column view in the agenda. ;;;*** -;;;### (autoloads nil "org-compat" "org/org-compat.el" (21678 60840 -;;;;;; 121773 189000)) +;;;### (autoloads nil "org-compat" "org/org-compat.el" (21852 24381 +;;;;;; 787238 943000)) ;;; Generated autoloads from org/org-compat.el (autoload 'org-check-version "org-compat" "\ @@ -20158,8 +20198,8 @@ Try very hard to provide sensible version strings. ;;;*** -;;;### (autoloads nil "org-macs" "org/org-macs.el" (21678 60840 137773 -;;;;;; 829000)) +;;;### (autoloads nil "org-macs" "org/org-macs.el" (21855 577 287944 +;;;;;; 835000)) ;;; Generated autoloads from org/org-macs.el (autoload 'org-load-noerror-mustsuffix "org-macs" "\ @@ -20169,8 +20209,8 @@ Load FILE with optional arguments NOERROR and MUSTSUFFIX. Drop the MUSTSUFFIX a ;;;*** -;;;### (autoloads nil "org-version" "org/org-version.el" (21605 26937 -;;;;;; 304017 159000)) +;;;### (autoloads nil "org-version" "org/org-version.el" (21607 54478 +;;;;;; 800121 42000)) ;;; Generated autoloads from org/org-version.el (autoload 'org-release "org-version" "\ @@ -20187,8 +20227,8 @@ The Git version of org-mode. ;;;*** -;;;### (autoloads nil "outline" "outline.el" (21719 45321 591080 -;;;;;; 883000)) +;;;### (autoloads nil "outline" "outline.el" (21720 38720 956749 +;;;;;; 443000)) ;;; Generated autoloads from outline.el (put 'outline-regexp 'safe-local-variable 'stringp) (put 'outline-heading-end-regexp 'safe-local-variable 'stringp) @@ -20231,8 +20271,8 @@ See the command `outline-mode' for more information on this mode. ;;;*** -;;;### (autoloads nil "package" "emacs-lisp/package.el" (21803 61751 -;;;;;; 265341 801000)) +;;;### (autoloads nil "package" "emacs-lisp/package.el" (21865 36399 +;;;;;; 18126 278000)) ;;; Generated autoloads from emacs-lisp/package.el (push (purecopy '(package 1 0 1)) package--builtin-versions) @@ -20278,14 +20318,11 @@ in an archive in `package-archives'. Interactively, prompt for its name. If called interactively or if DONT-SELECT nil, add PKG to `package-selected-packages'. -If ASYNC is non-nil, perform the downloads asynchronously. -If CALLBACK is non-nil, call it with no arguments once the -entire operation is done. If PKG is a package-desc and it is already installed, don't try to install it but still mark it as selected. -\(fn PKG &optional DONT-SELECT ASYNC CALLBACK)" t nil) +\(fn PKG &optional DONT-SELECT)" t nil) (autoload 'package-install-from-buffer "package" "\ Install a package from the current buffer. @@ -20307,7 +20344,7 @@ The file can either be a tar file or an Emacs Lisp file. \(fn FILE)" t nil) -(autoload 'package-install-user-selected-packages "package" "\ +(autoload 'package-install-selected-packages "package" "\ Ensure packages in `package-selected-packages' are installed. If some packages are not installed propose to install them. @@ -20346,7 +20383,7 @@ The list is displayed in a buffer named `*Packages*'. ;;;*** -;;;### (autoloads nil "paren" "paren.el" (21678 60840 193776 69000)) +;;;### (autoloads nil "paren" "paren.el" (21670 32331 385639 720000)) ;;; Generated autoloads from paren.el (defvar show-paren-mode nil "\ @@ -20372,8 +20409,8 @@ matching parenthesis is highlighted in `show-paren-style' after ;;;*** -;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21678 -;;;;;; 60839 321741 62000)) +;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from calendar/parse-time.el (put 'parse-time-rules 'risky-local-variable t) @@ -20386,8 +20423,8 @@ unknown are returned as nil. ;;;*** -;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21678 60840 -;;;;;; 329781 510000)) +;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/pascal.el (autoload 'pascal-mode "pascal" "\ @@ -20436,8 +20473,8 @@ See also the user variables `pascal-type-keywords', `pascal-start-keywords' and ;;;*** -;;;### (autoloads nil "password-cache" "password-cache.el" (21678 -;;;;;; 60840 193776 69000)) +;;;### (autoloads nil "password-cache" "password-cache.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from password-cache.el (defvar password-cache t "\ @@ -20458,25 +20495,25 @@ Check if KEY is in the cache. ;;;*** -;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21804 3853 736850 -;;;;;; 365000)) +;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21862 60209 +;;;;;; 658658 512000)) ;;; Generated autoloads from emacs-lisp/pcase.el (autoload 'pcase "pcase" "\ Perform ML-style pattern matching on EXP. -CASES is a list of elements of the form (UPATTERN CODE...). +CASES is a list of elements of the form (PATTERN CODE...). -UPatterns can take the following forms: +Patterns can take the following forms: _ matches anything. SELFQUOTING matches itself. This includes keywords, numbers, and strings. SYMBOL matches anything and binds it to SYMBOL. - (or UPAT...) matches if any of the patterns matches. - (and UPAT...) matches if all the patterns match. + (or PAT...) matches if any of the patterns matches. + (and PAT...) matches if all the patterns match. 'VAL matches if the object is `equal' to VAL (pred FUN) matches if FUN applied to the object returns non-nil. (guard BOOLEXP) matches if BOOLEXP evaluates to non-nil. - (let UPAT EXP) matches if EXP matches UPAT. - (app FUN UPAT) matches if FUN applied to the object matches UPAT. + (let PAT EXP) matches if EXP matches PAT. + (app FUN PAT) matches if FUN applied to the object matches PAT. If a SYMBOL is used twice in the same pattern (i.e. the pattern is \"non-linear\"), then the second occurrence is turned into an `eq'uality test. @@ -20489,8 +20526,8 @@ FUN can refer to variables bound earlier in the pattern. FUN is assumed to be pure, i.e. it can be dropped if its result is not used, and two identical calls can be merged into one. E.g. you can match pairs where the cdr is larger than the car with a pattern -like `(,a . ,(pred (< a))) or, with more checks: -`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) +like \\=`(,a . ,(pred (< a))) or, with more checks: +\\=`(,(and a (pred numberp)) . ,(and (pred numberp) (pred (< a)))) Additional patterns can be defined via `pcase-defmacro'. Currently, the following patterns are provided this way: @@ -20507,7 +20544,7 @@ The exhaustive version of `pcase' (which see). (function-put 'pcase-exhaustive 'lisp-indent-function '1) (autoload 'pcase-lambda "pcase" "\ -Like `lambda' but allow each argument to be a UPattern. +Like `lambda' but allow each argument to be a pattern. I.e. accepts the usual &optional and &rest keywords, but every formal argument can be any pattern accepted by `pcase' (a mere variable name being but a special case of it). @@ -20521,7 +20558,7 @@ variable name being but a special case of it). (autoload 'pcase-let* "pcase" "\ Like `let*' but where you can use `pcase' patterns for bindings. BODY should be an expression, and BINDINGS should be a list of bindings -of the form (UPAT EXP). +of the form (PAT EXP). \(fn BINDINGS &rest BODY)" nil t) @@ -20530,7 +20567,10 @@ of the form (UPAT EXP). (autoload 'pcase-let "pcase" "\ Like `let' but where you can use `pcase' patterns for bindings. BODY should be a list of expressions, and BINDINGS should be a list of bindings -of the form (UPAT EXP). +of the form (PAT EXP). +The macro is expanded and optimized under the assumption that those +patterns *will* match, so a mismatch may go undetected or may cause +any kind of error. \(fn BINDINGS &rest BODY)" nil t) @@ -20544,7 +20584,9 @@ of the form (UPAT EXP). (function-put 'pcase-dolist 'lisp-indent-function '1) (autoload 'pcase-defmacro "pcase" "\ -Define a pcase UPattern macro. +Define a new kind of pcase PATTERN, by macro expansion. +Patterns of the form (NAME ...) will be expanded according +to this macro. \(fn NAME ARGS &rest BODY)" nil t) @@ -20554,8 +20596,8 @@ Define a pcase UPattern macro. ;;;*** -;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21678 60840 193776 -;;;;;; 69000)) +;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21857 42300 397266 +;;;;;; 599000)) ;;; Generated autoloads from pcmpl-cvs.el (autoload 'pcomplete/cvs "pcmpl-cvs" "\ @@ -20565,8 +20607,8 @@ Completion rules for the `cvs' command. ;;;*** -;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21678 60840 193776 -;;;;;; 69000)) +;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from pcmpl-gnu.el (autoload 'pcomplete/gzip "pcmpl-gnu" "\ @@ -20593,8 +20635,8 @@ Completion for the GNU tar utility. ;;;*** -;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21678 60840 -;;;;;; 193776 69000)) +;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from pcmpl-linux.el (autoload 'pcomplete/kill "pcmpl-linux" "\ @@ -20614,8 +20656,8 @@ Completion for GNU/Linux `mount'. ;;;*** -;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21678 60840 193776 -;;;;;; 69000)) +;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from pcmpl-rpm.el (autoload 'pcomplete/rpm "pcmpl-rpm" "\ @@ -20625,8 +20667,8 @@ Completion for the `rpm' command. ;;;*** -;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21790 46509 343608 -;;;;;; 375000)) +;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21791 47660 796747 +;;;;;; 422000)) ;;; Generated autoloads from pcmpl-unix.el (autoload 'pcomplete/cd "pcmpl-unix" "\ @@ -20681,8 +20723,8 @@ Includes files as well as host names followed by a colon. ;;;*** -;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21678 60840 193776 -;;;;;; 69000)) +;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from pcmpl-x.el (autoload 'pcomplete/tlmgr "pcmpl-x" "\ @@ -20706,8 +20748,8 @@ Completion for the `ag' command. ;;;*** -;;;### (autoloads nil "pcomplete" "pcomplete.el" (21804 3763 246436 -;;;;;; 758000)) +;;;### (autoloads nil "pcomplete" "pcomplete.el" (21688 62278 418203 +;;;;;; 119000)) ;;; Generated autoloads from pcomplete.el (autoload 'pcomplete "pcomplete" "\ @@ -20764,7 +20806,7 @@ Setup `shell-mode' to use pcomplete. ;;;*** -;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21678 60840 533789 670000)) +;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21670 32331 885635 586000)) ;;; Generated autoloads from vc/pcvs.el (autoload 'cvs-checkout "pcvs" "\ @@ -20839,8 +20881,8 @@ The exact behavior is determined also by `cvs-dired-use-hook'." (when (stringp d ;;;*** -;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21678 60840 -;;;;;; 533789 670000)) +;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from vc/pcvs-defs.el (defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\ @@ -20848,8 +20890,8 @@ Global menu used by PCL-CVS.") ;;;*** -;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21678 -;;;;;; 60840 329781 510000)) +;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from progmodes/perl-mode.el (put 'perl-indent-level 'safe-local-variable 'integerp) (put 'perl-continued-statement-offset 'safe-local-variable 'integerp) @@ -20910,8 +20952,8 @@ Turning on Perl mode runs the normal hook `perl-mode-hook'. ;;;*** -;;;### (autoloads nil "picture" "textmodes/picture.el" (21678 60840 -;;;;;; 457786 630000)) +;;;### (autoloads nil "picture" "textmodes/picture.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from textmodes/picture.el (autoload 'picture-mode "picture" "\ @@ -20991,8 +21033,8 @@ they are not by default assigned to keys. ;;;*** -;;;### (autoloads nil "plstore" "gnus/plstore.el" (21785 63745 85575 -;;;;;; 501000)) +;;;### (autoloads nil "plstore" "gnus/plstore.el" (21786 29744 368212 +;;;;;; 633000)) ;;; Generated autoloads from gnus/plstore.el (autoload 'plstore-open "plstore" "\ @@ -21007,8 +21049,8 @@ Major mode for editing PLSTORE files. ;;;*** -;;;### (autoloads nil "po" "textmodes/po.el" (21678 60840 457786 -;;;;;; 630000)) +;;;### (autoloads nil "po" "textmodes/po.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from textmodes/po.el (autoload 'po-find-file-coding-system "po" "\ @@ -21019,7 +21061,7 @@ Called through `file-coding-system-alist', before the file is visited for real. ;;;*** -;;;### (autoloads nil "pong" "play/pong.el" (21678 60840 209776 710000)) +;;;### (autoloads nil "pong" "play/pong.el" (21670 32331 385639 720000)) ;;; Generated autoloads from play/pong.el (autoload 'pong "pong" "\ @@ -21035,7 +21077,7 @@ pong-mode keybindings:\\<pong-mode-map> ;;;*** -;;;### (autoloads nil "pop3" "gnus/pop3.el" (21678 60839 725757 297000)) +;;;### (autoloads nil "pop3" "gnus/pop3.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gnus/pop3.el (autoload 'pop3-movemail "pop3" "\ @@ -21046,8 +21088,8 @@ Use streaming commands. ;;;*** -;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21678 60839 485747 -;;;;;; 653000)) +;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/pp.el (autoload 'pp-to-string "pp" "\ @@ -21097,8 +21139,8 @@ Ignores leading comment characters. ;;;*** -;;;### (autoloads nil "printing" "printing.el" (21678 60840 217777 -;;;;;; 30000)) +;;;### (autoloads nil "printing" "printing.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from printing.el (push (purecopy '(printing 6 9 3)) package--builtin-versions) @@ -21686,7 +21728,7 @@ are both set to t. ;;;*** -;;;### (autoloads nil "proced" "proced.el" (21678 60840 217777 30000)) +;;;### (autoloads nil "proced" "proced.el" (21670 32331 385639 720000)) ;;; Generated autoloads from proced.el (autoload 'proced "proced" "\ @@ -21704,8 +21746,8 @@ Proced buffers. ;;;*** -;;;### (autoloads nil "profiler" "profiler.el" (21678 60840 217777 -;;;;;; 30000)) +;;;### (autoloads nil "profiler" "profiler.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from profiler.el (autoload 'profiler-start "profiler" "\ @@ -21733,8 +21775,8 @@ Open profile FILENAME. ;;;*** -;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21678 60840 -;;;;;; 329781 510000)) +;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/prolog.el (autoload 'prolog-mode "prolog" "\ @@ -21767,7 +21809,7 @@ With prefix argument ARG, restart the Prolog process if running before. ;;;*** -;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21678 60840 377783 430000)) +;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21670 32331 885635 586000)) ;;; Generated autoloads from ps-bdf.el (defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\ @@ -21778,8 +21820,8 @@ The default value is '(\"/usr/local/share/emacs/fonts/bdf\").") ;;;*** -;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21678 60840 -;;;;;; 333781 670000)) +;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/ps-mode.el (push (purecopy '(ps-mode 1 1 9)) package--builtin-versions) @@ -21825,8 +21867,8 @@ Typing \\<ps-run-mode-map>\\[ps-run-goto-error] when the cursor is at the number ;;;*** -;;;### (autoloads nil "ps-print" "ps-print.el" (21678 60840 385783 -;;;;;; 750000)) +;;;### (autoloads nil "ps-print" "ps-print.el" (21855 577 457945 +;;;;;; 244000)) ;;; Generated autoloads from ps-print.el (push (purecopy '(ps-print 7 3 5)) package--builtin-versions) @@ -22023,15 +22065,27 @@ If EXTENSION is any other symbol, it is ignored. ;;;*** -;;;### (autoloads nil "pulse" "cedet/pulse.el" (21678 60839 349742 -;;;;;; 188000)) +;;;### (autoloads nil "pulse" "cedet/pulse.el" (21834 32653 960520 +;;;;;; 248000)) ;;; Generated autoloads from cedet/pulse.el (push (purecopy '(pulse 1 0)) package--builtin-versions) +(autoload 'pulse-momentary-highlight-one-line "pulse" "\ +Highlight the line around POINT, unhighlighting before next command. +Optional argument FACE specifies the face to do the highlighting. + +\(fn POINT &optional FACE)" nil nil) + +(autoload 'pulse-momentary-highlight-region "pulse" "\ +Highlight between START and END, unhighlighting before next command. +Optional argument FACE specifies the face to do the highlighting. + +\(fn START END &optional FACE)" nil nil) + ;;;*** -;;;### (autoloads nil "python" "progmodes/python.el" (21803 61751 -;;;;;; 297340 476000)) +;;;### (autoloads nil "python" "progmodes/python.el" (21855 577 407510 +;;;;;; 166000)) ;;; Generated autoloads from progmodes/python.el (push (purecopy '(python 0 24 5)) package--builtin-versions) @@ -22068,7 +22122,7 @@ Major mode for editing Python files. ;;;*** -;;;### (autoloads nil "qp" "gnus/qp.el" (21678 60839 725757 297000)) +;;;### (autoloads nil "qp" "gnus/qp.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gnus/qp.el (autoload 'quoted-printable-decode-region "qp" "\ @@ -22087,8 +22141,8 @@ them into characters should be done separately. ;;;*** -;;;### (autoloads nil "quail" "international/quail.el" (21760 22311 -;;;;;; 618792 686000)) +;;;### (autoloads nil "quail" "international/quail.el" (21829 62890 +;;;;;; 321199 861000)) ;;; Generated autoloads from international/quail.el (autoload 'quail-title "quail" "\ @@ -22319,7 +22373,7 @@ of each directory. ;;;*** ;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21770 -;;;;;; 15582 625546 353000)) +;;;;;; 41522 196747 399000)) ;;; Generated autoloads from leim/quail/hangul.el (autoload 'hangul-input-method-activate "quail/hangul" "\ @@ -22332,7 +22386,7 @@ HELP-TEXT is a text set in `hangul-input-method-help-text'. ;;;*** ;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el" -;;;;;; (21678 60839 861762 763000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from leim/quail/uni-input.el (autoload 'ucs-input-activate "quail/uni-input" "\ @@ -22346,8 +22400,8 @@ While this input method is active, the variable ;;;*** -;;;### (autoloads nil "quickurl" "net/quickurl.el" (21678 60839 985767 -;;;;;; 746000)) +;;;### (autoloads nil "quickurl" "net/quickurl.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from net/quickurl.el (defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\ @@ -22418,8 +22472,7 @@ Display `quickurl-list' as a formatted list using `quickurl-list-mode'. ;;;*** -;;;### (autoloads nil "rcirc" "net/rcirc.el" (21799 25426 601363 -;;;;;; 687000)) +;;;### (autoloads nil "rcirc" "net/rcirc.el" (21855 577 167944 784000)) ;;; Generated autoloads from net/rcirc.el (autoload 'rcirc "rcirc" "\ @@ -22457,8 +22510,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21678 -;;;;;; 60839 489747 814000)) +;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/re-builder.el (defalias 'regexp-builder 're-builder) @@ -22476,8 +22529,8 @@ matching parts of the target buffer will be highlighted. ;;;*** -;;;### (autoloads nil "recentf" "recentf.el" (21678 60840 385783 -;;;;;; 750000)) +;;;### (autoloads nil "recentf" "recentf.el" (21852 24381 997231 +;;;;;; 450000)) ;;; Generated autoloads from recentf.el (defvar recentf-mode nil "\ @@ -22503,7 +22556,7 @@ were operated on recently. ;;;*** -;;;### (autoloads nil "rect" "rect.el" (21803 61751 301340 310000)) +;;;### (autoloads nil "rect" "rect.el" (21803 38823 44085 519000)) ;;; Generated autoloads from rect.el (autoload 'delete-rectangle "rect" "\ @@ -22643,8 +22696,8 @@ Activates the region if needed. Only lasts until the region is deactivated. ;;;*** -;;;### (autoloads nil "refill" "textmodes/refill.el" (21678 60840 -;;;;;; 461786 791000)) +;;;### (autoloads nil "refill" "textmodes/refill.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from textmodes/refill.el (autoload 'refill-mode "refill" "\ @@ -22664,8 +22717,8 @@ For true \"word wrap\" behavior, use `visual-line-mode' instead. ;;;*** -;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21804 3763 -;;;;;; 270436 337000)) +;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21833 60086 +;;;;;; 84775 646000)) ;;; Generated autoloads from textmodes/reftex.el (autoload 'reftex-citation "reftex-cite" nil t) (autoload 'reftex-all-document-files "reftex-parse") @@ -22719,7 +22772,7 @@ This enforces rescanning the buffer on next use. ;;;*** ;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21743 -;;;;;; 12185 613417 151000)) +;;;;;; 190 195328 729000)) ;;; Generated autoloads from textmodes/reftex-vars.el (put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) (put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x)))) @@ -22728,8 +22781,8 @@ This enforces rescanning the buffer on next use. ;;;*** -;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21678 -;;;;;; 60839 489747 814000)) +;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/regexp-opt.el (autoload 'regexp-opt "regexp-opt" "\ @@ -22758,15 +22811,15 @@ This means the number of non-shy regexp grouping constructs ;;;*** -;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21678 60839 489747 -;;;;;; 814000)) +;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/regi.el (push (purecopy '(regi 1 8)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "remember" "textmodes/remember.el" (21678 60840 -;;;;;; 473787 271000)) +;;;### (autoloads nil "remember" "textmodes/remember.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from textmodes/remember.el (push (purecopy '(remember 2 0)) package--builtin-versions) @@ -22820,7 +22873,7 @@ to turn the *scratch* buffer into your notes buffer. ;;;*** -;;;### (autoloads nil "repeat" "repeat.el" (21678 60840 389783 910000)) +;;;### (autoloads nil "repeat" "repeat.el" (21670 32331 885635 586000)) ;;; Generated autoloads from repeat.el (push (purecopy '(repeat 0 51)) package--builtin-versions) @@ -22843,8 +22896,8 @@ recently executed command not bound to an input event\". ;;;*** -;;;### (autoloads nil "reporter" "mail/reporter.el" (21678 60839 -;;;;;; 873763 245000)) +;;;### (autoloads nil "reporter" "mail/reporter.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/reporter.el (autoload 'reporter-submit-bug-report "reporter" "\ @@ -22875,8 +22928,8 @@ mail-sending package is used for editing and sending the message. ;;;*** -;;;### (autoloads nil "reposition" "reposition.el" (21678 60840 389783 -;;;;;; 910000)) +;;;### (autoloads nil "reposition" "reposition.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from reposition.el (autoload 'reposition-window "reposition" "\ @@ -22902,7 +22955,7 @@ first comment line visible (if point is in a comment). ;;;*** -;;;### (autoloads nil "reveal" "reveal.el" (21678 60840 389783 910000)) +;;;### (autoloads nil "reveal" "reveal.el" (21670 32331 885635 586000)) ;;; Generated autoloads from reveal.el (autoload 'reveal-mode "reveal" "\ @@ -22937,8 +22990,8 @@ the mode if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21678 60839 489747 -;;;;;; 814000)) +;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/ring.el (autoload 'ring-p "ring" "\ @@ -22953,8 +23006,8 @@ Make a ring that can contain SIZE elements. ;;;*** -;;;### (autoloads nil "rlogin" "net/rlogin.el" (21678 60839 985767 -;;;;;; 746000)) +;;;### (autoloads nil "rlogin" "net/rlogin.el" (21852 24381 727234 +;;;;;; 912000)) ;;; Generated autoloads from net/rlogin.el (autoload 'rlogin "rlogin" "\ @@ -22998,8 +23051,8 @@ variable. ;;;*** -;;;### (autoloads nil "rmail" "mail/rmail.el" (21797 54705 48905 -;;;;;; 274000)) +;;;### (autoloads nil "rmail" "mail/rmail.el" (21862 60482 540812 +;;;;;; 493000)) ;;; Generated autoloads from mail/rmail.el (defvar rmail-file-name (purecopy "~/RMAIL") "\ @@ -23196,8 +23249,8 @@ Set PASSWORD to be used for retrieving mail from a POP or IMAP server. ;;;*** -;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21678 60839 -;;;;;; 885763 727000)) +;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/rmailout.el (put 'rmail-output-file-alist 'risky-local-variable t) @@ -23261,8 +23314,8 @@ than appending to it. Deletes the message after writing if ;;;*** -;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21678 60840 -;;;;;; 21769 189000)) +;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/rng-cmpct.el (autoload 'rng-c-load-schema "rng-cmpct" "\ @@ -23273,8 +23326,8 @@ Return a pattern. ;;;*** -;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21678 60840 -;;;;;; 21769 189000)) +;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/rng-nxml.el (autoload 'rng-nxml-mode-init "rng-nxml" "\ @@ -23286,8 +23339,8 @@ Validation will be enabled if `rng-nxml-auto-validate-flag' is non-nil. ;;;*** -;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21678 60840 -;;;;;; 25769 349000)) +;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from nxml/rng-valid.el (autoload 'rng-validate-mode "rng-valid" "\ @@ -23317,8 +23370,8 @@ to use for finding the schema. ;;;*** -;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21678 60840 25769 -;;;;;; 349000)) +;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from nxml/rng-xsd.el (put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile) @@ -23345,8 +23398,8 @@ must be equal. ;;;*** -;;;### (autoloads nil "robin" "international/robin.el" (21605 26936 -;;;;;; 840026 71000)) +;;;### (autoloads nil "robin" "international/robin.el" (21824 5851 +;;;;;; 711914 99000)) ;;; Generated autoloads from international/robin.el (autoload 'robin-define-package "robin" "\ @@ -23378,7 +23431,7 @@ Start using robin package NAME, which is a string. ;;;*** -;;;### (autoloads nil "rot13" "rot13.el" (21678 60840 393784 70000)) +;;;### (autoloads nil "rot13" "rot13.el" (21670 32331 885635 586000)) ;;; Generated autoloads from rot13.el (autoload 'rot13 "rot13" "\ @@ -23415,8 +23468,8 @@ Toggle the use of ROT13 encoding for the current window. ;;;*** -;;;### (autoloads nil "rst" "textmodes/rst.el" (21678 60840 477787 -;;;;;; 431000)) +;;;### (autoloads nil "rst" "textmodes/rst.el" (21852 24382 77263 +;;;;;; 112000)) ;;; Generated autoloads from textmodes/rst.el (add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode))) @@ -23446,8 +23499,8 @@ for modes derived from Text mode, like Mail mode. ;;;*** -;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21772 -;;;;;; 3649 133589 283000)) +;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21855 +;;;;;; 577 437945 800000)) ;;; Generated autoloads from progmodes/ruby-mode.el (push (purecopy '(ruby-mode 1 2)) package--builtin-versions) @@ -23464,8 +23517,8 @@ Major mode for editing Ruby code. ;;;*** -;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21678 60840 393784 -;;;;;; 70000)) +;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from ruler-mode.el (push (purecopy '(ruler-mode 1 6)) package--builtin-versions) @@ -23483,8 +23536,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21678 60839 489747 -;;;;;; 814000)) +;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21807 35879 352666 +;;;;;; 863000)) ;;; Generated autoloads from emacs-lisp/rx.el (autoload 'rx-to-string "rx" "\ @@ -23592,20 +23645,20 @@ CHAR matches space and tab only. `graphic', `graph' - matches graphic characters--everything except ASCII control chars, - space, and DEL. + matches graphic characters--everything except whitespace, ASCII + and non-ASCII control characters, surrogates, and codepoints + unassigned by Unicode. `printing', `print' - matches printing characters--everything except ASCII control chars - and DEL. + matches whitespace and graphic characters. `alphanumeric', `alnum' - matches letters and digits. (But at present, for multibyte characters, - it matches anything that has word syntax.) + matches alphabetic characters and digits. (For multibyte characters, + it matches according to Unicode character properties.) `letter', `alphabetic', `alpha' - matches letters. (But at present, for multibyte characters, - it matches anything that has word syntax.) + matches alphabetic characters. (For multibyte characters, + it matches according to Unicode character properties.) `ascii' matches ASCII (unibyte) characters. @@ -23795,15 +23848,15 @@ enclosed in `(and ...)'. ;;;*** -;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21678 60839 -;;;;;; 989767 907000)) +;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from net/sasl-ntlm.el (push (purecopy '(sasl 1 0)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "savehist" "savehist.el" (21678 60840 393784 -;;;;;; 70000)) +;;;### (autoloads nil "savehist" "savehist.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from savehist.el (push (purecopy '(savehist 24)) package--builtin-versions) @@ -23835,8 +23888,30 @@ histories, which is probably undesirable. ;;;*** -;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21678 60840 -;;;;;; 337781 830000)) +;;;### (autoloads nil "saveplace" "saveplace.el" (21822 58098 20521 +;;;;;; 61000)) +;;; Generated autoloads from saveplace.el + +(defvar save-place-mode nil "\ +Non-nil if Save-Place mode is enabled. +See the command `save-place-mode' for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `save-place-mode'.") + +(custom-autoload 'save-place-mode "saveplace" nil) + +(autoload 'save-place-mode "saveplace" "\ +Non-nil means automatically save place in each file. +This means when you visit a file, point goes to the last place +where it was when you previously visited the same file. + +\(fn &optional ARG)" t nil) + +;;;*** + +;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/scheme.el (autoload 'scheme-mode "scheme" "\ @@ -23875,8 +23950,8 @@ that variable's value is a string. ;;;*** -;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21678 60839 -;;;;;; 725757 297000)) +;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/score-mode.el (autoload 'gnus-score-mode "score-mode" "\ @@ -23889,8 +23964,8 @@ This mode is an extended emacs-lisp mode. ;;;*** -;;;### (autoloads nil "scroll-all" "scroll-all.el" (21678 60840 393784 -;;;;;; 70000)) +;;;### (autoloads nil "scroll-all" "scroll-all.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from scroll-all.el (defvar scroll-all-mode nil "\ @@ -23915,8 +23990,8 @@ one window apply to all visible windows in the same frame. ;;;*** -;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21678 60840 -;;;;;; 393784 70000)) +;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from scroll-lock.el (autoload 'scroll-lock-mode "scroll-lock" "\ @@ -23932,16 +24007,16 @@ vertically fixed relative to window boundaries during scrolling. ;;;*** -;;;### (autoloads nil "secrets" "net/secrets.el" (21799 25450 636876 -;;;;;; 627000)) +;;;### (autoloads nil "secrets" "net/secrets.el" (21855 577 177946 +;;;;;; 739000)) ;;; Generated autoloads from net/secrets.el (when (featurep 'dbusbind) (autoload 'secrets-show-secrets "secrets" nil t)) ;;;*** -;;;### (autoloads nil "semantic" "cedet/semantic.el" (21678 60854 -;;;;;; 970348 529000)) +;;;### (autoloads nil "semantic" "cedet/semantic.el" (21679 47292 +;;;;;; 556033 759000)) ;;; Generated autoloads from cedet/semantic.el (push (purecopy '(semantic 2 2)) package--builtin-versions) @@ -23999,7 +24074,7 @@ Semantic mode. ;;;*** ;;;### (autoloads nil "semantic/bovine/grammar" "cedet/semantic/bovine/grammar.el" -;;;;;; (21678 60839 357742 509000)) +;;;;;; (21670 32330 885624 725000)) ;;; Generated autoloads from cedet/semantic/bovine/grammar.el (autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\ @@ -24010,7 +24085,7 @@ Major mode for editing Bovine grammars. ;;;*** ;;;### (autoloads nil "semantic/wisent/grammar" "cedet/semantic/wisent/grammar.el" -;;;;;; (21678 60839 393743 956000)) +;;;;;; (21670 32330 885624 725000)) ;;; Generated autoloads from cedet/semantic/wisent/grammar.el (autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\ @@ -24020,14 +24095,14 @@ Major mode for editing Wisent grammars. ;;;*** -;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21785 52256 -;;;;;; 612012 760000)) +;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21861 39358 +;;;;;; 517945 150000)) ;;; Generated autoloads from mail/sendmail.el (defvar mail-from-style 'default "\ Specifies how \"From:\" fields look. -If `nil', they contain just the return address like: +If nil, they contain just the return address like: king@grassland.com If `parens', they look like: king@grassland.com (Elvis Parsley) @@ -24302,14 +24377,14 @@ Like `mail' command, but display mail buffer in another frame. ;;;*** -;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21778 45004 713399 -;;;;;; 126000)) +;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21843 54898 597238 +;;;;;; 876000)) ;;; Generated autoloads from emacs-lisp/seq.el -(push (purecopy '(seq 1 3)) package--builtin-versions) +(push (purecopy '(seq 1 7)) package--builtin-versions) ;;;*** -;;;### (autoloads nil "server" "server.el" (21744 29479 720733 839000)) +;;;### (autoloads nil "server" "server.el" (21857 42300 487735 894000)) ;;; Generated autoloads from server.el (put 'server-host 'risky-local-variable t) @@ -24376,7 +24451,7 @@ only these files will be asked to be saved. ;;;*** -;;;### (autoloads nil "ses" "ses.el" (21804 4012 686064 51000)) +;;;### (autoloads nil "ses" "ses.el" (21855 577 487945 652000)) ;;; Generated autoloads from ses.el (autoload 'ses-mode "ses" "\ @@ -24420,8 +24495,8 @@ formula: ;;;*** -;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21804 -;;;;;; 4012 698063 841000)) +;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21839 +;;;;;; 43859 371195 279000)) ;;; Generated autoloads from textmodes/sgml-mode.el (autoload 'sgml-mode "sgml-mode" "\ @@ -24486,8 +24561,8 @@ To work around that, do: ;;;*** -;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21706 -;;;;;; 14224 297957 474000)) +;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21862 +;;;;;; 60209 888659 15000)) ;;; Generated autoloads from progmodes/sh-script.el (push (purecopy '(sh-script 2 0 6)) package--builtin-versions) (put 'sh-shell 'safe-local-variable 'symbolp) @@ -24550,8 +24625,8 @@ with your script for an edit-interpret-debug cycle. ;;;*** -;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21678 60839 -;;;;;; 489747 814000)) +;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/shadow.el (autoload 'list-load-path-shadows "shadow" "\ @@ -24600,8 +24675,8 @@ function, `load-path-shadows-find'. ;;;*** -;;;### (autoloads nil "shadowfile" "shadowfile.el" (21678 60840 401784 -;;;;;; 390000)) +;;;### (autoloads nil "shadowfile" "shadowfile.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from shadowfile.el (autoload 'shadow-define-cluster "shadowfile" "\ @@ -24639,7 +24714,7 @@ Set up file shadowing. ;;;*** -;;;### (autoloads nil "shell" "shell.el" (21678 60840 401784 390000)) +;;;### (autoloads nil "shell" "shell.el" (21678 26426 225333 737000)) ;;; Generated autoloads from shell.el (defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\ @@ -24687,7 +24762,7 @@ Otherwise, one argument `-i' is passed to the shell. ;;;*** -;;;### (autoloads nil "shr" "net/shr.el" (21756 63737 910472 761000)) +;;;### (autoloads nil "shr" "net/shr.el" (21837 20530 521200 565000)) ;;; Generated autoloads from net/shr.el (autoload 'shr-render-region "shr" "\ @@ -24704,8 +24779,8 @@ DOM should be a parse tree as generated by ;;;*** -;;;### (autoloads nil "sieve" "gnus/sieve.el" (21678 60839 729757 -;;;;;; 458000)) +;;;### (autoloads nil "sieve" "gnus/sieve.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/sieve.el (autoload 'sieve-manage "sieve" "\ @@ -24730,8 +24805,8 @@ DOM should be a parse tree as generated by ;;;*** -;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21678 60839 -;;;;;; 729757 458000)) +;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/sieve-mode.el (autoload 'sieve-mode "sieve-mode" "\ @@ -24746,8 +24821,8 @@ Turning on Sieve mode runs `sieve-mode-hook'. ;;;*** -;;;### (autoloads nil "simula" "progmodes/simula.el" (21678 60840 -;;;;;; 345782 150000)) +;;;### (autoloads nil "simula" "progmodes/simula.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from progmodes/simula.el (autoload 'simula-mode "simula" "\ @@ -24795,8 +24870,8 @@ with no arguments, if that value is non-nil. ;;;*** -;;;### (autoloads nil "skeleton" "skeleton.el" (21678 60840 409784 -;;;;;; 710000)) +;;;### (autoloads nil "skeleton" "skeleton.el" (21862 60209 898658 +;;;;;; 614000)) ;;; Generated autoloads from skeleton.el (defvar skeleton-filter-function 'identity "\ @@ -24907,15 +24982,16 @@ Pairing is also prohibited if we are right after a quoting character such as backslash. If a match is found in `skeleton-pair-alist', that is inserted, else -the defaults are used. These are (), [], {}, <> and `' for the -symmetrical ones, and the same character twice for the others. +the defaults are used. These are (), [], {}, <> and (grave +accent, apostrophe) for the paired ones, and the same character +twice for the others. \(fn ARG)" t nil) ;;;*** -;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21678 60840 -;;;;;; 537789 831000)) +;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from vc/smerge-mode.el (autoload 'smerge-ediff "smerge-mode" "\ @@ -24942,8 +25018,8 @@ If no conflict maker is found, turn off `smerge-mode'. ;;;*** -;;;### (autoloads nil "smiley" "gnus/smiley.el" (21678 60839 729757 -;;;;;; 458000)) +;;;### (autoloads nil "smiley" "gnus/smiley.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from gnus/smiley.el (autoload 'smiley-region "smiley" "\ @@ -24960,8 +25036,8 @@ interactively. If there's no argument, do it at the current buffer. ;;;*** -;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21678 60839 -;;;;;; 889763 888000)) +;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from mail/smtpmail.el (autoload 'smtpmail-send-it "smtpmail" "\ @@ -24976,8 +25052,8 @@ Send mail that was queued as a result of setting `smtpmail-queue-mail'. ;;;*** -;;;### (autoloads nil "snake" "play/snake.el" (21678 60840 209776 -;;;;;; 710000)) +;;;### (autoloads nil "snake" "play/snake.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/snake.el (autoload 'snake "snake" "\ @@ -25000,8 +25076,8 @@ Snake mode keybindings: ;;;*** -;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21678 60839 -;;;;;; 989767 907000)) +;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from net/snmp-mode.el (autoload 'snmp-mode "snmp-mode" "\ @@ -25030,8 +25106,8 @@ then `snmpv2-mode-hook'. ;;;*** -;;;### (autoloads nil "solar" "calendar/solar.el" (21735 24088 384215 -;;;;;; 80000)) +;;;### (autoloads nil "solar" "calendar/solar.el" (21849 48176 337264 +;;;;;; 443000)) ;;; Generated autoloads from calendar/solar.el (autoload 'sunrise-sunset "solar" "\ @@ -25046,8 +25122,8 @@ This function is suitable for execution in an init file. ;;;*** -;;;### (autoloads nil "solitaire" "play/solitaire.el" (21678 60840 -;;;;;; 209776 710000)) +;;;### (autoloads nil "solitaire" "play/solitaire.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from play/solitaire.el (autoload 'solitaire "solitaire" "\ @@ -25122,7 +25198,7 @@ Pick your favorite shortcuts: ;;;*** -;;;### (autoloads nil "sort" "sort.el" (21678 60840 409784 710000)) +;;;### (autoloads nil "sort" "sort.el" (21670 32331 885635 586000)) ;;; Generated autoloads from sort.el (put 'sort-fold-case 'safe-local-variable 'booleanp) @@ -25297,7 +25373,7 @@ is non-nil, it also prints a message describing the number of deletions. ;;;*** -;;;### (autoloads nil "spam" "gnus/spam.el" (21678 60839 733757 619000)) +;;;### (autoloads nil "spam" "gnus/spam.el" (21832 3464 481922 546000)) ;;; Generated autoloads from gnus/spam.el (autoload 'spam-initialize "spam" "\ @@ -25311,8 +25387,8 @@ installed through `spam-necessary-extra-headers'. ;;;*** -;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21678 -;;;;;; 60839 729757 458000)) +;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from gnus/spam-report.el (autoload 'spam-report-process-queue "spam-report" "\ @@ -25354,8 +25430,8 @@ Spam reports will be queued with the method used when ;;;*** -;;;### (autoloads nil "speedbar" "speedbar.el" (21678 60840 413784 -;;;;;; 870000)) +;;;### (autoloads nil "speedbar" "speedbar.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from speedbar.el (defalias 'speedbar 'speedbar-frame-mode) @@ -25379,8 +25455,8 @@ selected. If the speedbar frame is active, then select the attached frame. ;;;*** -;;;### (autoloads nil "spook" "play/spook.el" (21678 60840 209776 -;;;;;; 710000)) +;;;### (autoloads nil "spook" "play/spook.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/spook.el (autoload 'spook "spook" "\ @@ -25395,8 +25471,8 @@ Return a vector containing the lines from `spook-phrases-file'. ;;;*** -;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 52461 396136 -;;;;;; 269000)) +;;;### (autoloads nil "sql" "progmodes/sql.el" (21765 23600 805241 +;;;;;; 145000)) ;;; Generated autoloads from progmodes/sql.el (push (purecopy '(sql 3 5)) package--builtin-versions) @@ -25862,15 +25938,15 @@ Run vsql as an inferior process. ;;;*** -;;;### (autoloads nil "srecode" "cedet/srecode.el" (21678 60839 393743 -;;;;;; 956000)) +;;;### (autoloads nil "srecode" "cedet/srecode.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from cedet/srecode.el (push (purecopy '(srecode 1 2)) package--builtin-versions) ;;;*** ;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el" -;;;;;; (21678 60839 401744 277000)) +;;;;;; (21670 32330 885624 725000)) ;;; Generated autoloads from cedet/srecode/srt-mode.el (autoload 'srecode-template-mode "srecode/srt-mode" "\ @@ -25882,8 +25958,8 @@ Major-mode for writing SRecode macros. ;;;*** -;;;### (autoloads nil "starttls" "gnus/starttls.el" (21678 60839 -;;;;;; 733757 619000)) +;;;### (autoloads nil "starttls" "gnus/starttls.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from gnus/starttls.el (autoload 'starttls-open-stream "starttls" "\ @@ -25906,8 +25982,8 @@ GnuTLS requires a port number. ;;;*** -;;;### (autoloads nil "strokes" "strokes.el" (21678 60840 417785 -;;;;;; 31000)) +;;;### (autoloads nil "strokes" "strokes.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from strokes.el (autoload 'strokes-global-set-stroke "strokes" "\ @@ -26020,8 +26096,8 @@ Read a complex stroke and insert its glyph into the current buffer. ;;;*** -;;;### (autoloads nil "studly" "play/studly.el" (21605 26937 380015 -;;;;;; 699000)) +;;;### (autoloads nil "studly" "play/studly.el" (21607 54478 800121 +;;;;;; 42000)) ;;; Generated autoloads from play/studly.el (autoload 'studlify-region "studly" "\ @@ -26041,8 +26117,8 @@ Studlify-case the current buffer. ;;;*** -;;;### (autoloads nil "subword" "progmodes/subword.el" (21678 60840 -;;;;;; 349782 310000)) +;;;### (autoloads nil "subword" "progmodes/subword.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from progmodes/subword.el (define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1") @@ -26134,8 +26210,8 @@ See `superword-mode' for more information on Superword mode. ;;;*** -;;;### (autoloads nil "supercite" "mail/supercite.el" (21678 60839 -;;;;;; 889763 888000)) +;;;### (autoloads nil "supercite" "mail/supercite.el" (21852 24381 +;;;;;; 697240 10000)) ;;; Generated autoloads from mail/supercite.el (autoload 'sc-cite-original "supercite" "\ @@ -26167,8 +26243,8 @@ and `sc-post-hook' is run after the guts of this function. ;;;*** -;;;### (autoloads nil "t-mouse" "t-mouse.el" (21678 60840 421785 -;;;;;; 191000)) +;;;### (autoloads nil "t-mouse" "t-mouse.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from t-mouse.el (define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1") @@ -26196,7 +26272,7 @@ It relies on the `gpm' daemon being activated. ;;;*** -;;;### (autoloads nil "tabify" "tabify.el" (21678 60840 421785 191000)) +;;;### (autoloads nil "tabify" "tabify.el" (21670 32331 885635 586000)) ;;; Generated autoloads from tabify.el (autoload 'untabify "tabify" "\ @@ -26225,31 +26301,10 @@ The variable `tab-width' controls the spacing of tab stops. ;;;*** -;;;### (autoloads nil "table" "textmodes/table.el" (21804 4012 706063 -;;;;;; 701000)) +;;;### (autoloads nil "table" "textmodes/table.el" (21804 59688 284811 +;;;;;; 0)) ;;; Generated autoloads from textmodes/table.el -(defvar table-cell-map-hook nil "\ -Normal hooks run when finishing construction of `table-cell-map'. -User can modify `table-cell-map' by adding custom functions here.") - -(custom-autoload 'table-cell-map-hook "table" t) - -(defvar table-load-hook nil "\ -List of functions to be called after the table is first loaded.") - -(custom-autoload 'table-load-hook "table" t) - -(defvar table-point-entered-cell-hook nil "\ -List of functions to be called after point entered a table cell.") - -(custom-autoload 'table-point-entered-cell-hook "table" t) - -(defvar table-point-left-cell-hook nil "\ -List of functions to be called after point left a table cell.") - -(custom-autoload 'table-point-left-cell-hook "table" t) - (autoload 'table-insert "table" "\ Insert an editable text table. Insert a table of specified number of COLUMNS and ROWS. Optional @@ -26818,7 +26873,7 @@ converts a table into plain text without frames. It is a companion to ;;;*** -;;;### (autoloads nil "talk" "talk.el" (21678 60840 421785 191000)) +;;;### (autoloads nil "talk" "talk.el" (21670 32331 885635 586000)) ;;; Generated autoloads from talk.el (autoload 'talk-connect "talk" "\ @@ -26833,8 +26888,8 @@ Connect to the Emacs talk group from the current X display or tty frame. ;;;*** -;;;### (autoloads nil "tar-mode" "tar-mode.el" (21706 14224 305956 -;;;;;; 524000)) +;;;### (autoloads nil "tar-mode" "tar-mode.el" (21704 50495 455324 +;;;;;; 752000)) ;;; Generated autoloads from tar-mode.el (autoload 'tar-mode "tar-mode" "\ @@ -26857,8 +26912,8 @@ See also: variables `tar-update-datestamp' and `tar-anal-blocksize'. ;;;*** -;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21678 60840 349782 -;;;;;; 310000)) +;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21842 42581 539414 +;;;;;; 570000)) ;;; Generated autoloads from progmodes/tcl.el (autoload 'tcl-mode "tcl" "\ @@ -26906,8 +26961,8 @@ Prefix argument means invert sense of `tcl-use-smart-word-finder'. ;;;*** -;;;### (autoloads nil "telnet" "net/telnet.el" (21678 60839 993768 -;;;;;; 67000)) +;;;### (autoloads nil "telnet" "net/telnet.el" (21852 24381 767239 +;;;;;; 782000)) ;;; Generated autoloads from net/telnet.el (autoload 'telnet "telnet" "\ @@ -26932,7 +26987,7 @@ Normally input is edited in Emacs and sent a line at a time. ;;;*** -;;;### (autoloads nil "term" "term.el" (21798 37736 247770 610000)) +;;;### (autoloads nil "term" "term.el" (21798 49947 262665 54000)) ;;; Generated autoloads from term.el (autoload 'make-term "term" "\ @@ -26974,8 +27029,8 @@ use in that buffer. ;;;*** -;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21678 -;;;;;; 60839 497748 135000)) +;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21834 +;;;;;; 29303 521933 754000)) ;;; Generated autoloads from emacs-lisp/testcover.el (autoload 'testcover-this-defun "testcover" "\ @@ -26985,8 +27040,8 @@ Start coverage on function under point. ;;;*** -;;;### (autoloads nil "tetris" "play/tetris.el" (21678 60840 209776 -;;;;;; 710000)) +;;;### (autoloads nil "tetris" "play/tetris.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from play/tetris.el (push (purecopy '(tetris 2 1)) package--builtin-versions) @@ -27011,8 +27066,8 @@ tetris-mode keybindings: ;;;*** -;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21678 60840 -;;;;;; 485787 751000)) +;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21862 60209 +;;;;;; 908658 140000)) ;;; Generated autoloads from textmodes/tex-mode.el (defvar tex-shell-file-name nil "\ @@ -27174,7 +27229,7 @@ says which mode to use. (autoload 'plain-tex-mode "tex-mode" "\ Major mode for editing files of input for plain TeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run TeX on the current region, plus a \"header\" @@ -27217,7 +27272,7 @@ special subshell is initiated, the hook `tex-shell-hook' is run. (autoload 'latex-mode "tex-mode" "\ Major mode for editing files of input for LaTeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run LaTeX on the current region, plus the preamble @@ -27260,7 +27315,7 @@ subshell is initiated, `tex-shell-hook' is run. (autoload 'slitex-mode "tex-mode" "\ Major mode for editing files of input for SliTeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run SliTeX on the current region, plus the preamble @@ -27313,8 +27368,8 @@ Major mode to edit DocTeX files. ;;;*** -;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21678 60840 -;;;;;; 489787 911000)) +;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21862 60209 +;;;;;; 928657 362000)) ;;; Generated autoloads from textmodes/texinfmt.el (autoload 'texinfo-format-buffer "texinfmt" "\ @@ -27353,8 +27408,8 @@ if large. You can use `Info-split' to do this manually. ;;;*** -;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21678 60840 -;;;;;; 489787 911000)) +;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21862 60209 +;;;;;; 928657 362000)) ;;; Generated autoloads from textmodes/texinfo.el (defvar texinfo-open-quote (purecopy "``") "\ @@ -27438,8 +27493,8 @@ value of `texinfo-mode-hook'. ;;;*** -;;;### (autoloads nil "thai-util" "language/thai-util.el" (21678 -;;;;;; 60839 817760 994000)) +;;;### (autoloads nil "thai-util" "language/thai-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/thai-util.el (autoload 'thai-compose-region "thai-util" "\ @@ -27466,8 +27521,8 @@ Compose Thai characters in the current buffer. ;;;*** -;;;### (autoloads nil "thingatpt" "thingatpt.el" (21678 60840 493788 -;;;;;; 71000)) +;;;### (autoloads nil "thingatpt" "thingatpt.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from thingatpt.el (autoload 'forward-thing "thingatpt" "\ @@ -27531,7 +27586,7 @@ Return the Lisp list at point, or nil if none is found. ;;;*** -;;;### (autoloads nil "thumbs" "thumbs.el" (21678 60840 493788 71000)) +;;;### (autoloads nil "thumbs" "thumbs.el" (21670 32331 885635 586000)) ;;; Generated autoloads from thumbs.el (autoload 'thumbs-find-thumb "thumbs" "\ @@ -27565,8 +27620,8 @@ In dired, call the setroot program on the image at point. ;;;*** -;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21678 -;;;;;; 60839 817760 994000)) +;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/tibet-util.el (autoload 'tibetan-char-p "tibet-util" "\ @@ -27639,8 +27694,8 @@ See also docstring of the function tibetan-compose-region. ;;;*** -;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21694 48017 -;;;;;; 622101 735000)) +;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21852 24382 +;;;;;; 87256 328000)) ;;; Generated autoloads from textmodes/tildify.el (push (purecopy '(tildify 4 6 1)) package--builtin-versions) @@ -27671,7 +27726,7 @@ Convert space before point into a hard space if the context is right. If * character before point is a space character, - * character before that has “w” character syntax (i.e. it's a word + * character before that has \"w\" character syntax (i.e. it's a word constituent), * `tildify-space-pattern' matches when `looking-back' (no more than 10 characters) from before the space character, and @@ -27706,7 +27761,7 @@ variable will be set to the representation. ;;;*** -;;;### (autoloads nil "time" "time.el" (21678 60840 493788 71000)) +;;;### (autoloads nil "time" "time.el" (21670 32331 885635 586000)) ;;; Generated autoloads from time.el (defvar display-time-day-and-date nil "\ @@ -27768,8 +27823,8 @@ Return a string giving the duration of the Emacs initialization. ;;;*** -;;;### (autoloads nil "time-date" "calendar/time-date.el" (21678 -;;;;;; 60839 321741 62000)) +;;;### (autoloads nil "time-date" "calendar/time-date.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from calendar/time-date.el (autoload 'date-to-time "time-date" "\ @@ -27872,8 +27927,8 @@ Convert the time interval in seconds to a short string. ;;;*** -;;;### (autoloads nil "time-stamp" "time-stamp.el" (21678 60840 493788 -;;;;;; 71000)) +;;;### (autoloads nil "time-stamp" "time-stamp.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from time-stamp.el (put 'time-stamp-format 'safe-local-variable 'stringp) (put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p) @@ -27913,8 +27968,8 @@ With ARG, turn time stamping on if and only if arg is positive. ;;;*** -;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21678 -;;;;;; 60839 321741 62000)) +;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from calendar/timeclock.el (push (purecopy '(timeclock 2 6 1)) package--builtin-versions) @@ -28024,7 +28079,7 @@ relative only to the time worked today, and not to past time. ;;;*** ;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el" -;;;;;; (21678 60839 785759 709000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from international/titdic-cnv.el (autoload 'titdic-convert "titdic-cnv" "\ @@ -28046,7 +28101,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\". ;;;*** -;;;### (autoloads nil "tmm" "tmm.el" (21678 60840 497788 230000)) +;;;### (autoloads nil "tmm" "tmm.el" (21670 32331 885635 586000)) ;;; Generated autoloads from tmm.el (define-key global-map "\M-`" 'tmm-menubar) (define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse) @@ -28088,8 +28143,8 @@ Its value should be an event that has a binding in MENU. ;;;*** -;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21756 -;;;;;; 63737 814475 170000)) +;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21855 +;;;;;; 576 567563 758000)) ;;; Generated autoloads from calendar/todo-mode.el (autoload 'todo-show "todo-mode" "\ @@ -28156,8 +28211,8 @@ Mode for displaying and reprioritizing top priority Todo. ;;;*** -;;;### (autoloads nil "tool-bar" "tool-bar.el" (21678 60840 497788 -;;;;;; 230000)) +;;;### (autoloads nil "tool-bar" "tool-bar.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from tool-bar.el (autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\ @@ -28227,8 +28282,8 @@ holds a keymap. ;;;*** -;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21678 60839 497748 -;;;;;; 135000)) +;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emacs-lisp/tq.el (autoload 'tq-create "tq" "\ @@ -28241,8 +28296,8 @@ to a tcp server on another machine. ;;;*** -;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21741 17831 -;;;;;; 261102 632000)) +;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/trace.el (defvar trace-buffer "*trace-output*" "\ @@ -28287,8 +28342,7 @@ the output buffer or changing the window configuration. ;;;*** -;;;### (autoloads nil "tramp" "net/tramp.el" (21765 52461 392136 -;;;;;; 351000)) +;;;### (autoloads nil "tramp" "net/tramp.el" (21865 36399 47685 802000)) ;;; Generated autoloads from net/tramp.el (defvar tramp-mode t "\ @@ -28403,8 +28457,8 @@ Discard Tramp from loading remote files. ;;;*** -;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21678 60839 -;;;;;; 997768 228000)) +;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from net/tramp-ftp.el (autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\ @@ -28414,8 +28468,8 @@ Discard Tramp from loading remote files. ;;;*** -;;;### (autoloads nil "tutorial" "tutorial.el" (21678 60840 497788 -;;;;;; 230000)) +;;;### (autoloads nil "tutorial" "tutorial.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from tutorial.el (autoload 'help-with-tutorial "tutorial" "\ @@ -28439,8 +28493,8 @@ resumed later. ;;;*** -;;;### (autoloads nil "tv-util" "language/tv-util.el" (21605 26936 -;;;;;; 888025 150000)) +;;;### (autoloads nil "tv-util" "language/tv-util.el" (21855 577 +;;;;;; 57945 485000)) ;;; Generated autoloads from language/tv-util.el (autoload 'tai-viet-composition-function "tv-util" "\ @@ -28450,8 +28504,8 @@ resumed later. ;;;*** -;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21678 -;;;;;; 60840 493788 71000)) +;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from textmodes/two-column.el (autoload '2C-command "two-column" () t 'keymap) (global-set-key "\C-x6" '2C-command) @@ -28498,8 +28552,8 @@ First column's text sSs Second column's text ;;;*** -;;;### (autoloads nil "type-break" "type-break.el" (21678 60840 497788 -;;;;;; 230000)) +;;;### (autoloads nil "type-break" "type-break.el" (21855 577 527945 +;;;;;; 248000)) ;;; Generated autoloads from type-break.el (defvar type-break-mode nil "\ @@ -28631,7 +28685,7 @@ FRAC should be the inverse of the fractional value; for example, a value of ;;;*** -;;;### (autoloads nil "uce" "mail/uce.el" (21678 60839 889763 888000)) +;;;### (autoloads nil "uce" "mail/uce.el" (21670 32331 385639 720000)) ;;; Generated autoloads from mail/uce.el (autoload 'uce-reply-to-uce "uce" "\ @@ -28645,7 +28699,7 @@ You might need to set `uce-mail-reader' before using this. ;;;*** ;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el" -;;;;;; (21678 60839 785759 709000)) +;;;;;; (21670 32331 385639 720000)) ;;; Generated autoloads from international/ucs-normalize.el (autoload 'ucs-normalize-NFD-region "ucs-normalize" "\ @@ -28710,8 +28764,8 @@ Normalize the string STR by the Unicode NFC and Mac OS's HFS Plus. ;;;*** -;;;### (autoloads nil "underline" "textmodes/underline.el" (21678 -;;;;;; 60840 493788 71000)) +;;;### (autoloads nil "underline" "textmodes/underline.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from textmodes/underline.el (autoload 'underline-region "underline" "\ @@ -28731,8 +28785,8 @@ which specify the range to operate on. ;;;*** -;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21678 60839 893764 -;;;;;; 49000)) +;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from mail/unrmail.el (autoload 'batch-unrmail "unrmail" "\ @@ -28752,8 +28806,8 @@ The variable `unrmail-mbox-format' controls which mbox format to use. ;;;*** -;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21678 60839 -;;;;;; 497748 135000)) +;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21670 32330 +;;;;;; 885624 725000)) ;;; Generated autoloads from emacs-lisp/unsafep.el (autoload 'unsafep "unsafep" "\ @@ -28765,7 +28819,7 @@ UNSAFEP-VARS is a list of symbols with local bindings. ;;;*** -;;;### (autoloads nil "url" "url/url.el" (21678 60840 513788 871000)) +;;;### (autoloads nil "url" "url/url.el" (21670 32331 885635 586000)) ;;; Generated autoloads from url/url.el (autoload 'url-retrieve "url" "\ @@ -28812,8 +28866,8 @@ no further processing). URL is either a string or a parsed URL. ;;;*** -;;;### (autoloads nil "url-auth" "url/url-auth.el" (21678 60840 501788 -;;;;;; 391000)) +;;;### (autoloads nil "url-auth" "url/url-auth.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-auth.el (autoload 'url-get-authentication "url-auth" "\ @@ -28854,8 +28908,8 @@ RATING a rating between 1 and 10 of the strength of the authentication. ;;;*** -;;;### (autoloads nil "url-cache" "url/url-cache.el" (21678 60840 -;;;;;; 501788 391000)) +;;;### (autoloads nil "url-cache" "url/url-cache.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-cache.el (autoload 'url-store-in-cache "url-cache" "\ @@ -28876,8 +28930,8 @@ Extract FNAM from the local disk cache. ;;;*** -;;;### (autoloads nil "url-cid" "url/url-cid.el" (21678 60840 501788 -;;;;;; 391000)) +;;;### (autoloads nil "url-cid" "url/url-cid.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-cid.el (autoload 'url-cid "url-cid" "\ @@ -28887,8 +28941,8 @@ Extract FNAM from the local disk cache. ;;;*** -;;;### (autoloads nil "url-dav" "url/url-dav.el" (21697 290 540850 -;;;;;; 262000)) +;;;### (autoloads nil "url-dav" "url/url-dav.el" (21696 56380 925320 +;;;;;; 624000)) ;;; Generated autoloads from url/url-dav.el (autoload 'url-dav-supported-p "url-dav" "\ @@ -28922,8 +28976,8 @@ added to this list, so most requests can just pass in nil. ;;;*** -;;;### (autoloads nil "url-file" "url/url-file.el" (21678 60840 505788 -;;;;;; 551000)) +;;;### (autoloads nil "url-file" "url/url-file.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-file.el (autoload 'url-file "url-file" "\ @@ -28933,8 +28987,8 @@ Handle file: and ftp: URLs. ;;;*** -;;;### (autoloads nil "url-gw" "url/url-gw.el" (21678 60840 505788 -;;;;;; 551000)) +;;;### (autoloads nil "url-gw" "url/url-gw.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-gw.el (autoload 'url-gateway-nslookup-host "url-gw" "\ @@ -28955,8 +29009,8 @@ overriding the value of `url-gateway-method'. ;;;*** -;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21765 -;;;;;; 52463 696089 51000)) +;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21841 +;;;;;; 54062 172628 227000)) ;;; Generated autoloads from url/url-handlers.el (defvar url-handler-mode nil "\ @@ -29010,7 +29064,7 @@ accessible. ;;;*** -;;;### (autoloads nil "url-http" "url/url-http.el" (21678 60840 509788 +;;;### (autoloads nil "url-http" "url/url-http.el" (21837 20526 641128 ;;;;;; 711000)) ;;; Generated autoloads from url/url-http.el (autoload 'url-default-expander "url-expand") @@ -29023,8 +29077,8 @@ accessible. ;;;*** -;;;### (autoloads nil "url-irc" "url/url-irc.el" (21678 60840 509788 -;;;;;; 711000)) +;;;### (autoloads nil "url-irc" "url/url-irc.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-irc.el (autoload 'url-irc "url-irc" "\ @@ -29034,8 +29088,8 @@ accessible. ;;;*** -;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21678 60840 509788 -;;;;;; 711000)) +;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-ldap.el (autoload 'url-ldap "url-ldap" "\ @@ -29048,8 +29102,8 @@ URL can be a URL string, or a URL vector of the type returned by ;;;*** -;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21678 60840 -;;;;;; 509788 711000)) +;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-mailto.el (autoload 'url-mail "url-mailto" "\ @@ -29064,8 +29118,8 @@ Handle the mailto: URL syntax. ;;;*** -;;;### (autoloads nil "url-misc" "url/url-misc.el" (21678 60840 509788 -;;;;;; 711000)) +;;;### (autoloads nil "url-misc" "url/url-misc.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-misc.el (autoload 'url-man "url-misc" "\ @@ -29096,8 +29150,8 @@ Fetch a data URL (RFC 2397). ;;;*** -;;;### (autoloads nil "url-news" "url/url-news.el" (21678 60840 509788 -;;;;;; 711000)) +;;;### (autoloads nil "url-news" "url/url-news.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-news.el (autoload 'url-news "url-news" "\ @@ -29112,8 +29166,8 @@ Fetch a data URL (RFC 2397). ;;;*** -;;;### (autoloads nil "url-ns" "url/url-ns.el" (21678 60840 509788 -;;;;;; 711000)) +;;;### (autoloads nil "url-ns" "url/url-ns.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-ns.el (autoload 'isPlainHostName "url-ns" "\ @@ -29153,8 +29207,8 @@ Fetch a data URL (RFC 2397). ;;;*** -;;;### (autoloads nil "url-parse" "url/url-parse.el" (21678 60840 -;;;;;; 509788 711000)) +;;;### (autoloads nil "url-parse" "url/url-parse.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-parse.el (autoload 'url-recreate-url "url-parse" "\ @@ -29205,8 +29259,8 @@ parses to ;;;*** -;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21678 60840 -;;;;;; 509788 711000)) +;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-privacy.el (autoload 'url-setup-privacy-info "url-privacy" "\ @@ -29216,8 +29270,8 @@ Setup variables that expose info about you and your system. ;;;*** -;;;### (autoloads nil "url-queue" "url/url-queue.el" (21678 60840 -;;;;;; 509788 711000)) +;;;### (autoloads nil "url-queue" "url/url-queue.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-queue.el (autoload 'url-queue-retrieve "url-queue" "\ @@ -29231,8 +29285,8 @@ The variable `url-queue-timeout' sets a timeout. ;;;*** -;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21678 60840 -;;;;;; 509788 711000)) +;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21670 32331 +;;;;;; 885635 586000)) ;;; Generated autoloads from url/url-tramp.el (defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\ @@ -29250,8 +29304,8 @@ would have been passed to OPERATION. ;;;*** -;;;### (autoloads nil "url-util" "url/url-util.el" (21678 60840 513788 -;;;;;; 871000)) +;;;### (autoloads nil "url-util" "url/url-util.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from url/url-util.el (defvar url-debug nil "\ @@ -29419,8 +29473,8 @@ This uses `url-current-object', set locally to the buffer. ;;;*** -;;;### (autoloads nil "userlock" "userlock.el" (21678 60840 513788 -;;;;;; 871000)) +;;;### (autoloads nil "userlock" "userlock.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from userlock.el (autoload 'ask-user-about-lock "userlock" "\ @@ -29448,8 +29502,8 @@ The buffer in question is current when this function is called. ;;;*** -;;;### (autoloads nil "utf-7" "international/utf-7.el" (21678 60839 -;;;;;; 785759 709000)) +;;;### (autoloads nil "utf-7" "international/utf-7.el" (21670 32331 +;;;;;; 385639 720000)) ;;; Generated autoloads from international/utf-7.el (autoload 'utf-7-post-read-conversion "utf-7" "\ @@ -29474,7 +29528,7 @@ The buffer in question is current when this function is called. ;;;*** -;;;### (autoloads nil "utf7" "gnus/utf7.el" (21678 60839 733757 619000)) +;;;### (autoloads nil "utf7" "gnus/utf7.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gnus/utf7.el (autoload 'utf7-encode "utf7" "\ @@ -29484,8 +29538,8 @@ Encode UTF-7 STRING. Use IMAP modification if FOR-IMAP is non-nil. ;;;*** -;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21678 60839 -;;;;;; 893764 49000)) +;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21855 577 67944 +;;;;;; 554000)) ;;; Generated autoloads from mail/uudecode.el (autoload 'uudecode-decode-region-external "uudecode" "\ @@ -29509,7 +29563,7 @@ If FILE-NAME is non-nil, save the result to FILE-NAME. ;;;*** -;;;### (autoloads nil "vc" "vc/vc.el" (21756 63738 30469 750000)) +;;;### (autoloads nil "vc" "vc/vc.el" (21850 34915 137255 549000)) ;;; Generated autoloads from vc/vc.el (defvar vc-checkout-hook nil "\ @@ -29747,6 +29801,16 @@ tip revision are merged into the working file. (defalias 'vc-update 'vc-pull) +(autoload 'vc-push "vc" "\ +Push the current branch. +You must be visiting a version controlled file, or in a `vc-dir' buffer. +On a distributed version control system, this runs a \"push\" +operation on the current branch, prompting for the precise command +if required. Optional prefix ARG non-nil forces a prompt. +On a non-distributed version control system, this signals an error. + +\(fn &optional ARG)" t nil) + (autoload 'vc-switch-backend "vc" "\ Make BACKEND the current version control system for FILE. FILE must already be registered in BACKEND. The change is not @@ -29806,8 +29870,8 @@ Return the branch part of a revision number REV. ;;;*** -;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21678 60840 -;;;;;; 537789 831000)) +;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21850 34915 +;;;;;; 127238 802000)) ;;; Generated autoloads from vc/vc-annotate.el (autoload 'vc-annotate "vc-annotate" "\ @@ -29846,8 +29910,8 @@ should be applied to the background or to the foreground. ;;;*** -;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21743 64718 144093 -;;;;;; 773000)) +;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21852 24382 97237 +;;;;;; 703000)) ;;; Generated autoloads from vc/vc-bzr.el (defconst vc-bzr-admin-dirname ".bzr" "\ @@ -29863,8 +29927,8 @@ Name of the format file in a .bzr directory.") ;;;*** -;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21743 64718 148093 -;;;;;; 697000)) +;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21826 49707 480493 +;;;;;; 554000)) ;;; Generated autoloads from vc/vc-cvs.el (defun vc-cvs-registered (f) "Return non-nil if file F is registered with CVS." @@ -29875,8 +29939,8 @@ Name of the format file in a .bzr directory.") ;;;*** -;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21694 48017 622101 -;;;;;; 735000)) +;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21842 40083 319216 +;;;;;; 272000)) ;;; Generated autoloads from vc/vc-dir.el (autoload 'vc-dir "vc-dir" "\ @@ -29900,8 +29964,8 @@ These are the commands available for use in the file status buffer: ;;;*** -;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21803 -;;;;;; 61751 309339 979000)) +;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21862 +;;;;;; 60209 928657 362000)) ;;; Generated autoloads from vc/vc-dispatcher.el (autoload 'vc-do-command "vc-dispatcher" "\ @@ -29924,8 +29988,8 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21743 64718 148093 -;;;;;; 697000)) +;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21850 34915 127238 +;;;;;; 802000)) ;;; Generated autoloads from vc/vc-git.el (defun vc-git-registered (file) "Return non-nil if FILE is registered with git." @@ -29936,7 +30000,7 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21743 64718 148093 697000)) +;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21842 40086 557968 381000)) ;;; Generated autoloads from vc/vc-hg.el (defun vc-hg-registered (file) "Return non-nil if FILE is registered with hg." @@ -29947,8 +30011,8 @@ case, and the process object in the asynchronous case. ;;;*** -;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21743 64718 148093 -;;;;;; 697000)) +;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21826 49712 314797 +;;;;;; 780000)) ;;; Generated autoloads from vc/vc-mtn.el (defconst vc-mtn-admin-dir "_MTN" "\ @@ -29964,8 +30028,8 @@ Name of the monotone directory's format file.") ;;;*** -;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21756 63738 26469 -;;;;;; 850000)) +;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21826 49714 91236 +;;;;;; 252000)) ;;; Generated autoloads from vc/vc-rcs.el (defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\ @@ -29978,8 +30042,8 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** -;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21756 63738 26469 -;;;;;; 850000)) +;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21748 18111 534605 +;;;;;; 274000)) ;;; Generated autoloads from vc/vc-sccs.el (defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\ @@ -29997,8 +30061,8 @@ find any project directory." (let ((project-dir (getenv "PROJECTDIR")) dirs dir) ;;;*** -;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21756 63738 26469 -;;;;;; 850000)) +;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21748 18111 534605 +;;;;;; 274000)) ;;; Generated autoloads from vc/vc-src.el (defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\ @@ -30011,8 +30075,8 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** -;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21743 64718 148093 -;;;;;; 697000)) +;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21744 21055 525326 +;;;;;; 515000)) ;;; Generated autoloads from vc/vc-svn.el (defun vc-svn-registered (f) (let ((admin-dir (cond ((and (eq system-type 'windows-nt) @@ -30025,8 +30089,8 @@ For a description of possible values, see `vc-check-master-templates'.") ;;;*** -;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21678 -;;;;;; 60840 349782 310000)) +;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from progmodes/vera-mode.el (push (purecopy '(vera-mode 2 28)) package--builtin-versions) (add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode)) @@ -30085,7 +30149,7 @@ Key bindings: ;;;*** ;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el" -;;;;;; (21737 7371 369619 402000)) +;;;;;; (21862 60209 898658 614000)) ;;; Generated autoloads from progmodes/verilog-mode.el (autoload 'verilog-mode "verilog-mode" "\ @@ -30120,7 +30184,7 @@ Variables controlling indentation/edit style: Set to 0 to get such code to lined up underneath the task or function keyword. `verilog-indent-level-directive' (default 1) - Indentation of `ifdef/`endif blocks. + Indentation of \\=`ifdef/\\=`endif blocks. `verilog-cexp-indent' (default 1) Indentation of Verilog statements broken across lines i.e.: if (a) @@ -30224,8 +30288,8 @@ Key bindings specific to `verilog-mode-map' are: ;;;*** -;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21799 -;;;;;; 14913 220433 536000)) +;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21866 +;;;;;; 57262 717944 751000)) ;;; Generated autoloads from progmodes/vhdl-mode.el (autoload 'vhdl-mode "vhdl-mode" "\ @@ -30779,8 +30843,8 @@ Key bindings: ;;;*** -;;;### (autoloads nil "viet-util" "language/viet-util.el" (21678 -;;;;;; 60839 821761 156000)) +;;;### (autoloads nil "viet-util" "language/viet-util.el" (21670 +;;;;;; 32331 385639 720000)) ;;; Generated autoloads from language/viet-util.el (autoload 'viet-encode-viscii-char "viet-util" "\ @@ -30824,7 +30888,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics. ;;;*** -;;;### (autoloads nil "view" "view.el" (21678 60840 553790 471000)) +;;;### (autoloads nil "view" "view.el" (21670 32331 885635 586000)) ;;; Generated autoloads from view.el (defvar view-remove-frame-by-deleting t "\ @@ -31080,8 +31144,8 @@ Exit View mode and make the current buffer editable. ;;;*** -;;;### (autoloads nil "viper" "emulation/viper.el" (21678 60839 513748 -;;;;;; 778000)) +;;;### (autoloads nil "viper" "emulation/viper.el" (21670 32330 885624 +;;;;;; 725000)) ;;; Generated autoloads from emulation/viper.el (push (purecopy '(viper 3 14 1)) package--builtin-versions) @@ -31098,8 +31162,8 @@ Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Top'. ;;;*** -;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21678 -;;;;;; 60839 497748 135000)) +;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21670 +;;;;;; 32330 885624 725000)) ;;; Generated autoloads from emacs-lisp/warnings.el (defvar warning-prefix-function nil "\ @@ -31189,7 +31253,7 @@ this is equivalent to `display-warning', using ;;;*** -;;;### (autoloads nil "wdired" "wdired.el" (21678 60840 553790 471000)) +;;;### (autoloads nil "wdired" "wdired.el" (21670 32331 885635 586000)) ;;; Generated autoloads from wdired.el (push (purecopy '(wdired 2 0)) package--builtin-versions) @@ -31207,8 +31271,8 @@ See `wdired-mode'. ;;;*** -;;;### (autoloads nil "webjump" "net/webjump.el" (21678 60840 9768 -;;;;;; 710000)) +;;;### (autoloads nil "webjump" "net/webjump.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from net/webjump.el (autoload 'webjump "webjump" "\ @@ -31224,8 +31288,8 @@ Please submit bug reports and other feedback to the author, Neil W. Van Dyke ;;;*** -;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21678 -;;;;;; 60840 377783 430000)) +;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21670 +;;;;;; 32331 885635 586000)) ;;; Generated autoloads from progmodes/which-func.el (put 'which-func-format 'risky-local-variable t) (put 'which-func-current 'risky-local-variable t) @@ -31255,8 +31319,8 @@ in certain major modes. ;;;*** -;;;### (autoloads nil "whitespace" "whitespace.el" (21678 60840 557790 -;;;;;; 631000)) +;;;### (autoloads nil "whitespace" "whitespace.el" (21828 42028 670509 +;;;;;; 602000)) ;;; Generated autoloads from whitespace.el (push (purecopy '(whitespace 13 2 2)) package--builtin-versions) @@ -31624,8 +31688,8 @@ cleaning up these problems. ;;;*** -;;;### (autoloads nil "wid-browse" "wid-browse.el" (21678 60840 557790 -;;;;;; 631000)) +;;;### (autoloads nil "wid-browse" "wid-browse.el" (21670 32331 885635 +;;;;;; 586000)) ;;; Generated autoloads from wid-browse.el (autoload 'widget-browse-at "wid-browse" "\ @@ -31653,8 +31717,8 @@ if ARG is omitted or nil. ;;;*** -;;;### (autoloads nil "wid-edit" "wid-edit.el" (21678 60840 561790 -;;;;;; 791000)) +;;;### (autoloads nil "wid-edit" "wid-edit.el" (21862 60209 928657 +;;;;;; 362000)) ;;; Generated autoloads from wid-edit.el (autoload 'widgetp "wid-edit" "\ @@ -31696,8 +31760,8 @@ Setup current buffer so editing string widgets works. ;;;*** -;;;### (autoloads nil "windmove" "windmove.el" (21733 15494 362925 -;;;;;; 968000)) +;;;### (autoloads nil "windmove" "windmove.el" (21852 24382 97237 +;;;;;; 703000)) ;;; Generated autoloads from windmove.el (autoload 'windmove-left "windmove" "\ @@ -31749,7 +31813,7 @@ Default MODIFIER is 'shift. ;;;*** -;;;### (autoloads nil "winner" "winner.el" (21733 15494 362925 968000)) +;;;### (autoloads nil "winner" "winner.el" (21733 50750 334730 5000)) ;;; Generated autoloads from winner.el (defvar winner-mode nil "\ @@ -31772,7 +31836,7 @@ the mode if ARG is omitted or nil, and toggle it if ARG is `toggle'. ;;;*** -;;;### (autoloads nil "woman" "woman.el" (21678 60840 573791 271000)) +;;;### (autoloads nil "woman" "woman.el" (21855 577 547944 710000)) ;;; Generated autoloads from woman.el (push (purecopy '(woman 0 551)) package--builtin-versions) @@ -31821,7 +31885,7 @@ Default bookmark handler for Woman buffers. ;;;*** -;;;### (autoloads nil "xml" "xml.el" (21678 60840 573791 271000)) +;;;### (autoloads nil "xml" "xml.el" (21670 32331 885635 586000)) ;;; Generated autoloads from xml.el (autoload 'xml-parse-file "xml" "\ @@ -31877,8 +31941,8 @@ Both features can be combined by providing a cons cell ;;;*** -;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21678 60840 29769 -;;;;;; 509000)) +;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21670 32331 385639 +;;;;;; 720000)) ;;; Generated autoloads from nxml/xmltok.el (autoload 'xmltok-get-declared-encoding-position "xmltok" "\ @@ -31896,8 +31960,8 @@ If LIMIT is non-nil, then do not consider characters beyond LIMIT. ;;;*** -;;;### (autoloads nil "xref" "progmodes/xref.el" (21738 45410 880804 -;;;;;; 179000)) +;;;### (autoloads nil "xref" "progmodes/xref.el" (21861 5946 771514 +;;;;;; 868000)) ;;; Generated autoloads from progmodes/xref.el (autoload 'xref-pop-marker-stack "xref" "\ @@ -31933,6 +31997,11 @@ With prefix argument, prompt for the identifier. \(fn IDENTIFIER)" t nil) +(autoload 'xref-find-regexp "xref" "\ +Find all matches for REGEXP. + +\(fn REGEXP)" t nil) + (autoload 'xref-find-apropos "xref" "\ Find all meaningful symbols that match PATTERN. The argument has the same meaning as in `apropos'. @@ -31946,8 +32015,8 @@ The argument has the same meaning as in `apropos'. ;;;*** -;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21779 25618 200348 -;;;;;; 730000)) +;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21852 24382 117243 +;;;;;; 951000)) ;;; Generated autoloads from xt-mouse.el (defvar xterm-mouse-mode nil "\ @@ -31976,7 +32045,7 @@ down the SHIFT key while pressing the mouse button. ;;;*** -;;;### (autoloads nil "yenc" "gnus/yenc.el" (21678 60839 733757 619000)) +;;;### (autoloads nil "yenc" "gnus/yenc.el" (21670 32331 385639 720000)) ;;; Generated autoloads from gnus/yenc.el (autoload 'yenc-decode-region "yenc" "\ @@ -31991,7 +32060,7 @@ Extract file name from an yenc header. ;;;*** -;;;### (autoloads nil "zone" "play/zone.el" (21678 60840 213776 870000)) +;;;### (autoloads nil "zone" "play/zone.el" (21670 32331 385639 720000)) ;;; Generated autoloads from play/zone.el (autoload 'zone "zone" "\ @@ -32037,11 +32106,9 @@ Zone out, completely. ;;;;;; "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el" ;;;;;; "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el" ;;;;;; "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el" -;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el" -;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el" +;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el" ;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el" -;;;;;; "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el" -;;;;;; "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el" +;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el" ;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el" ;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el" ;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el" @@ -32064,42 +32131,39 @@ Zone out, completely. ;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el" ;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el" ;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el" -;;;;;; "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el" -;;;;;; "cedet/semantic/wisent/python-wy.el" "cedet/semantic/wisent/python.el" -;;;;;; "cedet/semantic/wisent/wisent.el" "cedet/srecode/args.el" -;;;;;; "cedet/srecode/compile.el" "cedet/srecode/cpp.el" "cedet/srecode/ctxt.el" -;;;;;; "cedet/srecode/dictionary.el" "cedet/srecode/document.el" +;;;;;; "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el" +;;;;;; "cedet/srecode/args.el" "cedet/srecode/compile.el" "cedet/srecode/cpp.el" +;;;;;; "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" "cedet/srecode/document.el" ;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el" ;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el" ;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el" ;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el" -;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el" -;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el" -;;;;;; "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el" -;;;;;; "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el" -;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" -;;;;;; "emacs-lisp/cl-extra.el" "emacs-lisp/cl-generic.el" "emacs-lisp/cl-loaddefs.el" -;;;;;; "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" -;;;;;; "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-compat.el" "emacs-lisp/eieio-custom.el" -;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el" -;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/generator.el" -;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el" -;;;;;; "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el" -;;;;;; "emulation/cua-gmrk.el" "emulation/edt-lk201.el" "emulation/edt-mapper.el" -;;;;;; "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/viper-cmd.el" -;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el" -;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el" -;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el" -;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el" -;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el" -;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el" -;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el" -;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el" -;;;;;; "eshell/em-tramp.el" "eshell/em-unix.el" "eshell/em-xtra.el" -;;;;;; "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.el" -;;;;;; "eshell/esh-groups.el" "eshell/esh-io.el" "eshell/esh-module.el" -;;;;;; "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el" -;;;;;; "eshell/esh-var.el" "ezimage.el" "finder-inf.el" "format-spec.el" +;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt.el" "cedet/srecode/table.el" +;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el" +;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dom.el" "dos-fns.el" +;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/avl-tree.el" +;;;;;; "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" "emacs-lisp/cl-extra.el" +;;;;;; "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el" +;;;;;; "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-compat.el" +;;;;;; "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el" +;;;;;; "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.el" +;;;;;; "emacs-lisp/generator.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" +;;;;;; "emacs-lisp/smie.el" "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el" +;;;;;; "emacs-lisp/tcover-unsafep.el" "emulation/cua-gmrk.el" "emulation/edt-lk201.el" +;;;;;; "emulation/edt-mapper.el" "emulation/edt-pc.el" "emulation/edt-vt100.el" +;;;;;; "emulation/viper-cmd.el" "emulation/viper-ex.el" "emulation/viper-init.el" +;;;;;; "emulation/viper-keym.el" "emulation/viper-macs.el" "emulation/viper-mous.el" +;;;;;; "emulation/viper-util.el" "erc/erc-backend.el" "erc/erc-goodies.el" +;;;;;; "erc/erc-ibuffer.el" "erc/erc-lang.el" "eshell/em-alias.el" +;;;;;; "eshell/em-banner.el" "eshell/em-basic.el" "eshell/em-cmpl.el" +;;;;;; "eshell/em-dirs.el" "eshell/em-glob.el" "eshell/em-hist.el" +;;;;;; "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el" +;;;;;; "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el" +;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el" +;;;;;; "eshell/em-xtra.el" "eshell/esh-arg.el" "eshell/esh-cmd.el" +;;;;;; "eshell/esh-ext.el" "eshell/esh-groups.el" "eshell/esh-io.el" +;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el" +;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "format-spec.el" ;;;;;; "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el" ;;;;;; "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cloud.el" ;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el" @@ -32121,44 +32185,29 @@ Zone out, completely. ;;;;;; "gnus/rfc1843.el" "gnus/rfc2045.el" "gnus/rfc2047.el" "gnus/rfc2231.el" ;;;;;; "gnus/rtree.el" "gnus/sieve-manage.el" "gnus/smime.el" "gnus/spam-stat.el" ;;;;;; "gnus/spam-wash.el" "hex-util.el" "hfy-cmap.el" "ibuf-ext.el" -;;;;;; "international/cp51932.el" "international/eucjp-ms.el" "international/fontset.el" -;;;;;; "international/iso-ascii.el" "international/ja-dic-cnv.el" -;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el" -;;;;;; "international/uni-brackets.el" "international/uni-category.el" -;;;;;; "international/uni-combining.el" "international/uni-comment.el" -;;;;;; "international/uni-decimal.el" "international/uni-decomposition.el" -;;;;;; "international/uni-digit.el" "international/uni-lowercase.el" -;;;;;; "international/uni-mirrored.el" "international/uni-name.el" -;;;;;; "international/uni-numeric.el" "international/uni-old-name.el" -;;;;;; "international/uni-titlecase.el" "international/uni-uppercase.el" -;;;;;; "kermit.el" "language/hanja-util.el" "language/thai-word.el" -;;;;;; "ldefs-boot.el" "leim/ja-dic/ja-dic.el" "leim/quail/4Corner.el" -;;;;;; "leim/quail/ARRAY30.el" "leim/quail/CCDOSPY.el" "leim/quail/CTLau-b5.el" -;;;;;; "leim/quail/CTLau.el" "leim/quail/ECDICT.el" "leim/quail/ETZY.el" -;;;;;; "leim/quail/PY-b5.el" "leim/quail/PY.el" "leim/quail/Punct-b5.el" -;;;;;; "leim/quail/Punct.el" "leim/quail/QJ-b5.el" "leim/quail/QJ.el" -;;;;;; "leim/quail/SW.el" "leim/quail/TONEPY.el" "leim/quail/ZIRANMA.el" -;;;;;; "leim/quail/ZOZY.el" "leim/quail/arabic.el" "leim/quail/croatian.el" -;;;;;; "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" "leim/quail/czech.el" -;;;;;; "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el" -;;;;;; "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el" -;;;;;; "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el" -;;;;;; "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el" -;;;;;; "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" -;;;;;; "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el" -;;;;;; "leim/quail/py-punct.el" "leim/quail/pypunct-b5.el" "leim/quail/quick-b5.el" -;;;;;; "leim/quail/quick-cns.el" "leim/quail/rfc1345.el" "leim/quail/sgml-input.el" +;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el" +;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el" +;;;;;; "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el" +;;;;;; "leim/quail/arabic.el" "leim/quail/croatian.el" "leim/quail/cyril-jis.el" +;;;;;; "leim/quail/cyrillic.el" "leim/quail/czech.el" "leim/quail/ethiopic.el" +;;;;;; "leim/quail/georgian.el" "leim/quail/greek.el" "leim/quail/hanja-jis.el" +;;;;;; "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el" +;;;;;; "leim/quail/indian.el" "leim/quail/ipa-praat.el" "leim/quail/ipa.el" +;;;;;; "leim/quail/japanese.el" "leim/quail/lao.el" "leim/quail/latin-alt.el" +;;;;;; "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" "leim/quail/latin-pre.el" +;;;;;; "leim/quail/lrt.el" "leim/quail/persian.el" "leim/quail/py-punct.el" +;;;;;; "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" "leim/quail/sgml-input.el" ;;;;;; "leim/quail/sisheng.el" "leim/quail/slovak.el" "leim/quail/symbol-ksc.el" -;;;;;; "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/tsang-b5.el" -;;;;;; "leim/quail/tsang-cns.el" "leim/quail/viqr.el" "leim/quail/vntelex.el" -;;;;;; "leim/quail/vnvni.el" "leim/quail/welsh.el" "loadup.el" "mail/blessmail.el" -;;;;;; "mail/mailheader.el" "mail/mspools.el" "mail/rfc2368.el" -;;;;;; "mail/rfc822.el" "mail/rmail-spam-filter.el" "mail/rmailedit.el" -;;;;;; "mail/rmailkwd.el" "mail/rmailmm.el" "mail/rmailmsc.el" "mail/rmailsort.el" -;;;;;; "mail/rmailsum.el" "mail/undigest.el" "mh-e/mh-acros.el" -;;;;;; "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el" -;;;;;; "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el" -;;;;;; "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el" +;;;;;; "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/viqr.el" +;;;;;; "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el" +;;;;;; "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mspools.el" +;;;;;; "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el" +;;;;;; "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el" +;;;;;; "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el" +;;;;;; "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el" +;;;;;; "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el" +;;;;;; "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el" +;;;;;; "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el" ;;;;;; "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el" ;;;;;; "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" "mh-e/mh-show.el" ;;;;;; "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el" @@ -32212,23 +32261,22 @@ Zone out, completely. ;;;;;; "progmodes/ebnf-otz.el" "progmodes/ebnf-yac.el" "progmodes/idlw-complete-structtag.el" ;;;;;; "progmodes/idlw-help.el" "progmodes/idlw-toolbar.el" "progmodes/mantemp.el" ;;;;;; "progmodes/xscheme.el" "ps-def.el" "ps-mule.el" "ps-samp.el" -;;;;;; "saveplace.el" "sb-image.el" "scroll-bar.el" "soundex.el" -;;;;;; "subdirs.el" "tempo.el" "textmodes/bib-mode.el" "textmodes/makeinfo.el" -;;;;;; "textmodes/page-ext.el" "textmodes/refbib.el" "textmodes/refer.el" -;;;;;; "textmodes/reftex-auc.el" "textmodes/reftex-cite.el" "textmodes/reftex-dcr.el" -;;;;;; "textmodes/reftex-global.el" "textmodes/reftex-index.el" -;;;;;; "textmodes/reftex-parse.el" "textmodes/reftex-ref.el" "textmodes/reftex-sel.el" -;;;;;; "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el" "timezone.el" -;;;;;; "tooltip.el" "tree-widget.el" "url/url-about.el" "url/url-cookie.el" -;;;;;; "url/url-dired.el" "url/url-domsuf.el" "url/url-expand.el" -;;;;;; "url/url-ftp.el" "url/url-future.el" "url/url-history.el" -;;;;;; "url/url-imap.el" "url/url-methods.el" "url/url-nfs.el" "url/url-proxy.el" -;;;;;; "url/url-vars.el" "vc/ediff-diff.el" "vc/ediff-init.el" "vc/ediff-merg.el" -;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el" -;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el" -;;;;;; "vc/vc-filewise.el" "vcursor.el" "vt-control.el" "vt100-led.el" -;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (21804 4067 633695 -;;;;;; 693000)) +;;;;;; "sb-image.el" "scroll-bar.el" "soundex.el" "subdirs.el" "tempo.el" +;;;;;; "textmodes/bib-mode.el" "textmodes/makeinfo.el" "textmodes/page-ext.el" +;;;;;; "textmodes/refbib.el" "textmodes/refer.el" "textmodes/reftex-auc.el" +;;;;;; "textmodes/reftex-cite.el" "textmodes/reftex-dcr.el" "textmodes/reftex-global.el" +;;;;;; "textmodes/reftex-index.el" "textmodes/reftex-parse.el" "textmodes/reftex-ref.el" +;;;;;; "textmodes/reftex-sel.el" "textmodes/reftex-toc.el" "textmodes/texnfo-upd.el" +;;;;;; "timezone.el" "tooltip.el" "tree-widget.el" "url/url-about.el" +;;;;;; "url/url-cookie.el" "url/url-dired.el" "url/url-domsuf.el" +;;;;;; "url/url-expand.el" "url/url-ftp.el" "url/url-future.el" +;;;;;; "url/url-history.el" "url/url-imap.el" "url/url-methods.el" +;;;;;; "url/url-nfs.el" "url/url-proxy.el" "url/url-vars.el" "vc/ediff-diff.el" +;;;;;; "vc/ediff-init.el" "vc/ediff-merg.el" "vc/ediff-ptch.el" +;;;;;; "vc/ediff-vers.el" "vc/ediff-wind.el" "vc/pcvs-info.el" "vc/pcvs-parse.el" +;;;;;; "vc/pcvs-util.el" "vc/vc-dav.el" "vc/vc-filewise.el" "vcursor.el" +;;;;;; "vt-control.el" "vt100-led.el" "w32-fns.el" "w32-vars.el" +;;;;;; "x-dnd.el") (21868 12847 464673 840000)) ;;;*** diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el index 08d53ea721c..ecee2434373 100644 --- a/lisp/leim/quail/cyrillic.el +++ b/lisp/leim/quail/cyrillic.el @@ -1244,8 +1244,8 @@ Unicode based." This phonetic layout replaces all the Latin letters with Bulgarian \(Cyrillic) letters based on similarities in their pronunciation or look. -Note that, since the letters 'щ', 'ь', 'ю' and 'я' are attached to the -']', '\', '`' and '[' keys respectively, Caps Lock does not affect them." +Note that, since the letters ‘щ’, ‘ь’, ‘ю’ and ‘я’ are attached to the +‘]’, ‘\’, ‘\\=`’ and ‘[’ keys respectively, Caps Lock does not affect them." nil t t t t nil nil nil nil nil t) ;; Ю 1! 2@ 3№ 4$ 5% 6€ 7§ 8* 9( 0) -– =+ ьѝ @@ -1412,7 +1412,7 @@ The letters Ц, М, Ч, Р, Л, Б and Ы are not affected by Caps Lock. In addition to original Bulgarian typewriter layout, keys \\ and | are transformed into ' and Ы respectively. Some keyboards mark these keys as being transformed into ( and ) respectively. For ( and ), use -` and ~ respectively. This input method follows XKB." +\\=` and ~ respectively. This input method follows XKB." nil t t t t nil nil nil nil nil t) ;; () 1! 2? 3+ 4" 5% 6= 7: 8/ 9_ 0№ -I .V diff --git a/lisp/leim/quail/ethiopic.el b/lisp/leim/quail/ethiopic.el index d99f649e5e7..7a1cddfff23 100644 --- a/lisp/leim/quail/ethiopic.el +++ b/lisp/leim/quail/ethiopic.el @@ -49,8 +49,8 @@ C-F9 or `M-x ethio-toggle-space' Toggles space characters for keyboard input. The current mode is indicated in mode-line, whether by `_' (ASCII space) or `፡' (Ethiopic colon-like word separator). Even in the `፡' mode, an - ASCII space is inserted if the point is preceded by `an Ethiopic - punctuation followed by zero or more ASCII spaces'. + ASCII space is inserted if the point is preceded by an Ethiopic + punctuation char that is followed by zero or more ASCII spaces. S-F5 or `M-x ethio-toggle-punctuation' Toggles ASCII punctuation and Ethiopic punctuation for keyboard input. diff --git a/lisp/leim/quail/greek.el b/lisp/leim/quail/greek.el index 5c5ead786e7..cf991502e28 100644 --- a/lisp/leim/quail/greek.el +++ b/lisp/leim/quail/greek.el @@ -179,7 +179,7 @@ mark key ------------------------ ypogegrammeni J psili ' or v -dasia ` or V +dasia \\=` or V oxia / varia ? perispomeni \\ or ^ diff --git a/lisp/leim/quail/hebrew.el b/lisp/leim/quail/hebrew.el index fe06b27a922..1601e1e05d0 100644 --- a/lisp/leim/quail/hebrew.el +++ b/lisp/leim/quail/hebrew.el @@ -113,8 +113,8 @@ Only Hebrew-related characters are considered. Based on latest draft of SI-1452 keyboard layout. Only Hebrew-related characters are considered. - '`' is used to switch levels instead of Alt-Gr. -Geresh is mapped to '`k'. + ‘\\=`’ is used to switch levels instead of Alt-Gr. +Geresh is mapped to ‘\\=`k’. " nil t t t t nil nil nil nil nil t) (quail-define-rules @@ -603,8 +603,8 @@ Not suitable for modern Hebrew input. Based on Society of Biblical Literature's SIL keyboard layout. Phonetic and not suitable for modern Hebrew input. - '`' is used to switch levels instead of Alt-Gr. - Euro Sign (€) is mapped to 'Z'. + ‘\\=`’ is used to switch levels instead of Alt-Gr. + Euro Sign (€) is mapped to ‘Z’. " nil t t t t nil nil nil nil nil t) (quail-define-rules diff --git a/lisp/leim/quail/latin-alt.el b/lisp/leim/quail/latin-alt.el index 4c886fa6d6b..0614ecb76e1 100644 --- a/lisp/leim/quail/latin-alt.el +++ b/lisp/leim/quail/latin-alt.el @@ -49,7 +49,7 @@ special (so you can use that to enter a slash). | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã @@ -209,20 +209,20 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "latin-2-alt-postfix" "Latin-2" "2<" t "Latin-2 character input method with postfix modifiers This input method differs from `latin-2-postfix' in that -comma and period are not special (use ` instead). +comma and period are not special (use \\=` instead). | postfix | examples ------------+---------+---------- acute | ' | a' -> á - ogonek | ` | a` -> ą + ogonek | \\=` | a\\=` -> ą diaeresis | \" | a\" -> ä circumflex | ^ | a^ -> â breve | ~ | a~ -> ă - cedilla | ` | c` -> ç + cedilla | \\=` | c\\=` -> ç caron | ~ | c~ -> č dbl. acute | : | o: -> ő - ring | ` | u` -> ů - dot | ` | z` -> ż + ring | \\=` | u\\=` -> ů + dot | \\=` | z\\=` -> ż stroke | / | d/ -> đ others | / | s/ -> ß @@ -403,17 +403,17 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "latin-3-alt-postfix" "Latin-3" "3<" t "Latin-3 character input method with postfix modifiers This input method differs from `latin-3-postfix' in that -comma is not special (use ` instead), and period is not +comma is not special (use \\=` instead), and period is not special (use slash instead). | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä dot | / | c/ -> ċ i/ -> ı I/ -> İ - cedilla | ` | c` -> ç + cedilla | \\=` | c\\=` -> ç breve | ~ | g~ -> ğ tilde | ~ | n~ -> ñ stroke | / | h/ -> ħ @@ -576,7 +576,7 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "latin-4-alt-postfix" "Latin-4" "4<" t "Latin-4 characters input method with postfix modifiers This input method differs from `latin-4-postfix' in that -comma is not special (use ` instead), and period is not +comma is not special (use \\=` instead), and period is not special (use ~ instead). | postfix | examples @@ -584,12 +584,12 @@ special (use ~ instead). acute | ' | a' -> á circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä - ogonek | ` | a` -> ą + ogonek | \\=` | a\\=` -> ą macron | - | a- -> ā tilde | ~ | a~ -> ã caron | ~ | c~ -> č dot | ~ | e~ -> ė - cedilla | ` | k` -> ķ g` -> ģ + cedilla | \\=` | k\\=` -> ķ g\\=` -> ģ stroke | / | d/ -> đ nordic | / | a/ -> å e/ -> æ o/ -> ø others | / | s/ -> ß n/ -> ŋ k/ -> ĸ @@ -773,18 +773,18 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "latin-5-alt-postfix" "Latin-5" "5<" t "Latin-5 characters input method with postfix modifiers This input method differs from `latin-5-postfix' in that -comma is not special (use ` instead), and period is not +comma is not special (use \\=` instead), and period is not special (use / instead). | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã breve | ~ | g~ -> ğ - cedilla | ` | c` -> ç + cedilla | \\=` | c\\=` -> ç dot | / | i/ -> ı I/ -> İ nordic | / | a/ -> å e/ -> æ o/ -> ø others | / | s/ -> ß @@ -930,8 +930,8 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "french-alt-postfix" "French" "FR<" t "French (Français) input method with postfix modifiers -` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. -Par exemple: a` -> à e' -> é. +\\=` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. +Par exemple: a\\=` -> à e' -> é. Ç, «, et » sont produits par C/, <<, et >>. @@ -1011,15 +1011,15 @@ Par exemple: e'' -> e' "italian-alt-postfix" "Latin-1" "IT<" t "Italian (Italiano) input method with postfix modifiers -a' -> á A' -> Á a` -> à A` -> À i^ -> î << -> « -e' -> é E' -> É e` -> è E` -> È I^ -> Î >> -> » -i' -> í I' -> Í i` -> ì I` -> Ì o_ -> º -o' -> ó O' -> Ó o` -> ò O` -> Ò a_ -> ª -u' -> ú U' -> Ú u` -> ù U` -> Ù +a' -> á A' -> Á a\\=` -> à A\\=` -> À i^ -> î << -> « +e' -> é E' -> É e\\=` -> è E\\=` -> È I^ -> Î >> -> » +i' -> í I' -> Í i\\=` -> ì I\\=` -> Ì o_ -> º +o' -> ó O' -> Ó o\\=` -> ò O\\=` -> Ò a_ -> ª +u' -> ú U' -> Ú u\\=` -> ù U\\=` -> Ù This method is for purists who like accents the old way. -Doubling the postfix separates the letter and postfix: e.g. a`` -> a` +Doubling the postfix separates the letter and postfix: e.g. a\\=`\\=` -> a\\=` " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules @@ -1083,21 +1083,21 @@ Doubling the postfix separates the letter and postfix: e.g. a`` -> a` "turkish-alt-postfix" "Turkish" "TR«" t "Turkish (Türkçe) input method with postfix modifiers. This input method differs from `turkish-postfix' in that -comma is not special (use ` instead). +comma is not special (use \\=` instead). turkish-latin-3-alt-postfix is an obsolete alias for turkish-alt-postfix. Note for I, ı, İ, i. A^ -> Â -C` -> Ç +C\\=` -> Ç G^ -> Ğ I -> I i -> ı I/ -> İ i/ -> i O\" -> Ö -S` -> Ş +S\\=` -> Ş U\" -> Ü U^ -> Û @@ -1161,7 +1161,7 @@ Caters for French and Turkish as well as Dutch. | postfix | ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â Turkish | various | i/ -> ı s, -> ş g^ -> ğ I/ -> İ | | S, -> Ş G^ -> Ğ @@ -1180,61 +1180,61 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' ("ij" ?ij) ;; LATIN SMALL LIGATURE IJ ("IJ" ?IJ) ;; LATIN CAPITAL LIGATURE IJ ;; “Trema on the second letter of vowel pair.” Yudit uses `:', not `"'. - ("\"a" ?ä) ;; LATIN SMALL LETTER A WITH DIAERESIS - ("\"e" ?ë) ;; LATIN SMALL LETTER E WITH DIAERESIS - ("\"i" ?ï) ;; LATIN SMALL LETTER I WITH DIAERESIS - ("\"o" ?ö) ;; LATIN SMALL LETTER O WITH DIAERESIS - ("\"u" ?ü) ;; LATIN SMALL LETTER U WITH DIAERESIS - ("\"A" ?Ä) ;; LATIN CAPITAL LETTER A WITH DIAERESIS - ("\"E" ?Ë) ;; LATIN CAPITAL LETTER E WITH DIAERESIS - ("\"I" ?Ï) ;; LATIN CAPITAL LETTER I WITH DIAERESIS - ("\"O" ?Ö) ;; LATIN CAPITAL LETTER O WITH DIAERESIS - ("\"U" ?Ü) ;; LATIN CAPITAL LETTER U WITH DIAERESIS + ("\"a" ?ä) ;; LATIN SMALL LETTER A WITH DIAERESIS + ("\"e" ?ë) ;; LATIN SMALL LETTER E WITH DIAERESIS + ("\"i" ?ï) ;; LATIN SMALL LETTER I WITH DIAERESIS + ("\"o" ?ö) ;; LATIN SMALL LETTER O WITH DIAERESIS + ("\"u" ?ü) ;; LATIN SMALL LETTER U WITH DIAERESIS + ("\"A" ?Ä) ;; LATIN CAPITAL LETTER A WITH DIAERESIS + ("\"E" ?Ë) ;; LATIN CAPITAL LETTER E WITH DIAERESIS + ("\"I" ?Ï) ;; LATIN CAPITAL LETTER I WITH DIAERESIS + ("\"O" ?Ö) ;; LATIN CAPITAL LETTER O WITH DIAERESIS + ("\"U" ?Ü) ;; LATIN CAPITAL LETTER U WITH DIAERESIS ;; “Acute, marking emphasis on long vowels”: - ("a'" ?á) ;; LATIN SMALL LETTER A WITH ACUTE - ("e'" ?é) ;; LATIN SMALL LETTER E WITH ACUTE - ("i'" ?í) ;; LATIN SMALL LETTER I WITH ACUTE - ("o'" ?ó) ;; LATIN SMALL LETTER O WITH ACUTE - ("u'" ?ú) ;; LATIN SMALL LETTER U WITH ACUTE - ("A'" ?Á) ;; LATIN CAPITAL LETTER A WITH ACUTE - ("E'" ?É) ;; LATIN CAPITAL LETTER E WITH ACUTE - ("I'" ?Í) ;; LATIN CAPITAL LETTER I WITH ACUTE - ("O'" ?Ó) ;; LATIN CAPITAL LETTER O WITH ACUTE - ("U'" ?Ú) ;; LATIN CAPITAL LETTER U WITH ACUTE + ("a'" ?á) ;; LATIN SMALL LETTER A WITH ACUTE + ("e'" ?é) ;; LATIN SMALL LETTER E WITH ACUTE + ("i'" ?í) ;; LATIN SMALL LETTER I WITH ACUTE + ("o'" ?ó) ;; LATIN SMALL LETTER O WITH ACUTE + ("u'" ?ú) ;; LATIN SMALL LETTER U WITH ACUTE + ("A'" ?Á) ;; LATIN CAPITAL LETTER A WITH ACUTE + ("E'" ?É) ;; LATIN CAPITAL LETTER E WITH ACUTE + ("I'" ?Í) ;; LATIN CAPITAL LETTER I WITH ACUTE + ("O'" ?Ó) ;; LATIN CAPITAL LETTER O WITH ACUTE + ("U'" ?Ú) ;; LATIN CAPITAL LETTER U WITH ACUTE ;; “Grave, marking emphasis on short vowels”: ("a`" ?à) ;; LATIN SMALL LETTER A WITH GRAVE - ("e`" ?è) ;; LATIN SMALL LETTER E WITH GRAVE - ("i`" ?ì) ;; LATIN SMALL LETTER I WITH GRAVE - ("o`" ?ò) ;; LATIN SMALL LETTER O WITH GRAVE - ("u`" ?ù) ;; LATIN SMALL LETTER U WITH GRAVE - ("A`" ?À) ;; LATIN CAPITAL LETTER A WITH GRAVE - ("E`" ?È) ;; LATIN CAPITAL LETTER E WITH GRAVE - ("I`" ?Ì) ;; LATIN CAPITAL LETTER I WITH GRAVE - ("O`" ?Ò) ;; LATIN CAPITAL LETTER O WITH GRAVE + ("e`" ?è) ;; LATIN SMALL LETTER E WITH GRAVE + ("i`" ?ì) ;; LATIN SMALL LETTER I WITH GRAVE + ("o`" ?ò) ;; LATIN SMALL LETTER O WITH GRAVE + ("u`" ?ù) ;; LATIN SMALL LETTER U WITH GRAVE + ("A`" ?À) ;; LATIN CAPITAL LETTER A WITH GRAVE + ("E`" ?È) ;; LATIN CAPITAL LETTER E WITH GRAVE + ("I`" ?Ì) ;; LATIN CAPITAL LETTER I WITH GRAVE + ("O`" ?Ò) ;; LATIN CAPITAL LETTER O WITH GRAVE ("U`" ?Ù) ;; LATIN CAPITAL LETTER U WITH GRAVE ;; “Cater for the use of many French words and use of the circumflex ;; in Frisian.” Yudit used `;' for cedilla. - ("c," ?ç) ;; LATIN SMALL LETTER C WITH CEDILLA - ("C," ?Ç) ;; LATIN CAPITAL LETTER C WITH CEDILLA - ("a^" ?â) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX - ("e^" ?ê) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX - ("i^" ?î) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX - ("o^" ?ô) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX - ("u^" ?û) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX - ("A^" ?Â) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX - ("E^" ?Ê) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX - ("I^" ?Î) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX - ("O^" ?Ô) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX + ("c," ?ç) ;; LATIN SMALL LETTER C WITH CEDILLA + ("C," ?Ç) ;; LATIN CAPITAL LETTER C WITH CEDILLA + ("a^" ?â) ;; LATIN SMALL LETTER A WITH CIRCUMFLEX + ("e^" ?ê) ;; LATIN SMALL LETTER E WITH CIRCUMFLEX + ("i^" ?î) ;; LATIN SMALL LETTER I WITH CIRCUMFLEX + ("o^" ?ô) ;; LATIN SMALL LETTER O WITH CIRCUMFLEX + ("u^" ?û) ;; LATIN SMALL LETTER U WITH CIRCUMFLEX + ("A^" ?Â) ;; LATIN CAPITAL LETTER A WITH CIRCUMFLEX + ("E^" ?Ê) ;; LATIN CAPITAL LETTER E WITH CIRCUMFLEX + ("I^" ?Î) ;; LATIN CAPITAL LETTER I WITH CIRCUMFLEX + ("O^" ?Ô) ;; LATIN CAPITAL LETTER O WITH CIRCUMFLEX ("U^" ?Û) ;; LATIN CAPITAL LETTER U WITH CIRCUMFLEX ;; “Follow the example of the Dutch POSIX locale, using ISO-8859-9 to ;; cater to the many Turks in Dutch society.” Perhaps German methods ;; should do so too. Follow turkish-alt-postfix here. ("i/" ?ı) ;; LATIN SMALL LETTER I WITH NO DOT - ("s," ?ş) ;; LATIN SMALL LETTER S WITH CEDILLA - ("g^" ?ğ) ;; LATIN SMALL LETTER G WITH BREVE + ("s," ?ş) ;; LATIN SMALL LETTER S WITH CEDILLA + ("g^" ?ğ) ;; LATIN SMALL LETTER G WITH BREVE ("I/" ?İ) ;; LATIN CAPITAL LETTER I WITH DOT ABOVE - ("S," ?Ş) ;; LATIN CAPITAL LETTER S WITH CEDILLA - ("G^" ?Ğ) ;; LATIN CAPITAL LETTER G WITH BREVE + ("S," ?Ş) ;; LATIN CAPITAL LETTER S WITH CEDILLA + ("G^" ?Ğ) ;; LATIN CAPITAL LETTER G WITH BREVE ) ;; Originally from Yudit, discussed with Albertas Agejevas @@ -1339,17 +1339,17 @@ of characters from a single Latin-N charset. | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã - cedilla | /` | c/ -> ç c` -> ç - ogonek | ` | a` -> ą + cedilla | /\\=` | c/ -> ç c\\=` -> ç + ogonek | \\=` | a\\=` -> ą breve | ~ | a~ -> ă caron | ~ | c~ -> č dbl. acute | : | o: -> ő - ring | ` | u` -> ů - dot | ` | z` -> ż + ring | \\=` | u\\=` -> ů + dot | \\=` | z\\=` -> ż stroke | / | d/ -> đ nordic | / | d/ -> ð t/ -> þ a/ -> å e/ -> æ o/ -> ø others | /<> | s/ -> ß ?/ -> ¿ !/ -> ¡ diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el index e8957eb9b63..5106bd29816 100644 --- a/lisp/leim/quail/latin-post.el +++ b/lisp/leim/quail/latin-post.el @@ -41,7 +41,7 @@ | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã @@ -390,7 +390,7 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä dot | . | c. -> ċ i. -> ı I. -> İ @@ -746,7 +746,7 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã @@ -1005,8 +1005,8 @@ OEE -> OE "french-postfix" "French" "FR<" t "French (Français) input method with postfix modifiers -` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. -Par exemple: a` -> à e' -> é. +\\=` pour grave, ' pour aigu, ^ pour circonflexe, et \" pour tréma. +Par exemple: a\\=` -> à e' -> é. Ç, «, et » sont produits par C,, <<, et >>. @@ -1117,7 +1117,7 @@ szz -> sz ("aue" ["aue"]) ("Aue" ["Aue"]) ("que" ["que"]) - ("Que" ["Que"]) + ("Que" ["Que"]) ) (quail-define-package @@ -1186,15 +1186,15 @@ Doubling the postfix separates the letter and postfix: e.g. a'' -> a' "italian-postfix" "Latin-1" "IT<" t "Italian (Italiano) input method with postfix modifiers -a` -> à A` -> À e' -> é << -> « -e` -> è E` -> È E' -> É >> -> » -i` -> ì I` -> Ì o_ -> º -o` -> ò O` -> Ò a_ -> ª -u` -> ù U` -> Ù +a\\=` -> à A\\=` -> À e' -> é << -> « +e\\=` -> è E\\=` -> È E' -> É >> -> » +i\\=` -> ì I\\=` -> Ì o_ -> º +o\\=` -> ò O\\=` -> Ò a_ -> ª +u\\=` -> ù U\\=` -> Ù Typewriter-style italian characters. -Doubling the postfix separates the letter and postfix: e.g. a`` -> a` +Doubling the postfix separates the letter and postfix: e.g. a\\=`\\=` -> a\\=` " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules @@ -2090,7 +2090,7 @@ of characters from a single Latin-N charset. | postfix | examples ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à circumflex | ^ | a^ -> â diaeresis | \" | a\" -> ä tilde | ~ | a~ -> ã diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el index 41552b56c02..4e60d9c8569 100644 --- a/lisp/leim/quail/latin-pre.el +++ b/lisp/leim/quail/latin-pre.el @@ -53,7 +53,7 @@ effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á, '' -> ´ - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"a -> ä \"\" -> ¨ tilde | ~ | ~a -> ã @@ -184,7 +184,7 @@ effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á '' -> ´ - grave | ` | `a -> à + grave | \\=` | \\=`a -> à diaeresis | \" | \"i -> ï \"\" -> ¨ tilde | ~ | ~n -> ñ cedilla | ~ | ~c -> ç @@ -259,7 +259,7 @@ Key translation rules are: effect | prefix | examples ------------+--------+---------- acute | ' | 'e -> é - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"i -> ï cedilla | ~ or , | ~c -> ç ,c -> ç @@ -398,7 +398,7 @@ Key translation rules are: effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á '' -> ´ - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"u -> ü tilde | ~ | ~a -> ã @@ -489,9 +489,9 @@ Key translation rules are: diaeresis | \" | \"a -> ä \"\" -> ¨ breve | ~ | ~a -> ă caron | ~ | ~c -> č - cedilla | ` | `c -> ç `e -> ?ę - misc | ' ` ~ | 'd -> đ `l -> ł `z -> ż ~o -> ő ~u -> ű - symbol | ~ | `. -> ˙ ~~ -> ˘ ~. -> ?¸ + cedilla | \\=` | \\=`c -> ç \\=`e -> ?ę + misc | ' \\=` ~ | 'd -> đ \\=`l -> ł \\=`z -> ż ~o -> ő ~u -> ű + symbol | ~ | \\=`. -> ˙ ~~ -> ˘ ~. -> ?¸ " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules @@ -596,13 +596,13 @@ Key translation rules are: effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á '' -> ?´ - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"a -> ä \"\" -> ¨ cedilla | ~ | ~c -> ç ~s -> ş ~~ -> ¸ dot above | / . | /g -> ġ .o -> ġ misc | \" ~ / | \"s -> ß ~g -> ğ ~u -> ŭ /h -> ħ /i -> ı - symbol | ~ | ~` -> ˘ /# -> £ /$ -> ¤ // -> ° + symbol | ~ | ~\\=` -> ˘ /# -> £ /$ -> ¤ // -> ° " nil t nil nil nil nil nil nil nil nil t) (quail-define-rules @@ -737,7 +737,7 @@ For example, the character named `aogonek' is obtained by `/a'." effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"a -> ä, \"Y -> Ÿ tilde | ~ | ~a -> ã @@ -872,7 +872,7 @@ For example, the character named `aogonek' is obtained by `/a'." effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^w -> ŵ diaeresis | \" | \"a -> ä dot above | . | .b -> ḃ @@ -997,7 +997,7 @@ of characters from a single Latin-N charset. effect | prefix | examples ------------+--------+---------- acute | ' | 'a -> á, '' -> ´ - grave | ` | `a -> à + grave | \\=` | \\=`a -> à circumflex | ^ | ^a -> â diaeresis | \" | \"a -> ä \"\" -> ¨ tilde | ~ | ~a -> ã diff --git a/lisp/leim/quail/thai.el b/lisp/leim/quail/thai.el index 37171042643..72e5020f36f 100644 --- a/lisp/leim/quail/thai.el +++ b/lisp/leim/quail/thai.el @@ -46,9 +46,9 @@ "Thai Kesmanee input method with TIS620 keyboard layout The difference from the ordinal Thai keyboard: - '฿' and '๏' are assigned to '\\' and '|' respectively, - 'ฃ' and 'ฅ' are assigned to '`' and '~' respectively, - Don't know where to assign characters '๚' and '๛'." + ‘฿’ and ‘๏’ are assigned to ‘\\’ and ‘|’ respectively, + ‘ฃ’ and ‘ฅ’ are assigned to ‘\\=`’ and ‘~’ respectively, + Don't know where to assign characters ‘๚’ and ‘๛’." nil t t t t nil nil nil nil nil t) (thai-generate-quail-map diff --git a/lisp/leim/quail/tibetan.el b/lisp/leim/quail/tibetan.el index a54cbdc615a..1313f566def 100644 --- a/lisp/leim/quail/tibetan.el +++ b/lisp/leim/quail/tibetan.el @@ -141,7 +141,7 @@ NOT SPECIFIED IN EXT. WYLIE: +--------------------------------------------------------+ - |ྂ = ~ |ྃ = ` |྄ = , |྅ = @ |༷ = _o|༵ = _O|༆ = ^| + |ྂ = ~ |ྃ = \\=` |྄ = , |྅ = @ |༷ = _o|༵ = _O|༆ = ^| +--------------------------------------------------------+ |ྈ = x |ྉ = X |྆ = v |྇ = V |ྊ = q |ྋ = Q | +-----------------------------------------------+ diff --git a/lisp/leim/quail/viqr.el b/lisp/leim/quail/viqr.el index c5c1c940181..570a16bd43d 100644 --- a/lisp/leim/quail/viqr.el +++ b/lisp/leim/quail/viqr.el @@ -53,7 +53,7 @@ horn | + | o+ -> ơ ------------+---------+---------- acute | ' | a' -> á - grave | ` | a` -> à + grave | \\=` | a\\=` -> à hook above | ? | a? -> ả tilde | ~ | a~ -> ã dot below | . | a. -> ạ diff --git a/lisp/linum.el b/lisp/linum.el index de15274314c..7b6a3ea4e42 100644 --- a/lisp/linum.el +++ b/lisp/linum.el @@ -62,7 +62,7 @@ See also `linum-before-numbering-hook'." (defcustom linum-eager t "Whether line numbers should be updated after each command. -The conservative setting `nil' might miss some buffer changes, +The conservative setting nil might miss some buffer changes, and you have to scroll or press \\[recenter-top-bottom] to update the numbers." :group 'linum :type 'boolean) @@ -138,6 +138,9 @@ Linum mode is a buffer-local minor mode." (mapc #'delete-overlay linum-available) (setq linum-available nil)))) +;; Behind display-graphic-p test. +(declare-function font-info "font.c" (name &optional frame)) + (defun linum--face-width (face) (let ((info (font-info (face-font face))) width) diff --git a/lisp/loadup.el b/lisp/loadup.el index bfec75fc2c9..84fa327050a 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -26,20 +26,24 @@ ;; This is loaded into a bare Emacs to make a dumpable one. -;; If you add/remove Lisp files to be loaded here, consider the -;; following issues: +;; If you add a file to be loaded here, keep the following points in mind: -;; i) Any file loaded on any platform should appear in $lisp in src/lisp.mk. -;; Use the .el or .elc version as appropriate. +;; i) If the file is no-byte-compile, explicitly load the .el version. +;; Such files should (where possible) obey the doc-string conventions +;; expected by make-docfile. They should also be added to the +;; uncompiled[] list in make-docfile.c. +;; ii) If the file is dumped with Emacs (on any platform), put the +;; load statement at the start of a line (leading whitespace is ok). + +;; iii) If the file is _not_ dumped with Emacs, make sure the load +;; statement is _not_ at the start of a line. See pcase for an example. + +;; These rules are so that src/Makefile can construct lisp.mk automatically. ;; This ensures both that the Lisp files are compiled (if necessary) ;; before the emacs executable is dumped, and that they are passed to ;; make-docfile. (Any that are not processed for DOC will not have -;; doc strings in the dumped Emacs.) Because of this: - -;; ii) If the file is loaded uncompiled, it should (where possible) -;; obey the doc-string conventions expected by make-docfile. It -;; should also be added to the uncompiled[] list in make-docfile.c. +;; doc strings in the dumped Emacs.) ;;; Code: @@ -63,6 +67,10 @@ (expand-file-name "textmodes" dir) (expand-file-name "vc" dir))))) +;; Prevent build-time PATH getting stored in the binary. +;; Mainly cosmetic, but helpful for Guix. (Bug#20330) +(setq exec-path nil) + (if (eq t purify-flag) ;; Hash consing saved around 11% of pure space in my tests. (setq purify-flag (make-hash-table :test 'equal :size 70000))) @@ -113,8 +121,7 @@ ;; Since loaddefs is not yet loaded, macroexp's uses of pcase will simply ;; fail until pcase is explicitly loaded. This also means that we have to ;; disable eager macro-expansion while loading pcase. - (let ((macroexp--pending-eager-loads '(skip))) - (load "emacs-lisp/pcase")) + (let ((macroexp--pending-eager-loads '(skip))) (load "emacs-lisp/pcase")) ;; Re-load macroexp so as to eagerly macro-expand its uses of pcase. (let ((max-lisp-eval-depth (* 2 max-lisp-eval-depth))) (load "emacs-lisp/macroexp"))) @@ -135,9 +142,7 @@ ;; should be updated by overwriting it with an up-to-date copy of ;; loaddefs.el that is uncorrupted by local changes. ;; autogen/update_autogen can be used to periodically update ldefs-boot. -(condition-case nil - ;; Don't get confused if someone compiled this by mistake. - (load "loaddefs.el") +(condition-case nil (load "loaddefs.el") ;; In case loaddefs hasn't been generated yet. (file-error (load "ldefs-boot.el"))) @@ -174,6 +179,8 @@ (load "language/romanian") (load "language/greek") (load "language/hebrew") +(load "international/cp51932.el") +(load "international/eucjp-ms.el") (load "language/japanese") (load "language/korean") (load "language/lao") @@ -189,6 +196,7 @@ (load "language/cham") (load "indent") +(load "emacs-lisp/cl-generic") (load "frame") (load "startup") (load "term/tty-colors") @@ -282,7 +290,8 @@ (load "electric") (load "emacs-lisp/eldoc") (load "cus-start") ;Late to reduce customize-rogue (needs loaddefs.el anyway) -(if (not (eq system-type 'ms-dos)) (load "tooltip")) +(if (not (eq system-type 'ms-dos)) + (load "tooltip")) ;; This file doesn't exist when building a development version of Emacs ;; from the repository. It is generated just after temacs is built. @@ -352,6 +361,8 @@ lost after dumping"))) lost after dumping"))) (setq current-load-list nil) +;; Avoid storing references to build directory in the binary. +(setq custom-current-group-alist nil) ;; We keep the load-history data in PURE space. ;; Make sure that the spine of the list is not in pure space because it can diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index c3d5705531e..0ddae24d577 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -669,7 +669,7 @@ SWITCHES is a list of characters. Default sorting is alphabetic." )))) ;; Finally reverse file alist if necessary. ;; (eq below MUST compare `(not (memq ...))' to force comparison of - ;; `t' or `nil', rather than list tails!) + ;; t or nil, rather than list tails!) (if (eq (eq (not (memq ?U switches)) ; unsorted order is reversed (not (memq ?r switches))) ; reversed sort order requested ls-lisp-dirs-first) ; already reversed diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index 8cd59006d8d..f4ba2264dc8 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -295,7 +295,7 @@ usually do not have translators for other languages.\n\n"))) (insert-buffer-substring message-buf beg-pos end-pos)))) ;; After Recent messages, to avoid the messages produced by ;; list-load-path-shadows. - (unless (looking-back "\n") + (unless (looking-back "\n" (1- (point))) (insert "\n")) (insert "\n") (insert "Load-path shadows:\n") diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el index ea674434a2f..86bb9e89618 100644 --- a/lisp/mail/footnote.el +++ b/lisp/mail/footnote.el @@ -718,7 +718,7 @@ delete the footnote with that number." end (point-max)))) (Footnote-goto-char-point-max) - (when (looking-back "\n\n") + (when (looking-back "\n\n" (- (point) 2)) (kill-line -1)))))))) (defun Footnote-renumber-footnotes (&optional arg) diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el index 2f349b99bb6..f974f2083dc 100644 --- a/lisp/mail/mailabbrev.el +++ b/lisp/mail/mailabbrev.el @@ -603,7 +603,7 @@ In other respects, this behaves like `end-of-buffer', which see." (eval-after-load "sendmail" '(progn (define-key mail-mode-map "\C-c\C-a" 'mail-abbrev-insert-alias) - (define-key mail-mode-map "\e\t" ; like lisp-complete-symbol + (define-key mail-mode-map "\e\t" ; like completion-at-point 'mail-abbrev-complete-alias))) ;;(define-key mail-mode-map "\C-n" 'mail-abbrev-next-line) diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el index 48329167bf1..577cec0fd86 100644 --- a/lisp/mail/mailalias.el +++ b/lisp/mail/mailalias.el @@ -77,7 +77,7 @@ If not on matching header, `mail-complete-function' gets called instead." ;;;###autoload (defcustom mail-complete-style 'angles "Specifies how \\[mail-complete] formats the full name when it completes. -If `nil', they contain just the return address like: +If nil, they contain just the return address like: king@grassland.com If `parens', they look like: king@grassland.com (Elvis Parsley) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index d150324fc79..26c91bb26fa 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -1,4 +1,4 @@ -;;; rmail.el --- main code of "RMAIL" mail reader for Emacs +;;; rmail.el --- main code of "RMAIL" mail reader for Emacs -*- lexical-binding:t -*- ;; Copyright (C) 1985-1988, 1993-1998, 2000-2015 Free Software ;; Foundation, Inc. @@ -393,7 +393,7 @@ go to that message and type \\[rmail-toggle-header] twice." "Regexp to match Header fields that Rmail should display. If nil, display all header fields except those matched by `rmail-ignored-headers'." - :type '(choice regexp (const :tag "All")) + :type '(choice regexp (const :tag "All" nil)) :group 'rmail-headers) ;;;###autoload @@ -407,7 +407,7 @@ If nil, display all header fields except those matched by (defcustom rmail-highlighted-headers (purecopy "^From:\\|^Subject:") "Regexp to match Header fields that Rmail should normally highlight. A value of nil means don't highlight. Uses the face `rmail-highlight'." - :type 'regexp + :type '(choice regexp (const :tag "None" nil)) :group 'rmail-headers) (defface rmail-highlight @@ -889,7 +889,7 @@ that knows the exact ordering of the \\( \\) subexpressions.") Signal an error and set `rmail-mime-feature' to nil if the feature isn't provided." (when rmail-enable-mime - (condition-case err + (condition-case nil (require rmail-mime-feature) (error (display-warning @@ -1586,13 +1586,12 @@ Hook `rmail-quit-hook' is run after expunging." (interactive) ;; This let var was called rmail-buffer, but that interfered ;; with the buffer-local var used in summary buffers. - (let ((buffer-to-bury (current-buffer))) - (if (rmail-summary-exists) - (let (window) - (while (setq window (get-buffer-window rmail-summary-buffer)) - (quit-window nil window)) - (bury-buffer rmail-summary-buffer))) - (quit-window))) + (if (rmail-summary-exists) + (let (window) + (while (setq window (get-buffer-window rmail-summary-buffer)) + (quit-window nil window)) + (bury-buffer rmail-summary-buffer))) + (quit-window)) (defun rmail-duplicate-message () "Create a duplicated copy of the current message. @@ -1760,15 +1759,14 @@ not be a new one). It returns non-nil if it got any new messages." ;; This loops if any members of the inbox list have the same ;; basename (see "name conflict" below). (while all-files - (let ((opoint (point)) - ;; If buffer has not changed yet, and has not been + (let (;; If buffer has not changed yet, and has not been ;; saved yet, don't replace the old backup file now. (make-backup-files (and make-backup-files (buffer-modified-p))) (buffer-read-only nil) ;; Don't make undo records while getting mail. (buffer-undo-list t) - delete-files success files file-last-names) + delete-files files file-last-names) ;; Pull files off all-files onto files as long as there is ;; no name conflict. A conflict happens when two inbox ;; file names have the same last component. @@ -1787,7 +1785,7 @@ not be a new one). It returns non-nil if it got any new messages." ;; Make sure we end with a blank line unless there are ;; no messages, as required by mbox format (Bug#9974). (unless (bobp) - (while (not (looking-back "\n\n")) + (while (not (looking-back "\n\n" (- (point) 2))) (insert "\n"))) (setq found (or (rmail-get-new-mail-1 file-name files delete-files) @@ -1910,9 +1908,10 @@ is non-nil if the user has supplied the password interactively. ((string-match "^po:\\([^:]+\\)\\(:\\(.*\\)\\)?" file) (let (got-password supplied-password - (proto "pop") - (user (match-string 1 file)) - (host (match-string 3 file))) + ;; (proto "pop") + ;; (user (match-string 1 file)) + ;; (host (match-string 3 file)) + ) (when rmail-remote-password-required (setq got-password (not (rmail-have-password))) @@ -1945,8 +1944,7 @@ SIZE is the original size of the newly read mail. Value is the size of the newly read mail after conversion." ;; Detect previous Babyl format files. (let ((case-fold-search nil) - (old-file file) - new-file) + (old-file file)) (cond ((looking-at "BABYL OPTIONS:") ;; The new mail is in Babyl version 5 format. Use unrmail ;; to convert it. @@ -1972,7 +1970,7 @@ Value is the size of the newly read mail after conversion." (or (memq (file-locked-p buffer-file-name) '(nil t)) (error "RMAIL file %s is locked" (file-name-nondirectory buffer-file-name))) - (let (file tofile delete-files movemail popmail got-password password) + (let (file tofile delete-files popmail got-password password) (while files ;; Handle remote mailbox names specially; don't expand as filenames ;; in case the userid contains a directory separator. @@ -2092,7 +2090,7 @@ Value is the size of the newly read mail after conversion." ;; Make sure the read-in mbox data properly ends with a ;; blank line unless it is of size 0. (unless (zerop size) - (while (not (looking-back "\n\n")) + (while (not (looking-back "\n\n" (- (point) 2))) (insert "\n"))) (if (not (and rmail-preserve-inbox (string= file tofile))) (setq delete-files (cons tofile delete-files))))) @@ -2127,7 +2125,7 @@ Value is the size of the newly read mail after conversion." Call with point at the end of the message." (unless (bolp) (insert "\n")) - (unless (looking-back "\n\n") + (unless (looking-back "\n\n" (- (point) 2)) (insert "\n"))) (defun rmail-add-mbox-headers () @@ -2144,7 +2142,7 @@ new messages. Return the number of new messages." (value "------U-") (case-fold-search nil) (delim (concat "\n\n" rmail-unix-mail-delimiter)) - limit stop) + stop) ;; Detect an empty inbox file. (unless (= start (point-max)) ;; Scan the new messages to establish a count and to ensure that @@ -2889,7 +2887,7 @@ The current mail message becomes the message displayed." (setq blurb (format "Showing message %d...done" msg))))) blurb)) -(defun rmail-copy-headers (beg end &optional ignored-headers) +(defun rmail-copy-headers (beg _end &optional ignored-headers) "Copy displayed header fields to the message viewer buffer. BEG and END marks the start and end positions of the message in the mbox buffer. If the optional argument IGNORED-HEADERS is @@ -2942,7 +2940,8 @@ buffer to the end of the headers." (1+ (match-beginning 0)) (point-max)))) (if (and (looking-at ignored-headers) - (not (looking-at rmail-nonignored-headers))) + (not (and rmail-nonignored-headers + (looking-at rmail-nonignored-headers)))) (goto-char lim) (append-to-buffer rmail-view-buffer (point) lim) (goto-char lim)))) @@ -3152,7 +3151,7 @@ or forward if N is negative." (rmail-maybe-set-message-counters) (rmail-show-message rmail-total-messages)) -(defun rmail-next-error-move (msg-pos bad-marker) +(defun rmail-next-error-move (msg-pos _bad-marker) "Move to an error locus (probably grep hit) in an Rmail buffer. MSG-POS is a marker pointing at the error message in the grep buffer. BAD-MARKER is a marker that ought to point at where to move to, @@ -3462,21 +3461,20 @@ STATE non-nil means mark as deleted." "Back up to deleted message, select it, and undelete it." (interactive "p") (set-buffer rmail-buffer) - (let (value) - (dotimes (i count) - (let ((msg rmail-current-message)) - (while (and (> msg 0) - (not (rmail-message-deleted-p msg))) - (setq msg (1- msg))) - (if (= msg 0) - (error "No previous deleted message") - (if (/= msg rmail-current-message) - (rmail-show-message msg)) - (rmail-set-attribute rmail-deleted-attr-index nil) - (if (rmail-summary-exists) - (with-current-buffer rmail-summary-buffer - (rmail-summary-mark-undeleted msg)))))) - (rmail-maybe-display-summary))) + (dotimes (_ count) + (let ((msg rmail-current-message)) + (while (and (> msg 0) + (not (rmail-message-deleted-p msg))) + (setq msg (1- msg))) + (if (= msg 0) + (error "No previous deleted message") + (if (/= msg rmail-current-message) + (rmail-show-message msg)) + (rmail-set-attribute rmail-deleted-attr-index nil) + (if (rmail-summary-exists) + (with-current-buffer rmail-summary-buffer + (rmail-summary-mark-undeleted msg)))))) + (rmail-maybe-display-summary)) (defun rmail-delete-forward (&optional count) "Delete this message and move to next nondeleted one. @@ -3490,7 +3488,7 @@ Returns t if a new message is displayed after the delete, or nil otherwise." (let (value backward) (if (< count 0) (setq count (- count) backward t)) - (dotimes (i count) + (dotimes (_ count) (rmail-set-attribute rmail-deleted-attr-index t) (run-hooks 'rmail-delete-message-hook) (let ((del-msg rmail-current-message)) @@ -3787,7 +3785,7 @@ use \\[mail-yank-original] to yank the original message into it." (if (zerop rmail-current-message) (error "There is no message to reply to")) (let (from reply-to cc subject date to message-id references - resent-to resent-cc resent-reply-to + ;; resent-to resent-cc resent-reply-to (msgnum rmail-current-message)) (rmail-apply-in-message rmail-current-message @@ -3802,14 +3800,14 @@ use \\[mail-yank-original] to yank the original message into it." date (mail-fetch-field "date") message-id (mail-fetch-field "message-id") references (mail-fetch-field "references" nil nil t) - resent-reply-to (mail-fetch-field "resent-reply-to" nil t) ;; Bug#512. It's inappropriate to reply to these addresses. -;;; resent-cc (and (not just-sender) -;;; (mail-fetch-field "resent-cc" nil t)) -;;; resent-to (or (mail-fetch-field "resent-to" nil t) "") -;;; resent-subject (mail-fetch-field "resent-subject") -;;; resent-date (mail-fetch-field "resent-date") -;;; resent-message-id (mail-fetch-field "resent-message-id") + ;;resent-reply-to (mail-fetch-field "resent-reply-to" nil t) + ;;resent-cc (and (not just-sender) + ;; (mail-fetch-field "resent-cc" nil t)) + ;;resent-to (or (mail-fetch-field "resent-to" nil t) "") + ;;resent-subject (mail-fetch-field "resent-subject") + ;;resent-date (mail-fetch-field "resent-date") + ;;resent-message-id (mail-fetch-field "resent-message-id") ) (unless just-sender (if (mail-fetch-field "mail-followup-to" nil t) @@ -3820,17 +3818,18 @@ use \\[mail-yank-original] to yank the original message into it." to (or (mail-fetch-field "to" nil t) "")))))) ;; Merge the resent-to and resent-cc into the to and cc. ;; Bug#512. It's inappropriate to reply to these addresses. -;;; (if (and resent-to (not (equal resent-to ""))) -;;; (if (not (equal to "")) -;;; (setq to (concat to ", " resent-to)) -;;; (setq to resent-to))) -;;; (if (and resent-cc (not (equal resent-cc ""))) -;;; (if (not (equal cc "")) -;;; (setq cc (concat cc ", " resent-cc)) -;;; (setq cc resent-cc))) + ;;(if (and resent-to (not (equal resent-to ""))) + ;; (setq to (if (not (equal to "")) + ;; (concat to ", " resent-to) + ;; resent-to))) + ;;(if (and resent-cc (not (equal resent-cc ""))) + ;; (setq cc (if (not (equal cc "")) + ;; (concat cc ", " resent-cc) + ;; resent-cc))) ;; Add `Re: ' to subject if not there already. (and (stringp subject) - (setq subject + (setq subject (rfc2047-decode-string subject) + subject (concat rmail-reply-prefix (if (let ((case-fold-search t)) (string-match rmail-reply-regexp subject)) @@ -4145,6 +4144,9 @@ The message should be narrowed to just the headers." (declare-function rmail-mime-toggle-raw "rmailmm" (&optional state)) +(defvar rmail-mime-mbox-buffer) +(defvar rmail-mime-view-buffer) + (defun rmail-retry-failure () "Edit a mail message which is based on the contents of the current message. For a message rejected by the mail system, extract the interesting headers and @@ -4421,13 +4423,13 @@ current message into that RMAIL folder." (declare-function dframe-select-attached-frame "dframe" (&optional frame)) (declare-function dframe-maybee-jump-to-attached-frame "dframe" ()) -(defun rmail-speedbar-button (text token indent) +(defun rmail-speedbar-button (_text token _indent) "Execute an rmail command specified by TEXT. The command used is TOKEN. INDENT is not used." (dframe-with-attached-buffer (funcall token t))) -(defun rmail-speedbar-find-file (text token indent) +(defun rmail-speedbar-find-file (text _token _indent) "Load in the rmail file TEXT. TOKEN and INDENT are not used." (dframe-with-attached-buffer @@ -4446,7 +4448,7 @@ TOKEN and INDENT are not used." (forward-char -2) (speedbar-do-function-pointer))))) -(defun rmail-speedbar-move-message (text token indent) +(defun rmail-speedbar-move-message (_text token _indent) "From button TEXT, copy current message to the rmail file specified by TOKEN. TEXT and INDENT are not used." (dframe-with-attached-buffer @@ -4642,13 +4644,13 @@ encoded string (and the same mask) will decode the string." ;;;; Desktop support -(defun rmail-restore-desktop-buffer (desktop-buffer-file-name - desktop-buffer-name - desktop-buffer-misc) +(defun rmail-restore-desktop-buffer (file-name + _buffer-name + _buffer-misc) "Restore an rmail buffer specified in a desktop file." - (condition-case error + (condition-case nil (progn - (rmail-input desktop-buffer-file-name) + (rmail-input file-name) (if (eq major-mode 'rmail-mode) (current-buffer) rmail-buffer)) @@ -4664,7 +4666,7 @@ encoded string (and the same mask) will decode the string." (defvar rmail-message-encoding nil) ;; Used in `write-region-annotate-functions' to write rmail files. -(defun rmail-write-region-annotate (start end) +(defun rmail-write-region-annotate (start _end) (when (and (null start) rmail-buffer-swapped) (unless (buffer-live-p rmail-view-buffer) (error "Buffer `%s' with real text of `%s' has disappeared" @@ -4691,7 +4693,7 @@ encoded string (and the same mask) will decode the string." ;;; Start of automatically extracted autoloads. -;;;### (autoloads nil "rmailedit" "rmailedit.el" "f6da7267316d02c90b9d314ce95b3c22") +;;;### (autoloads nil "rmailedit" "rmailedit.el" "1ed1c211e6e9c254ba3e0dd8d546e745") ;;; Generated autoloads from rmailedit.el (autoload 'rmail-edit-current-message "rmailedit" "\ @@ -4744,7 +4746,7 @@ With prefix argument N moves forward N messages with these labels. ;;;*** -;;;### (autoloads nil "rmailmm" "rmailmm.el" "a17df5ef8968113c8f6a78cf85c82da4") +;;;### (autoloads nil "rmailmm" "rmailmm.el" "e5b89eed8afb278cc8881f2208382c7c") ;;; Generated autoloads from rmailmm.el (autoload 'rmail-mime "rmailmm" "\ @@ -4841,7 +4843,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order. ;;;*** -;;;### (autoloads nil "rmailsum" "rmailsum.el" "3203e61425330fc20f3154b559f8b539") +;;;### (autoloads nil "rmailsum" "rmailsum.el" "4bc0d1a65aede332348200e1937c84d4") ;;; Generated autoloads from rmailsum.el (autoload 'rmail-summary "rmailsum" "\ @@ -4860,7 +4862,7 @@ Display a summary of all messages with the given RECIPIENTS. Normally checks the To, From and Cc fields of headers; but if PRIMARY-ONLY is non-nil (prefix arg given), only look in the To and From fields. -RECIPIENTS is a string of regexps separated by commas. +RECIPIENTS is a regular expression. \(fn RECIPIENTS &optional PRIMARY-ONLY)" t nil) @@ -4876,13 +4878,13 @@ Emacs will list the message in the summary. Display a summary of all messages with the given SUBJECT. Normally checks just the Subject field of headers; but with prefix argument WHOLE-MESSAGE is non-nil, looks in the whole message. -SUBJECT is a string of regexps separated by commas. +SUBJECT is a regular expression. \(fn SUBJECT &optional WHOLE-MESSAGE)" t nil) (autoload 'rmail-summary-by-senders "rmailsum" "\ Display a summary of all messages whose \"From\" field matches SENDERS. -SENDERS is a string of regexps separated by commas. +SENDERS is a regular expression. \(fn SENDERS)" t nil) diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el index 15d27a085fe..0b49782d80f 100644 --- a/lisp/mail/rmailedit.el +++ b/lisp/mail/rmailedit.el @@ -44,6 +44,8 @@ (declare-function rmail-summary-disable "rmailsum" ()) +;; We can't straightforwardly make this derive from text-mode, because +;; we need to bind (rmail-buffer-swapped) around the text-mode call. :( (defun rmail-edit-mode () "Major mode for editing the contents of an Rmail message. The editing commands are the same as in Text mode, together with diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el index 00fc25dd440..3dd57b9bab7 100644 --- a/lisp/mail/rmailmm.el +++ b/lisp/mail/rmailmm.el @@ -135,9 +135,10 @@ automatically display the image in the buffer." (cond ((fboundp 'libxml-parse-html-region) 'rmail-mime-render-html-shr) ((executable-find "lynx") 'rmail-mime-render-html-lynx) (t nil)) - "Function to convert HTML to text. Called with buffer containing HTML -extracted from message in a temporary buffer. Converts to text in current -buffer. If NIL, display HTML source." + "Function to convert HTML to text. +Called with buffer containing HTML extracted from message in a +temporary buffer. Converts to text in current buffer. If nil, +display HTML source." :group 'rmail :version "25.1" :type '(choice function (const nil))) @@ -705,6 +706,9 @@ HEADER is a header component of a MIME-entity object (see (insert-buffer-substring source-buffer)) (rmail-mime-fix-inserted-faces start))))))) +(declare-function libxml-parse-html-region "xml.c" + (start end &optional base-url discard-comments)) + (defun rmail-mime-render-html-shr (source-buffer) (let ((dom (with-current-buffer source-buffer (libxml-parse-html-region (point-min) (point-max)))) @@ -732,12 +736,12 @@ HEADER is a header component of a MIME-entity object (see (defun rmail-mime-fix-inserted-faces (start) (while (< start (point)) (let ((face (get-text-property start 'face)) - (next (next-single-property-change + (next (next-single-property-change start 'face (current-buffer) (point)))) (if face ; anything to do? (put-text-property start next 'font-lock-face face)) (setq start next)))) - + (defun rmail-mime-toggle-button (button) "Hide or show the body of the MIME-entity associated with BUTTON." (save-excursion diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index 7144e43d301..eeb42e81c6d 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -1,4 +1,4 @@ -;;; rmailsum.el --- make summary buffers for the mail reader +;;; rmailsum.el --- make summary buffers for the mail reader -*- lexical-binding:t -*- ;; Copyright (C) 1985, 1993-1996, 2000-2015 Free Software Foundation, Inc. @@ -262,7 +262,7 @@ Setting this option to nil might speed up the generation of summaries." ;; Regenerate the contents of the summary ;; using the same selection criterion as last time. ;; M-x revert-buffer in a summary buffer calls this function. -(defun rmail-update-summary (&rest ignore) +(defun rmail-update-summary (&rest _) (apply (car rmail-summary-redo) (cdr rmail-summary-redo))) ;;;###autoload @@ -287,23 +287,18 @@ LABELS should be a string containing the desired labels, separated by commas." (mail-comma-list-regexp labels) "\\)\\(,\\|\\'\\)"))) -;; FIXME "a string of regexps separated by commas" makes no sense because: -;; i) it's pointless (you can just use \\|) -;; ii) it's broken (you can't specify a literal comma) -;; rmail-summary-by-topic and rmail-summary-by-senders have the same issue. ;;;###autoload (defun rmail-summary-by-recipients (recipients &optional primary-only) "Display a summary of all messages with the given RECIPIENTS. Normally checks the To, From and Cc fields of headers; but if PRIMARY-ONLY is non-nil (prefix arg given), only look in the To and From fields. -RECIPIENTS is a string of regexps separated by commas." +RECIPIENTS is a regular expression." (interactive "sRecipients to summarize by: \nP") (rmail-new-summary (concat "recipients " recipients) (list 'rmail-summary-by-recipients recipients primary-only) - 'rmail-message-recipients-p - (mail-comma-list-regexp recipients) primary-only)) + 'rmail-message-recipients-p recipients primary-only)) (defun rmail-message-recipients-p (msg recipients &optional primary-only) (rmail-apply-in-message msg 'rmail-message-recipients-p-1 @@ -340,20 +335,37 @@ Emacs will list the message in the summary." "Return t, if for message number MSG, regexp REGEXP matches in the header." (rmail-apply-in-message msg 'rmail-message-regexp-p-1 msg regexp)) +(defun rmail--decode-and-apply (function &rest args) + "Make an RFC2047-decoded copy of current buffer, apply FUNCTION with ARGS." + (let ((buff (current-buffer))) + (with-temp-buffer + (insert-buffer-substring buff) + (goto-char (point-min)) + ;; FIXME? In rmail-show-message-1, decoding depends on + ;; rmail-enable-mime being non-nil (?). + (rfc2047-decode-region (point-min) + (save-excursion + (progn + (search-forward "\n\n" nil 'move) + (point)))) + (apply function args)))) + (defun rmail-message-regexp-p-1 (msg regexp) ;; Search functions can expect to start from the beginning. (narrow-to-region (point) (save-excursion (search-forward "\n\n") (point))) (if (and rmail-enable-mime rmail-search-mime-header-function) (funcall rmail-search-mime-header-function msg regexp (point)) - (re-search-forward regexp nil t))) + ;; We need to search the full headers, but probably want to decode + ;; them so they match the ones people see displayed. (Bug#19088) + (rmail--decode-and-apply 're-search-forward regexp nil t))) ;;;###autoload (defun rmail-summary-by-topic (subject &optional whole-message) "Display a summary of all messages with the given SUBJECT. Normally checks just the Subject field of headers; but with prefix argument WHOLE-MESSAGE is non-nil, looks in the whole message. -SUBJECT is a string of regexps separated by commas." +SUBJECT is a regular expression." (interactive ;; We quote the default subject, because if it contains regexp ;; special characters (eg "?"), it can fail to match itself. (Bug#2333) @@ -365,24 +377,23 @@ SUBJECT is a string of regexps separated by commas." (rmail-new-summary (concat "about " subject) (list 'rmail-summary-by-topic subject whole-message) - 'rmail-message-subject-p - (mail-comma-list-regexp subject) whole-message)) + 'rmail-message-subject-p subject whole-message)) (defun rmail-message-subject-p (msg subject &optional whole-message) (if whole-message - (rmail-apply-in-message msg 're-search-forward subject nil t) + ;; SUBJECT and rmail-simplified-subject are 2047 decoded. + (rmail-apply-in-message msg 'rmail--decode-and-apply + 're-search-forward subject nil t) (string-match subject (rmail-simplified-subject msg)))) ;;;###autoload (defun rmail-summary-by-senders (senders) "Display a summary of all messages whose \"From\" field matches SENDERS. -SENDERS is a string of regexps separated by commas." +SENDERS is a regular expression." (interactive "sSenders to summarize by: ") (rmail-new-summary (concat "senders " senders) - (list 'rmail-summary-by-senders senders) - 'rmail-message-senders-p - (mail-comma-list-regexp senders))) + (list 'rmail-summary-by-senders senders) 'rmail-message-senders-p senders)) (defun rmail-message-senders-p (msg senders) (string-match senders (or (rmail-get-header "From" msg) ""))) @@ -655,7 +666,7 @@ LINES is the number of lines in the message (if we should display that) (goto-char (point-min)) (let ((line (rmail-header-summary)) (labels (rmail-get-summary-labels)) - pos status prefix basic-start basic-end linecount-string) + status prefix basic-start basic-end linecount-string) (setq linecount-string (cond @@ -727,7 +738,7 @@ the message being processed." ;; Get all the lines of the From field ;; so that we get a whole comment if there is one, ;; so that mail-strip-quoted-names can discard it. - (let ((opoint (point))) + (progn (while (progn (forward-line 1) (looking-at "[ \t]"))) ;; Back up over newline, then trailing spaces or tabs @@ -909,8 +920,8 @@ A prefix argument serves as a repeat count; a negative argument means to delete and move backward." (interactive "p") (unless (numberp count) (setq count 1)) - (let (end del-msg - (backward (< count 0))) + (let (del-msg + (backward (< count 0))) (while (and (/= count 0) ;; Don't waste time if we are at the beginning ;; and trying to go backward. @@ -1029,7 +1040,7 @@ Optional prefix ARG means undelete ARG previous messages." (forward-line 1)) (setq n (1- n))) (rmail-summary-goto-msg 1) - (dotimes (i rmail-total-messages) + (dotimes (_ rmail-total-messages) (rmail-summary-goto-msg) (let (del-msg) (when (rmail-summary-deleted-p) diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index 9fa7aa5a6f2..2b9d8facae3 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -58,7 +58,7 @@ (defcustom mail-from-style 'default "Specifies how \"From:\" fields look. -If `nil', they contain just the return address like: +If nil, they contain just the return address like: king@grassland.com If `parens', they look like: king@grassland.com (Elvis Parsley) @@ -1500,9 +1500,10 @@ just append to the file, in Babyl format if necessary." (insert "\nMail-Followup-To: ")))) (defun mail-position-on-field (field &optional soft) - "Move to the start of the contents of header field FIELD. -If there is none, insert one, unless SOFT is non-nil. -If there are multiple FIELD fields, this goes to the first." + "Move to the end of the contents of header field FIELD. +If there is no such header, insert one, unless SOFT is non-nil. +If there are multiple FIELD fields, this goes to the first. +Returns non-nil if FIELD was originally present." (let (end (case-fold-search t)) (setq end (mail-header-end)) diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index cf3aac1a317..56158cc156c 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el @@ -886,10 +886,10 @@ Action can be one of: View, Modify, Add, or Delete." (defun sc-attribs-%@-addresses (from &optional delim) "Extract the author's email terminus from email address FROM. -Match addresses of the style ``name%[stuff].'' when called with DELIM -of \"%\" and addresses of the style ``[stuff]name@[stuff]'' when +Match addresses of the style \"name%[stuff].\" when called with DELIM +of \"%\" and addresses of the style \"[stuff]name@[stuff]\" when called with DELIM \"@\". If DELIM is nil or not provided, matches -addresses of the style ``name''." +addresses of the style \"name\"." (and (string-match (concat "[-[:alnum:]_.]+" delim) from 0) (substring from (match-beginning 0) @@ -897,7 +897,7 @@ addresses of the style ``name''." (defun sc-attribs-!-addresses (from) "Extract the author's email terminus from email address FROM. -Match addresses of the style ``[stuff]![stuff]...!name[stuff].''" +Match addresses of the style \"[stuff]![stuff]...!name[stuff].\"" (let ((eos (length from)) (mstart (string-match "![-[:alnum:]_.]+\\([^-![:alnum:]_.]\\|$\\)" from 0)) @@ -907,7 +907,7 @@ Match addresses of the style ``[stuff]![stuff]...!name[stuff].''" (defun sc-attribs-<>-addresses (from) "Extract the author's email terminus from email address FROM. -Match addresses of the style ``<name[stuff]>.''" +Match addresses of the style \"<name[stuff]>.\"" (and (string-match "<\\(.*\\)>" from) (match-string 1 from))) diff --git a/lisp/mail/uudecode.el b/lisp/mail/uudecode.el index 419aefbdad0..c1e3439a5de 100644 --- a/lisp/mail/uudecode.el +++ b/lisp/mail/uudecode.el @@ -102,7 +102,7 @@ used is specified by `uudecode-decoder-program'." (let ((cdir default-directory) (default-process-coding-system (if (featurep 'xemacs) - ;; In XEmacs, `nil' is not a valid coding system. + ;; In XEmacs, nil is not a valid coding system. '(binary . binary) nil))) (unwind-protect diff --git a/lisp/man.el b/lisp/man.el index d9124c24e00..c5dbcba83a1 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -747,7 +747,8 @@ POS defaults to `point'." ;; Record the distance traveled. (setq distance (- column (current-column))) (when (looking-back - (concat "([ \t]*\\(?:" Man-section-regexp "\\)[ \t]*)")) + (concat "([ \t]*\\(?:" Man-section-regexp "\\)[ \t]*)") + (line-beginning-position)) ;; Skip section number backwards. (goto-char (match-beginning 0)) (skip-chars-backward " \t")) diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 2ace3162c90..a1b6d95ec0b 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -474,13 +474,15 @@ :enable (and (cdr yank-menu) (not buffer-read-only)) :help "Choose a string from the kill ring and paste it")) (bindings--define-key menu [paste] - '(menu-item "Paste" yank - :enable (and (or - (gui-call gui-selection-exists-p 'CLIPBOARD) - (if (featurep 'ns) ; like paste-from-menu - (cdr yank-menu) - kill-ring)) - (not buffer-read-only)) + `(menu-item "Paste" yank + :enable (funcall + ',(lambda () + (and (or + (gui-backend-selection-exists-p 'CLIPBOARD) + (if (featurep 'ns) ; like paste-from-menu + (cdr yank-menu) + kill-ring)) + (not buffer-read-only)))) :help "Paste (yank) text most recently cut/copied")) (bindings--define-key menu [copy] ;; ns-win.el said: Substitute a Copy function that works better @@ -523,9 +525,12 @@ '(and mark-active (not buffer-read-only))) (put 'clipboard-kill-ring-save 'menu-enable 'mark-active) (put 'clipboard-yank 'menu-enable - '(and (or (gui-call gui-selection-exists-p 'PRIMARY) - (gui-call gui-selection-exists-p 'CLIPBOARD)) - (not buffer-read-only))) + `(funcall ',(lambda () + (and (or (gui-backend-selection-exists-p 'PRIMARY) + (gui-backend-selection-exists-p 'CLIPBOARD)) + (not buffer-read-only))))) + +(defvar gui-select-enable-clipboard) (defun clipboard-yank () "Insert the clipboard contents, or the last stretch of killed text." diff --git a/lisp/midnight.el b/lisp/midnight.el index dbf0c0289d1..256ab9c06aa 100644 --- a/lisp/midnight.el +++ b/lisp/midnight.el @@ -1,4 +1,4 @@ -;;; midnight.el --- run something every midnight, e.g., kill old buffers +;;; midnight.el --- run something every midnight, e.g., kill old buffers -*- lexical-binding:t -*- ;; Copyright (C) 1998, 2001-2015 Free Software Foundation, Inc. @@ -36,7 +36,7 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) +(require 'cl-lib) (defgroup midnight nil "Run something every day at midnight." @@ -48,24 +48,19 @@ Use `cancel-timer' to stop it and `midnight-delay-set' to change the time when it is run.") -(defcustom midnight-mode nil - "Non-nil means run `midnight-hook' at midnight. -Setting this variable outside customize has no effect; -call `cancel-timer' or `timer-activate' on `midnight-timer' instead." - :type 'boolean - :group 'midnight - :require 'midnight - :initialize 'custom-initialize-default - :set (lambda (symb val) - (set symb val) (require 'midnight) - (if val (timer-activate midnight-timer) - (cancel-timer midnight-timer)))) +;;;###autoload +(define-minor-mode midnight-mode + "Non-nil means run `midnight-hook' at midnight." + :global t + :initialize #'custom-initialize-default + (if midnight-mode (timer-activate midnight-timer) + (cancel-timer midnight-timer))) ;;; time conversion -(defun midnight-buffer-display-time (&optional buffer) +(defun midnight-buffer-display-time (buffer) "Return the time-stamp of BUFFER, or current buffer, as float." - (with-current-buffer (or buffer (current-buffer)) + (with-current-buffer buffer (when buffer-display-time (float-time buffer-display-time)))) ;;; clean-buffer-list stuff @@ -76,18 +71,16 @@ The autokilling is done by `clean-buffer-list' when is it in `midnight-hook'. Currently displayed and/or modified (unsaved) buffers, as well as buffers matching `clean-buffer-list-kill-never-buffer-names' and `clean-buffer-list-kill-never-regexps' are excluded." - :type 'integer - :group 'midnight) + :type 'integer) (defcustom clean-buffer-list-delay-special 3600 "The number of seconds before some buffers become eligible for autokilling. Buffers matched by `clean-buffer-list-kill-regexps' and `clean-buffer-list-kill-buffer-names' are killed if they were last displayed more than this many seconds ago." - :type 'integer - :group 'midnight) + :type 'integer) -(defcustom clean-buffer-list-kill-regexps '("^\\*Man ") +(defcustom clean-buffer-list-kill-regexps '("\\`\\*Man ") "List of regexps saying which buffers will be killed at midnight. If buffer name matches a regexp in the list and the buffer was not displayed in the last `clean-buffer-list-delay-special' seconds, it is killed by @@ -96,9 +89,14 @@ If a member of the list is a cons, its `car' is the regexp and its `cdr' is the number of seconds to use instead of `clean-buffer-list-delay-special'. See also `clean-buffer-list-kill-buffer-names', `clean-buffer-list-kill-never-regexps' and -`clean-buffer-list-kill-never-buffer-names'." - :type '(repeat (regexp :tag "Regexp matching Buffer Name")) - :group 'midnight) +`clean-buffer-list-kill-never-buffer-names'. + +Each element can also be a function instead of a regexp, in which case +it takes a single argument (a buffer name) and should return non-nil +if the buffer should be killed by `clean-buffer-list'." + :type '(repeat + (choice (regexp :tag "Regexp matching Buffer Name") + (function :tag "Predicate function")))) (defcustom clean-buffer-list-kill-buffer-names '("*Help*" "*Apropos*" "*Buffer List*" "*Compile-Log*" "*info*" @@ -112,8 +110,7 @@ the number of seconds to use instead of `clean-buffer-list-delay-special'. See also `clean-buffer-list-kill-regexps', `clean-buffer-list-kill-never-regexps' and `clean-buffer-list-kill-never-buffer-names'." - :type '(repeat (string :tag "Buffer Name")) - :group 'midnight) + :type '(repeat (string :tag "Buffer Name"))) (defcustom clean-buffer-list-kill-never-buffer-names '("*scratch*" "*Messages*") @@ -122,33 +119,34 @@ See also `clean-buffer-list-kill-never-regexps'. Note that this does override `clean-buffer-list-kill-regexps' and `clean-buffer-list-kill-buffer-names' so a buffer matching any of these two lists will NOT be killed if it is also present in this list." - :type '(repeat (string :tag "Buffer Name")) - :group 'midnight) + :type '(repeat (string :tag "Buffer Name"))) -(defcustom clean-buffer-list-kill-never-regexps '("^ \\*Minibuf-.*\\*$") +(defcustom clean-buffer-list-kill-never-regexps '("\\` \\*Minibuf-.*\\*\\'") "List of regexp saying which buffers will never be killed at midnight. See also `clean-buffer-list-kill-never-buffer-names'. Killing is done by `clean-buffer-list'. Note that this does override `clean-buffer-list-kill-regexps' and `clean-buffer-list-kill-buffer-names' so a buffer matching any of these -two lists will NOT be killed if it also matches anything in this list." - :type '(repeat (regexp :tag "Regexp matching Buffer Name")) - :group 'midnight) +two lists will NOT be killed if it also matches anything in this list. -(defun midnight-find (el ls test &optional key) - "A stopgap solution to the absence of `find' in ELisp." - (cl-dolist (rr ls) - (when (funcall test (if key (funcall key rr) rr) el) - (cl-return rr)))) +Each element can also be a function instead of a regexp, in which case +it takes a single argument (a buffer name) and should return non-nil +if the buffer should never be killed by `clean-buffer-list'." + :type '(repeat + (choice (regexp :tag "Regexp matching Buffer Name") + (function :tag "Predicate function")))) (defun clean-buffer-list-delay (name) "Return the delay, in seconds, before killing a buffer named NAME. Uses `clean-buffer-list-kill-buffer-names', `clean-buffer-list-kill-regexps' `clean-buffer-list-delay-general' and `clean-buffer-list-delay-special'. Autokilling is done by `clean-buffer-list'." - (or (assoc-default name clean-buffer-list-kill-buffer-names 'string= + (or (assoc-default name clean-buffer-list-kill-buffer-names #'string= clean-buffer-list-delay-special) - (assoc-default name clean-buffer-list-kill-regexps 'string-match + (assoc-default name clean-buffer-list-kill-regexps + (lambda (re str) + (if (functionp re) + (funcall re str) (string-match re str))) clean-buffer-list-delay-special) (* clean-buffer-list-delay-general 24 60 60))) @@ -172,10 +170,13 @@ lifetime, i.e., its \"age\" when it will be purged." (setq bts (midnight-buffer-display-time buf) bn (buffer-name buf) delay (if bts (- tm bts) 0) cbld (clean-buffer-list-delay bn)) (message "[%s] `%s' [%s %d]" ts bn (if bts (round delay)) cbld) - (unless (or (midnight-find bn clean-buffer-list-kill-never-regexps - 'string-match) - (midnight-find bn clean-buffer-list-kill-never-buffer-names - 'string-equal) + (unless (or (cl-find bn clean-buffer-list-kill-never-regexps + :test (lambda (bn re) + (if (functionp re) + (funcall re bn) + (string-match re bn)))) + (cl-find bn clean-buffer-list-kill-never-buffer-names + :test #'string-equal) (get-buffer-process buf) (and (buffer-file-name buf) (buffer-modified-p buf)) (get-buffer-window buf 'visible) (< delay cbld)) @@ -190,8 +191,7 @@ lifetime, i.e., its \"age\" when it will be purged." (defcustom midnight-hook '(clean-buffer-list) "The hook run `midnight-delay' seconds after midnight every day. The default value is `clean-buffer-list'." - :type 'hook - :group 'midnight) + :type 'hook) (defun midnight-next () "Return the number of seconds till the next midnight." @@ -209,7 +209,7 @@ to its second argument TM." (when (timerp midnight-timer) (cancel-timer midnight-timer)) (setq midnight-timer (run-at-time (if (numberp tm) (+ (midnight-next) tm) tm) - midnight-period 'run-hooks 'midnight-hook))) + midnight-period #'run-hooks 'midnight-hook))) (defcustom midnight-delay 3600 "The number of seconds after the midnight when the `midnight-timer' is run. @@ -218,8 +218,7 @@ set it by calling `midnight-delay-set', or use `custom'. If you wish, you can use a string instead, it will be passed as the first argument to `run-at-time'." :type 'sexp - :set 'midnight-delay-set - :group 'midnight) + :set #'midnight-delay-set) (provide 'midnight) diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 538bd974256..60b89b6d521 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1241,16 +1241,12 @@ scroll the window of possible completions." (defun minibuffer-force-complete-and-exit () "Complete the minibuffer with first of the matches and exit." (interactive) - (if (and (eq (minibuffer-prompt-end) (point-max)) - minibuffer-default) - ;; Use the provided default if there's one (bug#17545). - (minibuffer-complete-and-exit) - (minibuffer-force-complete) - (completion--complete-and-exit - (minibuffer-prompt-end) (point-max) #'exit-minibuffer - ;; If the previous completion completed to an element which fails - ;; test-completion, then we shouldn't exit, but that should be rare. - (lambda () (minibuffer-message "Incomplete"))))) + (minibuffer-force-complete) + (completion--complete-and-exit + (minibuffer-prompt-end) (point-max) #'exit-minibuffer + ;; If the previous completion completed to an element which fails + ;; test-completion, then we shouldn't exit, but that should be rare. + (lambda () (minibuffer-message "Incomplete")))) (defun minibuffer-force-complete (&optional start end) "Complete the minibuffer to an exact match. diff --git a/lisp/mouse-copy.el b/lisp/mouse-copy.el index 609713ce5fd..d3c3c80fd99 100644 --- a/lisp/mouse-copy.el +++ b/lisp/mouse-copy.el @@ -177,7 +177,7 @@ put the point at one place, then click and drag over some other region." (mouse-copy-work-around-drag-bug start-event last-input-event)) ;; Remember what we do so we can undo it, if necessary. (setq mouse-copy-last-paste-start (point)) - (insert (x-get-selection 'SECONDARY)) + (insert (gui-get-selection 'SECONDARY)) (setq mouse-copy-last-paste-end (point))) (setq mouse-copy-last-paste-start nil))) @@ -216,7 +216,7 @@ by johnh@ficus.cs.ucla.edu." (if (mouse-drag-secondary start-event) (progn (mouse-kill-preserving-secondary) - (insert (x-get-selection 'SECONDARY)))) + (insert (gui-get-selection 'SECONDARY)))) ) (provide 'mouse-copy) diff --git a/lisp/mouse.el b/lisp/mouse.el index 5f3fa5d7694..7854d32eb20 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -152,13 +152,16 @@ items `Turn Off' and `Help'." (setq menu (if menu (mouse-menu-non-singleton menu) - `(keymap - ,indicator - (turn-off menu-item "Turn Off minor mode" ,mm-fun) - (help menu-item "Help for minor mode" - (lambda () (interactive) - (describe-function ',mm-fun)))))) - (popup-menu menu)))) + (if (fboundp mm-fun) ; bug#20201 + `(keymap + ,indicator + (turn-off menu-item "Turn Off minor mode" ,mm-fun) + (help menu-item "Help for minor mode" + (lambda () (interactive) + (describe-function ',mm-fun))))))) + (if menu + (popup-menu menu) + (message "No menu available"))))) (defun mouse-minor-mode-menu (event) "Show minor-mode menu for EVENT on minor modes area of the mode line." diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 52153ad8322..1f893a72f8e 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -193,7 +193,7 @@ ;; ;; "^$*$ *" ;; -;; 9) Set the variable ange-ftp-gateway-program-interactive to 't' to let +;; 9) Set the variable ange-ftp-gateway-program-interactive to t to let ;; ange-ftp know that it has to "hand-hold" the login to the gateway ;; machine. ;; diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 933d292ddfd..3f8cb841c6f 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -761,10 +761,13 @@ narrowed." ;;;###autoload (defun browse-url (url &rest args) "Ask a WWW browser to load URL. -Prompt for a URL, defaulting to the URL at or before point. Variable -`browse-url-browser-function' says which browser to use. +Prompt for a URL, defaulting to the URL at or before point. +The variable `browse-url-browser-function' says which browser to use. If the URL is a mailto: URL, consult `browse-url-mailto-function' -first, if that exists." +first, if that exists. + +Passes any ARGS to the browser function. +The default is to pass `browse-url-new-window-flag'." (interactive (browse-url-interactive-arg "URL: ")) (unless (called-interactively-p 'interactive) (setq args (or args (list browse-url-new-window-flag)))) @@ -800,7 +803,9 @@ first, if that exists." ;;;###autoload (defun browse-url-at-point (&optional arg) "Ask a WWW browser to load the URL at or before point. -Variable `browse-url-browser-function' says which browser to use." +Variable `browse-url-browser-function' says which browser to use. +Optional prefix argument ARG non-nil inverts the value of the option +`browse-url-new-window-flag'." (interactive "P") (let ((url (browse-url-url-at-point))) (if url diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el index 474a48ff276..8f7754137cb 100644 --- a/lisp/net/dbus.el +++ b/lisp/net/dbus.el @@ -813,7 +813,7 @@ discovering the still incomplete interface." "Unregister OBJECT from D-Bus. OBJECT must be the result of a preceding `dbus-register-method', `dbus-register-property' or `dbus-register-signal' call. It -returns `t' if OBJECT has been unregistered, `nil' otherwise. +returns t if OBJECT has been unregistered, nil otherwise. When OBJECT identifies the last method or property, which is registered for the respective service, Emacs releases its @@ -1092,7 +1092,7 @@ well formed." (defun dbus-list-activatable-names (&optional bus) "Return the D-Bus service names which can be activated as list. If BUS is left nil, `:system' is assumed. The result is a list -of strings, which is `nil' when there are no activatable service +of strings, which is nil when there are no activatable service names at all." (dbus-ignore-errors (dbus-call-method @@ -1101,7 +1101,7 @@ names at all." (defun dbus-list-names (bus) "Return the service names registered at D-Bus BUS. -The result is a list of strings, which is `nil' when there are no +The result is a list of strings, which is nil when there are no registered service names at all. Well known names are strings like \"org.freedesktop.DBus\". Names starting with \":\" are unique names for services." @@ -1119,7 +1119,7 @@ A service has a known name if it doesn't start with \":\"." (defun dbus-list-queued-owners (bus service) "Return the unique names registered at D-Bus BUS and queued for SERVICE. -The result is a list of strings, or `nil' when there are no +The result is a list of strings, or nil when there are no queued name owners service names at all." (dbus-ignore-errors (dbus-call-method @@ -1128,7 +1128,7 @@ queued name owners service names at all." (defun dbus-get-name-owner (bus service) "Return the name owner of SERVICE registered at D-Bus BUS. -The result is either a string, or `nil' if there is no name owner." +The result is either a string, or nil if there is no name owner." (dbus-ignore-errors (dbus-call-method bus dbus-service-dbus dbus-path-dbus @@ -1145,7 +1145,7 @@ apply \(member service \(dbus-list-known-names bus))" ;; "Ping" raises a D-Bus error if SERVICE does not exist. - ;; Otherwise, it returns silently with `nil'. + ;; Otherwise, it returns silently with nil. (condition-case nil (not (if (natnump timeout) @@ -1335,7 +1335,7 @@ object can contain \"annotation\" children." (defun dbus-introspect-get-annotation-names (bus service path interface &optional name) "Return all annotation names as list of strings. -If NAME is `nil', the annotations are children of INTERFACE, +If NAME is nil, the annotations are children of INTERFACE, otherwise NAME must be a \"method\", \"signal\", or \"property\" object, where the annotations belong to." (let ((object @@ -1352,7 +1352,7 @@ object, where the annotations belong to." (defun dbus-introspect-get-annotation (bus service path interface name annotation) "Return ANNOTATION as XML object. -If NAME is `nil', ANNOTATION is a child of INTERFACE, otherwise +If NAME is nil, ANNOTATION is a child of INTERFACE, otherwise NAME must be the name of a \"method\", \"signal\", or \"property\" object, where the ANNOTATION belongs to." (let ((elt (xml-get-children @@ -1376,7 +1376,7 @@ NAME must be the name of a \"method\", \"signal\", or "Return a list of all argument names as list of strings. NAME must be a \"method\" or \"signal\" object. -Argument names are optional, the function can return `nil' +Argument names are optional, the function can return nil therefore, even if the method or signal has arguments." (let ((object (or (dbus-introspect-get-method bus service path interface name) @@ -1404,9 +1404,9 @@ element of the list returned by `dbus-introspect-get-argument-names'." (bus service path interface name &optional direction) "Return signature of a `method' or `signal', represented by NAME, as string. If NAME is a `method', DIRECTION can be either \"in\" or \"out\". -If DIRECTION is `nil', \"in\" is assumed. +If DIRECTION is nil, \"in\" is assumed. -If NAME is a `signal', and DIRECTION is non-`nil', DIRECTION must +If NAME is a `signal', and DIRECTION is non-nil, DIRECTION must be \"out\"." ;; For methods, we use "in" as default direction. (let ((object (or (dbus-introspect-get-method @@ -1440,7 +1440,7 @@ be \"out\"." (defun dbus-get-property (bus service path interface property) "Return the value of PROPERTY of INTERFACE. It will be checked at BUS, SERVICE, PATH. The result can be any -valid D-Bus value, or `nil' if there is no PROPERTY." +valid D-Bus value, or nil if there is no PROPERTY." (dbus-ignore-errors ;; "Get" returns a variant, so we must use the `car'. (car @@ -1451,7 +1451,7 @@ valid D-Bus value, or `nil' if there is no PROPERTY." (defun dbus-set-property (bus service path interface property value) "Set value of PROPERTY of INTERFACE to VALUE. It will be checked at BUS, SERVICE, PATH. When the value has -been set successful, the result is VALUE. Otherwise, `nil' is +been set successful, the result is VALUE. Otherwise, nil is returned." (dbus-ignore-errors ;; "Set" requires a variant. @@ -1465,7 +1465,7 @@ returned." "Return all properties of INTERFACE at BUS, SERVICE, PATH. The result is a list of entries. Every entry is a cons of the name of the property, and its value. If there are no properties, -`nil' is returned." +nil is returned." (dbus-ignore-errors ;; "GetAll" returns "a{sv}". (let (result) diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el index 36a583daa4d..5e994a3a38f 100644 --- a/lisp/net/eudc-vars.el +++ b/lisp/net/eudc-vars.el @@ -312,9 +312,11 @@ arguments that should be passed to the program." :inline t (string :tag "Argument"))))) -(defcustom eudc-options-file "~/.eudc-options" +(defcustom eudc-options-file + (locate-user-emacs-file "eudc-options" ".eudc-options") "A file where the `servers' hotlist is stored." - :type '(file :Tag "File Name:")) + :type '(file :Tag "File Name:") + :version "25.1") (defcustom eudc-mode-hook nil "Normal hook run on entry to EUDC mode." diff --git a/lisp/net/eww.el b/lisp/net/eww.el index a128ffb9d06..f2f5ecb8e88 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -379,7 +379,7 @@ Currently this means either text/html or application/xhtml+xml." (match-string 1))))) (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (defun eww-display-html (charset url &optional document point buffer encode) (unless (fboundp 'libxml-parse-html-region) diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el index c1b107932c3..087ae439f3f 100644 --- a/lisp/net/mairix.el +++ b/lisp/net/mairix.el @@ -265,18 +265,22 @@ Currently there are 'threads and 'flags.") (mail-fetch-field field))))) ;;; Gnus -(eval-when-compile - (defvar gnus-article-buffer) - (autoload 'gnus-summary-toggle-header "gnus-sum") - (autoload 'gnus-buffer-exists-p "gnus-util") - (autoload 'message-field-value "message") - (autoload 'gnus-group-read-ephemeral-group "gnus-group") - (autoload 'gnus-alive-p "gnus-util")) + +;; For gnus-buffer-exists-p, although it seems that could be replaced by: +;; (and buffer (get-buffer buffer)) +(eval-when-compile (require 'gnus-util)) +(defvar gnus-article-buffer) +(declare-function gnus-group-read-ephemeral-group "gnus-group" + (group method &optional activate quit-config + request-only select-articles parameters number)) +(declare-function gnus-summary-toggle-header "gnus-sum" (&optional arg)) +(declare-function message-field-value "message" (header &optional not-all)) ;; Display function: (defun mairix-gnus-ephemeral-nndoc (folder) "Create ephemeral nndoc group for reading mbox file FOLDER in Gnus." - (unless (gnus-alive-p) + (unless (and (fboundp 'gnus-alive-p) + (gnus-alive-p)) (error "Gnus is not running")) (gnus-group-read-ephemeral-group ;; add randomness to group string to prevent Gnus from using a @@ -289,26 +293,29 @@ Currently there are 'threads and 'flags.") ;; Fetching mail header field: (defun mairix-gnus-fetch-field (field) "Get mail header FIELD for current message using Gnus." - (unless (gnus-alive-p) + (unless (and (fboundp 'gnus-alive-p) + (gnus-alive-p)) (error "Gnus is not running")) (unless (gnus-buffer-exists-p gnus-article-buffer) (error "No article buffer available")) (with-current-buffer gnus-article-buffer + ;; gnus-art requires gnus-sum and message. (gnus-summary-toggle-header 1) (message-field-value field))) ;;; VM ;;; written by Ulrich Mueller -(eval-when-compile - (autoload 'vm-quit "vm-folder") - (autoload 'vm-visit-folder "vm") - (autoload 'vm-select-folder-buffer "vm-macro") - (autoload 'vm-check-for-killed-summary "vm-misc") - (autoload 'vm-get-header-contents "vm-summary") - (autoload 'vm-check-for-killed-summary "vm-misc") - (autoload 'vm-error-if-folder-empty "vm-misc") - (autoload 'vm-select-marked-or-prefixed-messages "vm-folder")) +(declare-function vm-quit "ext:vm-folder" (&optional no-change)) +(declare-function vm-visit-folder "ext:vm-startup" + (folder &optional read-only)) +(declare-function vm-select-folder-buffer "ext:vm-macro" ()) ; defsubst +(declare-function vm-check-for-killed-summary "ext:vm-misc" ()) +(declare-function vm-error-if-folder-empty "ext:vm-misc" ()) +(declare-function vm-get-header-contents "ext:vm-summary" + (message header-name-regexp &optional clump-sep)) +(declare-function vm-select-marked-or-prefixed-messages "ext:vm-folder" + (prefix)) ;; Display function (defun mairix-vm-display (folder) diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index ebcbc714ffb..eaf1d7e22c4 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -326,6 +326,8 @@ This variable is only used if the variable (insert filtered-string) (set-marker (process-mark process) (point)))))) +(declare-function w32-get-console-output-codepage "w32proc.c" ()) + (defun net-utils-run-program (name header program args) "Run a network information program." (let ((buf (get-buffer-create (concat "*" name "*"))) diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 0104fa7dd12..1eb5342009c 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el @@ -121,7 +121,7 @@ values: :client-certificate should either be a list where the first element is the certificate key file name, and the second - element is the certificate file name itself, or `t', which + element is the certificate file name itself, or t, which means that `auth-source' will be queried for the key and the certificate. This parameter will only be used when doing TLS or STARTTLS connections. diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el index 28253e5bdf5..261e5a1a36c 100644 --- a/lisp/net/nsm.el +++ b/lisp/net/nsm.el @@ -76,6 +76,8 @@ stored in plain text." "If non-nil, the connection is opened in a non-interactive context. This means that no queries should be performed.") +(declare-function gnutls-peer-status "gnutls.c" (proc)) + (defun nsm-verify-connection (process host port &optional save-fingerprint warn-unencrypted) "Verify the security status of PROCESS that's connected to HOST:PORT. @@ -122,6 +124,9 @@ unencrypted." (nsm-check-protocol process host port status settings) process))) +(declare-function gnutls-peer-status-warning-describe "gnutls.c" + (status-symbol)) + (defun nsm-check-certificate (process host port status settings) (let ((warnings (plist-get status :warnings))) (cond diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 5ea10475cea..852d2941f0b 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1372,7 +1372,7 @@ if ARG is omitted or nil." (t . "%fp*** %fs%n %r %m")) "An alist of formats used for printing responses. The format is looked up using the response-type as a key; -if no match is found, the default entry (with a key of `t') is used. +if no match is found, the default entry (with a key of t) is used. The entry's value part should be a string, which is inserted with the of the following escape sequences replaced by the described values: @@ -1924,17 +1924,13 @@ Uninteresting lines are those whose responses are listed in (goto-char overlay-arrow-position) (message "No unread messages"))) -(defun rcirc-non-irc-buffer () - (let ((buflist (buffer-list)) - buffer) - (while (and buflist (not buffer)) - (with-current-buffer (car buflist) - (unless (or (eq major-mode 'rcirc-mode) - (= ?\s (aref (buffer-name) 0)) ; internal buffers - (get-buffer-window (current-buffer))) - (setq buffer (current-buffer)))) - (setq buflist (cdr buflist))) - buffer)) +(defun rcirc-bury-buffers () + "Bury all RCIRC buffers." + (interactive) + (dolist (buf (buffer-list)) + (when (eq 'rcirc-mode (with-current-buffer buf major-mode)) + (bury-buffer buf) ; buffers not shown + (quit-windows-on buf)))) ; buffers shown in a window (defun rcirc-next-active-buffer (arg) "Switch to the next rcirc buffer with activity. @@ -1949,15 +1945,13 @@ With prefix ARG, go to the next low priority buffer with activity." (switch-to-buffer (car (if arg lopri hipri))) (when (> (point) rcirc-prompt-start-marker) (recenter -1))) - (if (eq major-mode 'rcirc-mode) - (switch-to-buffer (rcirc-non-irc-buffer)) - (message "%s" (concat - "No IRC activity." - (when lopri - (concat - " Type C-u " - (key-description (this-command-keys)) - " for low priority activity.")))))))) + (rcirc-bury-buffers) + (message "No IRC activity.%s" + (if lopri + (concat + " Type C-u " (key-description (this-command-keys)) + " for low priority activity.") + ""))))) (define-obsolete-variable-alias 'rcirc-activity-hooks 'rcirc-activity-functions "24.3") diff --git a/lisp/net/rlogin.el b/lisp/net/rlogin.el index d0758208303..e71179b6b89 100644 --- a/lisp/net/rlogin.el +++ b/lisp/net/rlogin.el @@ -235,14 +235,14 @@ variable." "Do remote or local directory tracking, or disable entirely. If called with no prefix argument or a unspecified prefix argument (just -``\\[universal-argument]'' with no number) do remote directory tracking via +`\\[universal-argument]' with no number) do remote directory tracking via ange-ftp. If called as a function, give it no argument. If called with a negative prefix argument, disable directory tracking entirely. If called with a positive, numeric prefix argument, e.g. -``\\[universal-argument] 1 M-x rlogin-directory-tracking-mode\'', +`\\[universal-argument] 1 M-x rlogin-directory-tracking-mode', then do directory tracking but assume the remote filesystem is the same as the local system. This only works in general if the remote machine and the local one share the same directories (e.g. through NFS)." diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index 6f4e1736937..c4102a18cef 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el @@ -85,7 +85,7 @@ ;; temporarily. This shall be preferred over creation of a persistent ;; collection, when the information shall not live longer than Emacs. ;; The session collection can be addressed either by the string -;; "session", or by `nil', whenever a collection parameter is needed. +;; "session", or by nil, whenever a collection parameter is needed. ;; As already said, a collection is a group of secret items. A secret ;; item has a label, the "secret" (which is a string), and a set of @@ -418,7 +418,7 @@ returned, and it will be stored in `secrets-session-path'." (defun secrets-prompt-handler (&rest args) "Handler for signals emitted by `secrets-interface-prompt'." ;; An empty object path is always identified as `secrets-empty-path' - ;; or `nil'. Either we set it explicitly, or it is returned by the + ;; or nil. Either we set it explicitly, or it is returned by the ;; "Completed" signal. (if (car args) ;; dismissed (setq secrets-prompt-signal (list secrets-empty-path)) @@ -598,10 +598,9 @@ If successful, return the object path of the collection." ATTRIBUTES are key-value pairs. The keys are keyword symbols, starting with a colon. Example: - \(secrets-create-item \"Tramp collection\" \"item\" \"geheim\" - :method \"sudo\" :user \"joe\" :host \"remote-host\"\) + \(secrets-search-items \"Tramp collection\" :user \"joe\") -The object paths of the found items are returned as list." +The object labels of the found items are returned as list." (let ((collection-path (secrets-unlock-collection collection)) result props) (unless (secrets-empty-path collection-path) @@ -618,8 +617,7 @@ The object paths of the found items are returned as list." (cadr attributes)) 'append) attributes (cddr attributes))) - ;; Search. The result is a list of two lists, the object paths - ;; of the unlocked and the locked items. + ;; Search. The result is a list of object paths. (setq result (dbus-call-method :session secrets-service collection-path @@ -630,7 +628,7 @@ The object paths of the found items are returned as list." ;; Return the found items. (mapcar (lambda (item-path) (secrets-get-item-property item-path "Label")) - (append (car result) (cadr result)))))) + result)))) (defun secrets-create-item (collection item password &rest attributes) "Create a new item in COLLECTION with label ITEM and password PASSWORD. diff --git a/lisp/net/shr.el b/lisp/net/shr.el index 9d88d1ff441..0ce77b9055c 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -57,7 +57,7 @@ fit these criteria." :group 'shr :type '(choice (const nil) regexp)) -(defcustom shr-use-fonts nil +(defcustom shr-use-fonts t "If non-nil, use proportional fonts for text." :version "25.1" :group 'shr @@ -152,7 +152,6 @@ cid: URL as the argument.") (defvar shr-ignore-cache nil) (defvar shr-external-rendering-functions nil) (defvar shr-target-id nil) -(defvar shr-inhibit-decoration nil) (defvar shr-table-separator-length 1) (defvar shr-table-separator-pixel-width 0) (defvar shr-table-id nil) @@ -178,7 +177,7 @@ cid: URL as the argument.") ;; Public functions and commands. (declare-function libxml-parse-html-region "xml.c" - (start end &optional base-url)) + (start end &optional base-url discard-comments)) (defun shr-render-buffer (buffer) "Display the HTML rendering of the current buffer." @@ -709,6 +708,9 @@ size, and full-buffer size." shr-base)) (when (zerop (length url)) (setq url nil)) + ;; Strip leading whitespace + (and url (string-match "\\`\\s-+" url) + (setq url (substring url (match-end 0)))) (cond ((or (not url) (not base) (string-match "\\`[a-z]*:" url)) @@ -780,16 +782,15 @@ size, and full-buffer size." ;; blank text at the start of the line, and the newline at the end, to ;; avoid ugliness. (defun shr-add-font (start end type) - (unless shr-inhibit-decoration - (save-excursion - (goto-char start) - (while (< (point) end) - (when (bolp) - (skip-chars-forward " ")) - (add-face-text-property (point) (min (line-end-position) end) type t) - (if (< (line-end-position) end) - (forward-line 1) - (goto-char end)))))) + (save-excursion + (goto-char start) + (while (< (point) end) + (when (bolp) + (skip-chars-forward " ")) + (add-face-text-property (point) (min (line-end-position) end) type t) + (if (< (line-end-position) end) + (forward-line 1) + (goto-char end))))) (defun shr-mouse-browse-url (ev) "Browse the URL under the mouse cursor." @@ -948,6 +949,9 @@ Return a string with image data." (search-forward "\r\n\r\n" nil t)) (shr-parse-image-data))))) +(declare-function libxml-parse-xml-region "xml.c" + (start end &optional base-url discard-comments)) + (defun shr-parse-image-data () (let ((data (buffer-substring (point) (point-max))) (content-type @@ -1038,8 +1042,7 @@ ones, in case fg and bg are nil." (shr-color-visible bg fg))))))) (defun shr-colorize-region (start end fg &optional bg) - (when (and (not shr-inhibit-decoration) - (or fg bg)) + (when (or fg bg) (let ((new-colors (shr-color-check fg bg))) (when new-colors (when fg @@ -1209,8 +1212,7 @@ ones, in case fg and bg are nil." (shr-ensure-newline) (insert " ")) (put-text-property start (1+ start) 'shr-target-id shr-target-id)) - (when (and url - (not shr-inhibit-decoration)) + (when url (shr-urlify (or shr-start start) (shr-expand-url url) title)))) (defun shr-tag-object (dom) @@ -1802,7 +1804,6 @@ The preference is a float determined from `shr-prefer-media-type'." (defun shr-make-table-1 (dom widths &optional fill) (let ((trs nil) - (shr-inhibit-decoration (not fill)) (rowspans (make-vector (length widths) 0)) (colspan-remaining 0) colspan-width colspan-count diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index b19a432ee53..77405740917 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el @@ -490,7 +490,7 @@ elements named \"foo\" exist in the WSDL you could use: (soap-wsdl-get \"foo\" WSDL 'soap-message-p) -If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns` will be +If USE-LOCAL-ALIAS-TABLE is not nil, `soap-local-xmlns' will be used to resolve the namespace alias." (let ((alias-table (soap-wsdl-alias-table wsdl)) namespace element-name element) diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el index f844f83d716..6d9f408d5ca 100644 --- a/lisp/net/telnet.el +++ b/lisp/net/telnet.el @@ -237,7 +237,7 @@ Normally input is edited in Emacs and sent a line at a time." (define-derived-mode telnet-mode comint-mode "Telnet" "This mode is for using telnet (or rsh) from a buffer to another host. It has most of the same commands as comint-mode. -There is a variable ``telnet-interrupt-string'' which is the character +There is a variable `telnet-interrupt-string' which is the character sent to try to stop execution of a job on the remote host. Data is sent to the remote host when RET is typed." (set (make-local-variable 'window-point-insertion-type) t) diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index a92ca4df51c..7c509e1d098 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -850,9 +850,9 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored." (when tmpinput (delete-file tmpinput)) ;; `process-file-side-effects' has been introduced with GNU - ;; Emacs 23.2. If set to `nil', no remote file will be changed + ;; Emacs 23.2. If set to nil, no remote file will be changed ;; by `program'. If it doesn't exist, we assume its default - ;; value 't'. + ;; value t. (unless (and (boundp 'process-file-side-effects) (not (symbol-value 'process-file-side-effects))) (tramp-flush-directory-property v "")) diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index d45c0aad142..fee74eedec2 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -157,8 +157,8 @@ This includes password cache, file cache, connection cache, buffers." (interactive "P") (if arg (insert tramp-version) (message tramp-version))) -;; Make the `reporter` functionality available for making bug reports about -;; the package. A most useful piece of code. +;; Make the "reporter" functionality available for making bug reports about +;; the package. A most useful piece of code. (autoload 'reporter-submit-bug-report "reporter") diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 3ec90ca556f..e68c81cfa70 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -100,7 +100,7 @@ (setq byte-compile-not-obsolete-vars '(directory-sep-char))) ;; `remote-file-name-inhibit-cache' has been introduced with Emacs 24.1. - ;; Besides `t', `nil', and integer, we use also timestamps (as + ;; Besides t, nil, and integer, we use also timestamps (as ;; returned by `current-time') internally. (unless (boundp 'remote-file-name-inhibit-cache) (defvar remote-file-name-inhibit-cache nil)) @@ -459,7 +459,7 @@ element is not omitted." (delete "" (split-string string pattern))) (defun tramp-compat-process-running-p (process-name) - "Returns `t' if system process PROCESS-NAME is running for `user-login-name'." + "Returns t if system process PROCESS-NAME is running for `user-login-name'." (when (stringp process-name) (cond ;; GNU Emacs 22 on w32. diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 5988a284c6e..215e39d04c3 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1563,7 +1563,7 @@ connection if a previous connection has died for some reason." (defun tramp-gvfs-send-command (vec command &rest args) "Send the COMMAND with its ARGS to connection VEC. COMMAND is usually a command from the gvfs-* utilities. -`call-process' is applied, and it returns `t' if the return code is zero." +`call-process' is applied, and it returns t if the return code is zero." (with-current-buffer (tramp-get-connection-buffer vec) (tramp-gvfs-maybe-open-connection vec) (erase-buffer) diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 3f006e84dc1..fda5945a18a 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -67,7 +67,7 @@ files conditionalize this setup based on the TERM environment variable." :type 'string) ;;;###tramp-autoload -(defcustom tramp-histfile-override t +(defcustom tramp-histfile-override ".tramp_history" "When invoking a shell, override the HISTFILE with this value. When setting to a string, it redirects the shell history to that file. Be careful when setting to \"/dev/null\"; this might @@ -1459,12 +1459,14 @@ be non-negative integers." (tramp-shell-quote-argument localname)))))) ;; We handle also the local part, because there doesn't exist - ;; `set-file-uid-gid'. On W32 "chown" might not work. - (let ((uid (or (and (natnump uid) uid) (tramp-get-local-uid 'integer))) - (gid (or (and (natnump gid) gid) (tramp-get-local-gid 'integer)))) - (tramp-call-process - nil "chown" nil nil nil - (format "%d:%d" uid gid) (tramp-shell-quote-argument filename)))))) + ;; `set-file-uid-gid'. On W32 "chown" might not work. We add a + ;; timeout for this. + (with-timeout (5 nil) + (let ((uid (or (and (natnump uid) uid) (tramp-get-local-uid 'integer))) + (gid (or (and (natnump gid) gid) (tramp-get-local-gid 'integer)))) + (tramp-call-process + nil "chown" nil nil nil + (format "%d:%d" uid gid) (tramp-shell-quote-argument filename))))))) (defun tramp-remote-selinux-p (vec) "Check, whether SELINUX is enabled on the remote host." @@ -1558,7 +1560,7 @@ be non-negative integers." (progn (tramp-set-file-property v localname "file-acl" acl-string) t) - ;; In case of errors, we return `nil'. + ;; In case of errors, we return nil. (tramp-set-file-property v localname "file-acl-string" 'undef) nil))) @@ -2122,15 +2124,17 @@ FILENAME is the source file, NEWNAME the target file. KEEP-DATE is non-nil if NEWNAME should have the same timestamp as FILENAME." ;; We must disable multibyte, because binary data shall not be ;; converted. We don't want the target file to be compressed, so we - ;; let-bind `jka-compr-inhibit' to t. - ;; We remove `tramp-file-name-handler' from + ;; let-bind `jka-compr-inhibit' to t. `epa-file-handler' shall not + ;; be called either. We remove `tramp-file-name-handler' from ;; `inhibit-file-name-handlers'; otherwise the file name handler for ;; `insert-file-contents' might be deactivated in some corner cases. (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary) (jka-compr-inhibit t) + (inhibit-file-name-operation 'write-region) (inhibit-file-name-handlers - (remq 'tramp-file-name-handler inhibit-file-name-handlers))) + (cons 'epa-file-handler + (remq 'tramp-file-name-handler inhibit-file-name-handlers)))) (with-temp-file newname (set-buffer-multibyte nil) (insert-file-contents-literally filename))) @@ -3103,9 +3107,9 @@ the result will be a local, non-Tramp, file name." (when tmpinput (delete-file tmpinput)) ;; `process-file-side-effects' has been introduced with GNU - ;; Emacs 23.2. If set to `nil', no remote file will be changed + ;; Emacs 23.2. If set to nil, no remote file will be changed ;; by `program'. If it doesn't exist, we assume its default - ;; value `t'. + ;; value t. (unless (and (boundp 'process-file-side-effects) (not (symbol-value 'process-file-side-effects))) (tramp-flush-directory-property v "")) @@ -3205,7 +3209,8 @@ the result will be a local, non-Tramp, file name." (if (fboundp 'find-buffer-file-type) (symbol-function 'find-buffer-file-type) nil)) - (inhibit-file-name-handlers '(jka-compr-handler image-file-handler)) + (inhibit-file-name-handlers + '(epa-file-handler image-file-handler jka-compr-handler)) (inhibit-file-name-operation 'insert-file-contents)) (unwind-protect (progn @@ -3751,17 +3756,6 @@ Only send the definition if it has not already been done." (tramp-set-connection-property (tramp-get-connection-process vec) "scripts" (cons name scripts)))))) -(defun tramp-set-auto-save () - (when (and ;; ange-ftp has its own auto-save mechanism - (eq (tramp-find-foreign-file-name-handler (buffer-file-name)) - 'tramp-sh-file-name-handler) - auto-save-default) - (auto-save-mode 1))) -(add-hook 'find-file-hooks 'tramp-set-auto-save t) -(add-hook 'tramp-unload-hook - (lambda () - (remove-hook 'find-file-hooks 'tramp-set-auto-save))) - (defun tramp-run-test (switch filename) "Run `test' on the remote system, given a SWITCH and a FILENAME. Returns the exit code of the `test' program." @@ -4973,8 +4967,8 @@ function waits for output unless NOOUTPUT is set." (vec command &optional subshell dont-suppress-err) "Run COMMAND and check its exit status. Sends `echo $?' along with the COMMAND for checking the exit status. -If COMMAND is nil, just sends `echo $?'. Returns `t' if the exit -status is 0, and `nil' otherwise. +If COMMAND is nil, just sends `echo $?'. Returns t if the exit +status is 0, and nil otherwise. If the optional argument SUBSHELL is non-nil, the command is executed in a subshell, ie surrounded by parentheses. If @@ -5123,12 +5117,14 @@ Return ATTR." "")) (defun tramp-make-copy-program-file-name (vec) - "Create a file name suitable to be passed to `scp' or `nc' and workalikes." + "Create a file name suitable for `scp', `pscp', or `nc' and workalikes." (let ((method (tramp-file-name-method vec)) (user (tramp-file-name-user vec)) (host (tramp-file-name-real-host vec)) (localname (tramp-shell-quote-argument (tramp-file-name-localname vec)))) + (when (string-match tramp-ipv6-regexp host) + (setq host (format "[%s]" host))) (cond ((tramp-get-method-parameter method 'tramp-remote-copy-program) localname) @@ -5551,7 +5547,7 @@ If no corresponding command is found, nil is returned. Otherwise, either a string is returned which contains a `%s' mark to be used for the respective input or output file; or a Lisp function cell is returned to be applied on a buffer." - ;; We must catch the errors, because we want to return `nil', when + ;; We must catch the errors, because we want to return nil, when ;; no inline coding is found. (ignore-errors (let ((coding @@ -5585,7 +5581,7 @@ function cell is returned to be applied on a buffer." (default-directory (tramp-compat-temporary-file-directory))) (apply - 'call-process-region (point-min) (point-max) + 'tramp-call-process-region ,vec (point-min) (point-max) (car (split-string ,compress)) t t nil (cdr (split-string ,compress))))) `(lambda (beg end) @@ -5594,7 +5590,7 @@ function cell is returned to be applied on a buffer." (default-directory (tramp-compat-temporary-file-directory))) (apply - 'call-process-region beg end + 'tramp-call-process-region ,vec beg end (car (split-string ,compress)) t t nil (cdr (split-string ,compress)))) (,coding (point-min) (point-max))))) diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 14360b96fe6..c4f0f1f500a 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -1242,9 +1242,9 @@ target of the symlink differ." (kill-buffer (tramp-get-connection-property v "process-buffer" nil))) ;; `process-file-side-effects' has been introduced with GNU - ;; Emacs 23.2. If set to `nil', no remote file will be changed + ;; Emacs 23.2. If set to nil, no remote file will be changed ;; by `program'. If it doesn't exist, we assume its default - ;; value `t'. + ;; value t. (unless (and (boundp 'process-file-side-effects) (not (symbol-value 'process-file-side-effects))) (tramp-flush-directory-property v "")) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 10bb76983aa..fc23a0bfeb5 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -147,9 +147,11 @@ policy for local files." (defcustom tramp-auto-save-directory nil "Put auto-save files in this directory, if set. -The idea is to use a local directory so that auto-saving is faster." +The idea is to use a local directory so that auto-saving is faster. +This setting has precedence over `auto-save-file-name-transforms'." :group 'tramp - :type '(choice (const nil) string)) + :type '(choice (const :tag "Use default" nil) + (directory :tag "Auto save directory name"))) (defcustom tramp-encoding-shell (if (memq system-type '(windows-nt)) @@ -300,8 +302,8 @@ are fit for gateways must have `tramp-default-port' at least. Notes: -When using `su' or `sudo' the phrase `open connection to a remote -host' sounds strange, but it is used nevertheless, for consistency. +When using `su' or `sudo' the phrase \"open connection to a remote +host\" sounds strange, but it is used nevertheless, for consistency. No connection is opened to a remote host, but `su' or `sudo' is started on the local host. You should specify a remote host `localhost' or the name of the local host. Another host name is @@ -1034,7 +1036,7 @@ The timeout does not include the time reading a password." This is necessary as self defense mechanism, in order to avoid yo-yo connection attempts when the remote host is unavailable. -A value of 0 or `nil' suppresses this check. This might be +A value of 0 or nil suppresses this check. This might be necessary, when several out-of-order copy operations are performed, or when several asynchronous processes will be started in a short time frame. In those cases it is recommended to @@ -1049,8 +1051,8 @@ A remote directory might have changed its contents. In order to make it visible during file name completion in the minibuffer, Tramp flushes its cache and rereads the directory contents when more than `tramp-completion-reread-directory-timeout' seconds -have been gone since last remote command execution. A value of `t' -would require an immediate reread during filename completion, `nil' +have been gone since last remote command execution. A value of t +would require an immediate reread during filename completion, nil means to use always cached values for the directory contents." :group 'tramp :type '(choice (const nil) (const t) integer)) @@ -1431,7 +1433,12 @@ ARGUMENTS to actually emit the message (if applicable)." (format ";; %sEmacs: %s Tramp: %s -*- mode: outline; -*-" (if (featurep 'sxemacs) "SX" (if (featurep 'xemacs) "X" "GNU ")) - emacs-version tramp-version))) + emacs-version tramp-version)) + (when (>= tramp-verbose 10) + (insert + (format + "\n;; Location: %s Git: %s" + (locate-library "tramp") (tramp-repository-get-version))))) (unless (bolp) (insert "\n")) ;; Timestamp. @@ -1523,6 +1530,12 @@ applicable)." (let ((tramp-verbose 0)) (setq vec-or-proc (tramp-get-connection-property vec-or-proc "vector" nil)))) + ;; Append connection buffer for error messages. + (when (= level 1) + (let ((tramp-verbose 0)) + (with-current-buffer (tramp-get-connection-buffer vec-or-proc) + (setq fmt-string (concat fmt-string "\n%s") + arguments (append arguments (list (buffer-string))))))) ;; Do it. (when (vectorp vec-or-proc) (apply 'tramp-debug-message @@ -3103,9 +3116,10 @@ User is always nil." (setq tramp-temp-buffer-file-name nil beg nil end nil)) ;; `insert-file-contents-literally' takes care to - ;; avoid calling jka-compr. By let-binding - ;; `inhibit-file-name-operation', we propagate that - ;; care to the `file-local-copy' operation. + ;; avoid calling jka-compr.el and epa.el. By + ;; let-binding `inhibit-file-name-operation', we + ;; propagate that care to the `file-local-copy' + ;; operation. (setq local-copy (let ((inhibit-file-name-operation (when (eq inhibit-file-name-operation @@ -3314,7 +3328,7 @@ User is always nil." (defun tramp-handle-unhandled-file-name-directory (_filename) "Like `unhandled-file-name-directory' for Tramp files." - ;; Starting with Emacs 23, we must simply return `nil'. But we must + ;; Starting with Emacs 23, we must simply return nil. But we must ;; keep backward compatibility, also with XEmacs. "~/" cannot be ;; returned, because there might be machines without a HOME ;; directory (like hydra). @@ -3737,7 +3751,7 @@ Example: (tramp-equal-remote \"/ssh::/etc\" \"/<your host name>:/home\") -would yield `t'. On the other hand, the following check results in nil: +would yield t. On the other hand, the following check results in nil: (tramp-equal-remote \"/sudo::/etc\" \"/su::/etc\")" (and (tramp-tramp-file-p file1) @@ -4005,35 +4019,31 @@ Return the local name of the temporary file." (defun tramp-handle-make-auto-save-file-name () "Like `make-auto-save-file-name' for Tramp files. -Returns a file name in `tramp-auto-save-directory' for autosaving this file." - (let ((tramp-auto-save-directory tramp-auto-save-directory) +Returns a file name in `tramp-auto-save-directory' for autosaving +this file, if that variable is non-nil." + ;; Create directory. + (unless (or (null tramp-auto-save-directory) + (file-exists-p tramp-auto-save-directory)) + (make-directory tramp-auto-save-directory t)) + + (let ((system-type 'not-windows) + (auto-save-file-name-transforms + (if (and (null tramp-auto-save-directory) + (boundp 'auto-save-file-name-transforms)) + (symbol-value 'auto-save-file-name-transforms))) (buffer-file-name - (tramp-subst-strs-in-string - '(("_" . "|") - ("/" . "_a") - (":" . "_b") - ("|" . "__") - ("[" . "_l") - ("]" . "_r")) - (buffer-file-name)))) - ;; File name must be unique. This is ensured with Emacs 22 (see - ;; UNIQUIFY element of `auto-save-file-name-transforms'); but for - ;; all other cases we must do it ourselves. - (when (boundp 'auto-save-file-name-transforms) - (mapc - (lambda (x) - (when (and (string-match (car x) buffer-file-name) - (not (car (cddr x)))) - (setq tramp-auto-save-directory - (or tramp-auto-save-directory - (tramp-compat-temporary-file-directory))))) - (symbol-value 'auto-save-file-name-transforms))) - ;; Create directory. - (when tramp-auto-save-directory - (setq buffer-file-name - (expand-file-name buffer-file-name tramp-auto-save-directory)) - (unless (file-exists-p tramp-auto-save-directory) - (make-directory tramp-auto-save-directory t))) + (if (null tramp-auto-save-directory) + buffer-file-name + (expand-file-name + (tramp-subst-strs-in-string + '(("_" . "|") + ("/" . "_a") + (":" . "_b") + ("|" . "__") + ("[" . "_l") + ("]" . "_r")) + (buffer-file-name)) + tramp-auto-save-directory)))) ;; Run plain `make-auto-save-file-name'. There might be an advice when ;; it is not a magic file name operation (since Emacs 22). ;; We must deactivate it temporarily. @@ -4042,8 +4052,8 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." ;; else (ad-deactivate 'make-auto-save-file-name) (prog1 - (tramp-run-real-handler 'make-auto-save-file-name nil) - (ad-activate 'make-auto-save-file-name))))) + (tramp-run-real-handler 'make-auto-save-file-name nil) + (ad-activate 'make-auto-save-file-name))))) (unless (tramp-exists-file-name-handler 'make-auto-save-file-name) (defadvice make-auto-save-file-name @@ -4135,6 +4145,38 @@ are written with verbosity of 6." (tramp-message v 6 "%d\n%s" result (error-message-string err)))) result)) +(defun tramp-call-process-region + (vec start end program &optional delete buffer display &rest args) + "Calls `call-process-region' on the local host. +It always returns a return code. The Lisp error raised when +PROGRAM is nil is trapped also, returning 1. Furthermore, traces +are written with verbosity of 6." + (let ((v (or vec + (vector tramp-current-method tramp-current-user + tramp-current-host nil nil))) + (buffer (if (eq buffer t) (current-buffer) buffer)) + result) + (tramp-message + v 6 "`%s %s' %s %s %s %s" + program (mapconcat 'identity args " ") start end delete buffer) + (condition-case err + (progn + (setq result + (apply + 'call-process-region + start end program delete buffer display args)) + ;; `result' could also be an error string. + (when (stringp result) + (signal 'file-error (list result))) + (with-current-buffer (if (bufferp buffer) buffer (current-buffer)) + (if (zerop result) + (tramp-message v 6 "%d" result) + (tramp-message v 6 "%d\n%s" result (buffer-string))))) + (error + (setq result 1) + (tramp-message v 6 "%d\n%s" result (error-message-string err)))) + result)) + ;;;###tramp-autoload (defun tramp-read-passwd (proc &optional prompt) "Read a password from user (compat function). diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 226ec9f194a..eb22b6080be 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -38,6 +38,20 @@ (defconst tramp-bug-report-address "tramp-devel@gnu.org" "Email address to send bug reports to.") +(defun tramp-repository-get-version () + "Try to return as a string the repository revision of the Tramp sources." + (unless (featurep 'xemacs) + (let ((dir + (funcall 'locate-dominating-file (locate-library "tramp") ".git"))) + (when dir + (with-temp-buffer + (let ((default-directory (file-name-as-directory dir))) + (and (zerop + (ignore-errors + (call-process "git" nil '(t nil) nil "rev-parse" "HEAD"))) + (not (zerop (buffer-size))) + (replace-regexp-in-string "\n" "" (buffer-string))))))))) + ;; Check for (X)Emacs version. (let ((x (if (or (>= emacs-major-version 22) (and (featurep 'xemacs) diff --git a/lisp/obsolete/iso-acc.el b/lisp/obsolete/iso-acc.el index eaf732ebbd5..499a9da1040 100644 --- a/lisp/obsolete/iso-acc.el +++ b/lisp/obsolete/iso-acc.el @@ -272,7 +272,7 @@ See the function `iso-accents-mode'." (defcustom iso-accents-enable '(?' ?` ?^ ?\" ?~ ?/) "List of accent keys that become prefixes in ISO Accents mode. -The default is (?' ?` ?^ ?\" ?~ ?/), which contains all the supported +The default is (?' ?\\=` ?^ ?\" ?~ ?/), which contains all the supported accent keys. If you set this variable to a list in which some of those characters are missing, the missing ones do not act as accents. @@ -346,7 +346,7 @@ the language you choose)." "Toggle ISO Accents mode, in which accents modify the following letter. This permits easy insertion of accented characters according to ISO-8859-1. When Iso-accents mode is enabled, accent character keys -\(`, ', \", ^, / and ~) do not self-insert; instead, they modify the following +\(\\=`, ', \", ^, / and ~) do not self-insert; instead, they modify the following letter key so that it inserts an ISO accented letter. You can customize ISO Accents mode to a particular language diff --git a/lisp/obsolete/mouse-sel.el b/lisp/obsolete/mouse-sel.el index fcadedf6262..865a4277dda 100644 --- a/lisp/obsolete/mouse-sel.el +++ b/lisp/obsolete/mouse-sel.el @@ -315,7 +315,7 @@ is `interprogram-cut-paste'.") (or (gui-selection-value) (bound-and-true-p x-last-selected-text-primary) gui--last-selected-text-primary) - (x-get-selection selection))) + (gui-get-selection selection))) "Function to call to get the selection. Called with one argument: diff --git a/lisp/obsolete/scribe.el b/lisp/obsolete/scribe.el index 122b1bfd67b..68b2208063b 100644 --- a/lisp/obsolete/scribe.el +++ b/lisp/obsolete/scribe.el @@ -50,7 +50,7 @@ :group 'scribe) (defcustom scribe-electric-quote nil - "Non-nil makes insert of double quote use `` or '' depending on context." + "Non-nil makes insert of double quote use \\=`\\=` or '' depending on context." :type 'boolean :group 'scribe) @@ -124,7 +124,7 @@ Interesting variables: Non-nil makes Scribe mode use a different style of paragraph separation. `scribe-electric-quote' - Non-nil makes insert of double quote use `` or '' depending on context. + Non-nil makes insert of double quote use \\=`\\=` or '' depending on context. `scribe-electric-parenthesis' Non-nil makes an open-parenthesis char (one of `([<{') @@ -265,8 +265,8 @@ to skip backward." (forward-char -1)) (defun scribe-insert-quote (count) - "Insert ``, '' or \" according to preceding character. -If `scribe-electric-quote' is non-nil, insert ``, '' or \" according + "Insert \\=`\\=`, '' or \" according to preceding character. +If `scribe-electric-quote' is non-nil, insert \\=`\\=`, '' or \" according to preceding character. With numeric arg N, always insert N \" characters. Else just insert \"." (interactive "P") diff --git a/lisp/obsolete/sregex.el b/lisp/obsolete/sregex.el index 49590726598..80b2c92be09 100644 --- a/lisp/obsolete/sregex.el +++ b/lisp/obsolete/sregex.el @@ -416,7 +416,7 @@ Here are the clauses allowed in an `sregex' or `sregexq' expression: given set. See below for how to construct a CHAR-CLAUSE. - the symbol `bot' - Stands for \"\\\\`\", matching the empty string at the beginning of + Stands for \"\\\\\\=`\", matching the empty string at the beginning of text (beginning of a string or of a buffer). - the symbol `eot' diff --git a/lisp/obsolete/tpu-edt.el b/lisp/obsolete/tpu-edt.el index c5959d193d7..981426581c2 100644 --- a/lisp/obsolete/tpu-edt.el +++ b/lisp/obsolete/tpu-edt.el @@ -648,7 +648,7 @@ GOLD is the ASCII 7-bit escape sequence <ESC>OP.") (make-variable-buffer-local 'tpu-mark-flag) (defun tpu-set-mode-line (for-tpu) - "Set ``minor-mode-alist'' for TPU-edt, or reset it to default Emacs." + "Set `minor-mode-alist' for TPU-edt, or reset it to default Emacs." (let ((entries '((tpu-newline-and-indent-p tpu-newline-and-indent-string) (tpu-rectangular-p tpu-rectangle-string) (tpu-direction-string tpu-direction-string) diff --git a/lisp/obsolete/tpu-mapper.el b/lisp/obsolete/tpu-mapper.el index 4c5ea13b3b7..3115038999f 100644 --- a/lisp/obsolete/tpu-mapper.el +++ b/lisp/obsolete/tpu-mapper.el @@ -81,7 +81,7 @@ suit your tastes (or to cope with those silly Sun and PC keypads). Finally, you will be prompted for the name of the file to store the key definitions. If you chose the default, TPU-edt will find it and load it automatically. If you specify a different file name, you will need to -set the variable ``tpu-xkeys-file'' before starting TPU-edt. Here's how +set the variable `tpu-xkeys-file' before starting TPU-edt. Here's how you might go about doing that in your init file. (setq tpu-xkeys-file (expand-file-name \"~/.my-emacs-x-keys\")) diff --git a/lisp/obsolete/xesam.el b/lisp/obsolete/xesam.el index 4ee8c6f1b0f..39dd6a241f2 100644 --- a/lisp/obsolete/xesam.el +++ b/lisp/obsolete/xesam.el @@ -378,7 +378,7 @@ If PROPERTY is not existing, retrieve it from ENGINE first." (defun xesam-search-engines () "Return Xesam search engines, stored in `xesam-search-engines'. The first search engine is the name owner of `xesam-service-search'. -If there is no registered search engine at all, the function returns `nil'." +If there is no registered search engine at all, the function returns nil." (let ((services (dbus-ignore-errors (dbus-list-queued-owners :session xesam-service-search))) diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el index fd144629838..f767a4eabe1 100644 --- a/lisp/org/ob-core.el +++ b/lisp/org/ob-core.el @@ -2583,7 +2583,7 @@ block but are passed literally to the \"example-block\"." (defun org-babel-read (cell &optional inhibit-lisp-eval) "Convert the string value of CELL to a number if appropriate. Otherwise if cell looks like lisp (meaning it starts with a -\"(\", \"'\", \"`\" or a \"[\") then read it as lisp, +\"(\", \"'\", \"\\=`\" or a \"[\") then read it as lisp, otherwise return it unmodified as a string. Optional argument NO-LISP-EVAL inhibits lisp evaluation for situations in which is it not appropriate." diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el index 7e09d6d78be..8dee01a5389 100644 --- a/lisp/org/ob-ruby.el +++ b/lisp/org/ob-ruby.el @@ -58,7 +58,7 @@ :type 'string) (defcustom org-babel-ruby-nil-to 'hline - "Replace 'nil' in ruby tables with this before returning." + "Replace nil in ruby tables with this before returning." :group 'org-babel :version "24.4" :package-version '(Org . "8.0") diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 8f7611fd1ff..3df9fb6d420 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -5712,7 +5712,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines', (let ((calendar-date-style 'european) (european-calendar-style t)) (diary-date day month year mark)))) -;; Define the` org-class' function +;; Define the `org-class' function (defun org-class (y1 m1 d1 y2 m2 d2 dayname &rest skip-weeks) "Entry applies if date is between dates on DAYNAME, but skips SKIP-WEEKS. DAYNAME is a number between 0 (Sunday) and 6 (Saturday). @@ -6642,7 +6642,7 @@ The modified list may contain inherited tags, and tags matched by LIST is the list of agenda items formatted by `org-agenda-list'. NDAYS is the span of the current agenda view. -TODAYP is `t' when the current agenda view is on today." +TODAYP is t when the current agenda view is on today." (catch 'exit (cond ((not org-agenda-use-time-grid) (throw 'exit list)) ((and todayp (member 'today (car org-agenda-time-grid)))) diff --git a/lisp/org/org-bbdb.el b/lisp/org/org-bbdb.el index a0711cc006b..c4893850199 100644 --- a/lisp/org/org-bbdb.el +++ b/lisp/org/org-bbdb.el @@ -37,7 +37,7 @@ ;; the diary using bbdb-anniv.el. ;; ;; Put the following in /somewhere/at/home/diary.org and make sure -;; that this file is in `org-agenda-files` +;; that this file is in `org-agenda-files'. ;; ;; %%(org-bbdb-anniversaries) ;; diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el index 7f1f7ed8af1..64e30152a5b 100644 --- a/lisp/org/org-capture.el +++ b/lisp/org/org-capture.el @@ -201,7 +201,7 @@ properties are: :clock-resume Start the interrupted clock when finishing the capture. Note that :clock-keep has precedence over :clock-resume. - When setting both to `t', the current clock will run and + When setting both to t, the current clock will run and the previous one will not be resumed. :unnarrowed Do not narrow the target buffer, simply show the diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index 41e799f9898..c0a45b3ad13 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1656,7 +1656,8 @@ Optional argument N tells to change by that many units." (save-excursion ; Do not replace this with `with-current-buffer'. (org-no-warnings (set-buffer (org-clocking-buffer))) (goto-char org-clock-marker) - (if (org-looking-back (concat "^[ \t]*" org-clock-string ".*")) + (if (org-looking-back (concat "^[ \t]*" org-clock-string ".*") + (line-beginning-position)) (progn (delete-region (1- (point-at-bol)) (point-at-eol)) (org-remove-empty-drawer-at "LOGBOOK" (point))) (message "Clock gone, cancel the timer anyway") diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el index 9c92903314a..d3c477e7f3f 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el @@ -241,7 +241,7 @@ ignored in this case." (or window (selected-window))) (defun org-number-sequence (from &optional to inc) - "Call `number-sequence or emulate it." + "Call `number-sequence' or emulate it." (if (fboundp 'number-sequence) (number-sequence from to inc) (if (or (not to) (= from to)) diff --git a/lisp/org/org-gnus.el b/lisp/org/org-gnus.el index 880994a8fa9..8b616f0a0ff 100644 --- a/lisp/org/org-gnus.el +++ b/lisp/org/org-gnus.el @@ -60,7 +60,7 @@ Normally, this translation is done by querying the IMAP server, which is usually very fast. Unfortunately, some (maybe badly configured) IMAP servers don't support this operation quickly. So if following a link to a Gnus article takes ages, try setting -this variable to `t'." +this variable to t." :group 'org-link-store :version "24.1" :type 'boolean) diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el index c8db77bc689..73f24ce7bd8 100644 --- a/lisp/org/org-list.el +++ b/lisp/org/org-list.el @@ -431,7 +431,7 @@ group 4: description tag") (context (org-list-context)) (lim-up (car context)) (drawers-re (concat "^[ \t]*:\\(" - (mapconcat 'regexp-quote org-drawers "\\|") + (mapconcat #'regexp-quote org-drawers "\\|") "\\):[ \t]*$")) (inlinetask-re (and (featurep 'org-inlinetask) (org-inlinetask-outline-regexp))) @@ -550,7 +550,7 @@ Contexts `block' and `invalid' refer to `org-list-forbidden-blocks'." ;; Can't use org-drawers-regexp as this function might ;; be called in buffers not in Org mode. (beg-re (concat "^[ \t]*:\\(" - (mapconcat 'regexp-quote org-drawers "\\|") + (mapconcat #'regexp-quote org-drawers "\\|") "\\):[ \t]*$"))) (when (save-excursion (and (not (looking-at beg-re)) @@ -636,12 +636,12 @@ Assume point is at an item." (text-min-ind 10000) (item-re (org-item-re)) (drawers-re (concat "^[ \t]*:\\(" - (mapconcat 'regexp-quote org-drawers "\\|") + (mapconcat #'regexp-quote org-drawers "\\|") "\\):[ \t]*$")) (inlinetask-re (and (featurep 'org-inlinetask) (org-inlinetask-outline-regexp))) (beg-cell (cons (point) (org-get-indentation))) - ind itm-lst itm-lst-2 end-lst end-lst-2 struct + itm-lst itm-lst-2 end-lst end-lst-2 struct (assoc-at-point (function ;; Return association at point. @@ -926,13 +926,13 @@ Value returned is the position of the first child of ITEM." (< ind (org-list-get-ind child-maybe struct))) child-maybe))) -(defun org-list-get-next-item (item struct prevs) +(defun org-list-get-next-item (item _struct prevs) "Return next item in same sub-list as ITEM, or nil. STRUCT is the list structure. PREVS is the alist of previous items, as returned by `org-list-prevs-alist'." (car (rassq item prevs))) -(defun org-list-get-prev-item (item struct prevs) +(defun org-list-get-prev-item (item _struct prevs) "Return previous item in same sub-list as ITEM, or nil. STRUCT is the list structure. PREVS is the alist of previous items, as returned by `org-list-prevs-alist'." @@ -964,7 +964,7 @@ items, as returned by `org-list-prevs-alist'." (push next-item after-item)) (append before-item (list item) (nreverse after-item)))) -(defun org-list-get-children (item struct parents) +(defun org-list-get-children (item _struct parents) "List all children of ITEM, or nil. STRUCT is the list structure. PARENTS is the alist of parents, as returned by `org-list-parents-alist'." @@ -982,7 +982,7 @@ STRUCT is the list structure." (defun org-list-get-bottom-point (struct) "Return point at bottom of list. STRUCT is the list structure." - (apply 'max + (apply #'max (mapcar (lambda (e) (org-list-get-item-end (car e) struct)) struct))) (defun org-list-get-list-begin (item struct prevs) @@ -1630,8 +1630,7 @@ as returned by `org-list-prevs-alist'." ;; Pretend that bullets are uppercase and check if alphabet ;; is sufficient, taking counters into account. (while item - (let ((bul (org-list-get-bullet item struct)) - (count (org-list-get-counter item struct))) + (let ((count (org-list-get-counter item struct))) ;; Virtually determine current bullet (if (and count (string-match "[a-zA-Z]" count)) ;; Counters are not case-sensitive. @@ -1728,7 +1727,7 @@ This function modifies STRUCT." (replace-match "1" nil nil bullet)) ;; Not an ordered list: keep bullet. (t bullet))))))))) - (mapc fix-bul (mapcar 'car struct)))) + (mapc fix-bul (mapcar #'car struct)))) (defun org-list-struct-fix-ind (struct parents &optional bullet-size) "Verify and correct indentation in STRUCT. @@ -1756,7 +1755,7 @@ This function modifies STRUCT." org-list-indent-offset)) ;; If no parent, indent like top-point. (org-list-set-ind item struct top-ind)))))) - (mapc new-ind (mapcar 'car (cdr struct))))) + (mapc new-ind (mapcar #'car (cdr struct))))) (defun org-list-struct-fix-box (struct parents prevs &optional ordered) "Verify and correct checkboxes in STRUCT. @@ -1771,7 +1770,7 @@ break this rule, the function will return the blocking item. In all others cases, the return value will be nil. This function modifies STRUCT." - (let ((all-items (mapcar 'car struct)) + (let ((all-items (mapcar #'car struct)) (set-parent-box (function (lambda (item) @@ -1942,8 +1941,8 @@ Initial position of cursor is restored after the changes." ;; same amount of indentation. Each slice follow the pattern ;; (END BEG DELTA MAX-IND-OR-NIL). Slices are returned in ;; reverse order. - (setq all-ends (sort (append (mapcar 'car itm-shift) - (org-uniquify (mapcar 'car end-list))) + (setq all-ends (sort (append (mapcar #'car itm-shift) + (org-uniquify (mapcar #'car end-list))) '<)) (while (cdr all-ends) (let* ((up (pop all-ends)) @@ -2327,7 +2326,7 @@ in subtree, ignoring drawers." lim-up lim-down (drawer-re (concat "^[ \t]*:\\(" - (mapconcat 'regexp-quote org-drawers "\\|") + (mapconcat #'regexp-quote org-drawers "\\|") "\\):[ \t]*$")) (keyword-re (concat "^[ \t]*\\<\\(" org-scheduled-string "\\|" org-deadline-string @@ -2335,7 +2334,7 @@ in subtree, ignoring drawers." "\\|" org-clock-string "\\)" " *[[<]\\([^]>]+\\)[]>]")) (orderedp (org-entry-get nil "ORDERED")) - (bounds + (_bounds ;; In a region, start at first item in region. (cond ((org-region-active-p) @@ -2391,7 +2390,7 @@ in subtree, ignoring drawers." (bottom (copy-marker (org-list-get-bottom-point struct))) (items-to-toggle (org-remove-if (lambda (e) (or (< e lim-up) (> e lim-down))) - (mapcar 'car struct)))) + (mapcar #'car struct)))) (mapc (lambda (e) (org-list-set-checkbox e struct ;; If there is no box at item, leave as-is @@ -2473,7 +2472,7 @@ With optional prefix argument ALL, do this for the whole buffer." (items (cond ((and recursivep item) (org-list-get-subtree item s)) - (recursivep (mapcar 'car s)) + (recursivep (mapcar #'car s)) (item (org-list-get-children item s par)) (t (org-list-get-all-items (org-list-get-top-point s) s pre)))) @@ -2486,7 +2485,7 @@ With optional prefix argument ALL, do this for the whole buffer." structs) (cons c-on c-all))))) (backup-end 1) - cookies-list structs-bak box-num) + cookies-list structs-bak) (goto-char (car bounds)) ;; 1. Build an alist for each cookie found within BOUNDS. The ;; key will be position at beginning of cookie and values @@ -2749,6 +2748,7 @@ If a region is active, all items inside will be moved." (t (error "Not at an item"))))) (defvar org-tab-ind-state) +(defvar org-adapt-indentation) (defun org-cycle-item-indentation () "Cycle levels of indentation of an empty item. The first run indents the item, if applicable. Subsequent runs @@ -2940,13 +2940,13 @@ will be parsed as: \(3 \"last item\"\)\) Point is left at list end." + (defvar parse-item) ;FIXME: Or use `cl-labels' or `letrec'. (let* ((struct (org-list-struct)) (prevs (org-list-prevs-alist struct)) (parents (org-list-parents-alist struct)) (top (org-list-get-top-point struct)) (bottom (org-list-get-bottom-point struct)) out - parse-item ; for byte-compiler (get-text (function ;; Return text between BEG and END, trimmed, with @@ -3072,7 +3072,7 @@ for this list." (re-search-forward (org-item-beginning-re) bottom-point t) (match-beginning 0))) (plain-list (buffer-substring-no-properties top-point bottom-point)) - beg txt) + beg) (unless (fboundp transform) (error "No such transformation function %s" transform)) (let ((txt (funcall transform plain-list))) @@ -3082,7 +3082,8 @@ for this list." (unless (re-search-forward (concat "BEGIN RECEIVE ORGLST +" name - "\\([ \t]\\|$\\)") nil t) + "\\([ \t]\\|$\\)") + nil t) (error "Don't know where to insert translated list")) (goto-char (match-beginning 0)) (beginning-of-line 2) @@ -3230,7 +3231,7 @@ items." items (or (eval isep) "")))))))) (concat (funcall export-sublist list 0) "\n"))) -(defun org-list-to-latex (list &optional params) +(defun org-list-to-latex (list &optional _params) "Convert LIST into a LaTeX list. LIST is as string representing the list to transform, as Org syntax. Return converted list as a string." @@ -3244,7 +3245,7 @@ syntax. Return converted list as a string." (require 'ox-html) (org-export-string-as list 'html t)) -(defun org-list-to-texinfo (list &optional params) +(defun org-list-to-texinfo (list &optional _params) "Convert LIST into a Texinfo list. LIST is as string representing the list to transform, as Org syntax. Return converted list as a string." @@ -3255,14 +3256,15 @@ syntax. Return converted list as a string." "Convert LIST into an Org subtree. LIST is as returned by `org-list-parse-list'. PARAMS is a property list with overruling parameters for `org-list-to-generic'." + (defvar get-stars) (defvar org--blankp) (let* ((rule (cdr (assq 'heading org-blank-before-new-entry))) (level (org-reduced-level (or (org-current-level) 0))) - (blankp (or (eq rule t) + (org--blankp (or (eq rule t) (and (eq rule 'auto) (save-excursion (outline-previous-heading) (org-previous-line-empty-p))))) - (get-stars + (get-stars ;FIXME: Can't rename without renaming it in org.el as well! (function ;; Return the string for the heading, depending on depth D ;; of current sub-list. @@ -3277,12 +3279,12 @@ with overruling parameters for `org-list-to-generic'." list (org-combine-plists '(:splice t - :dtstart " " :dtend " " - :istart (funcall get-stars depth) - :icount (funcall get-stars depth) - :isep (if blankp "\n\n" "\n") - :csep (if blankp "\n\n" "\n") - :cbon "DONE" :cboff "TODO" :cbtrans "TODO") + :dtstart " " :dtend " " + :istart (funcall get-stars depth) + :icount (funcall get-stars depth) + :isep (if org--blankp "\n\n" "\n") + :csep (if org--blankp "\n\n" "\n") + :cbon "DONE" :cboff "TODO" :cbtrans "TODO") params)))) (provide 'org-list) diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index 23c30178080..ea8e7b532aa 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el @@ -33,7 +33,7 @@ (eval-and-compile (unless (fboundp 'declare-function) - (defmacro declare-function (fn file &optional arglist fileonly) + (defmacro declare-function (fn file &optional _arglist _fileonly) `(autoload ',fn ,file))) (if (>= emacs-major-version 23) @@ -48,13 +48,14 @@ (declare-function org-string-match-p "org-compat" (&rest args)) (defmacro org-with-gensyms (symbols &rest body) + (declare (debug (sexp body)) (indent 1)) `(let ,(mapcar (lambda (s) - `(,s (make-symbol (concat "--" (symbol-name ',s))))) symbols) + `(,s (make-symbol (concat "--" (symbol-name ',s))))) + symbols) ,@body)) -(def-edebug-spec org-with-gensyms (sexp body)) -(put 'org-with-gensyms 'lisp-indent-function 1) (defmacro org-called-interactively-p (&optional kind) + (declare (debug (&optional ("quote" symbolp)))) ;Why not just t? (if (featurep 'xemacs) `(interactive-p) (if (or (> emacs-major-version 23) @@ -63,12 +64,11 @@ ;; defined with no argument in <=23.1 `(with-no-warnings (called-interactively-p ,kind)) `(interactive-p)))) -(def-edebug-spec org-called-interactively-p (&optional ("quote" symbolp))) (defmacro org-bound-and-true-p (var) "Return the value of symbol VAR if it is bound, else nil." + (declare (debug (symbolp))) `(and (boundp (quote ,var)) ,var)) -(def-edebug-spec org-bound-and-true-p (symbolp)) (defun org-string-nw-p (s) "Is S a string with a non-white character?" @@ -97,10 +97,11 @@ Otherwise return nil." (defmacro org-re (s) "Replace posix classes in regular expression." + (declare (debug (form))) (if (featurep 'xemacs) `(org-substitute-posix-classes ,s) s)) -(def-edebug-spec org-re (form)) (defmacro org-preserve-lc (&rest body) + (declare (debug (body))) (org-with-gensyms (line col) `(let ((,line (org-current-line)) (,col (current-column))) @@ -108,12 +109,12 @@ Otherwise return nil." (progn ,@body) (org-goto-line ,line) (org-move-to-column ,col))))) -(def-edebug-spec org-preserve-lc (body)) ;; Use `org-with-silent-modifications' to ignore cosmetic changes and ;; `org-unmodified' to ignore real text modifications (defmacro org-unmodified (&rest body) "Run BODY while preserving the buffer's `buffer-modified-p' state." + (declare (debug (body))) (org-with-gensyms (was-modified) `(let ((,was-modified (buffer-modified-p))) (unwind-protect @@ -121,9 +122,9 @@ Otherwise return nil." (inhibit-modification-hooks t)) ,@body) (set-buffer-modified-p ,was-modified))))) -(def-edebug-spec org-unmodified (body)) (defmacro org-without-partial-completion (&rest body) + (declare (debug (body))) `(if (and (boundp 'partial-completion-mode) partial-completion-mode (fboundp 'partial-completion-mode)) @@ -133,7 +134,6 @@ Otherwise return nil." ,@body) (partial-completion-mode 1)) ,@body)) -(def-edebug-spec org-without-partial-completion (body)) ;; FIXME: Slated for removal. Current Org mode does not support Emacs < 22 (defmacro org-maybe-intangible (props) @@ -150,6 +150,7 @@ We use a macro so that the test can happen at compilation time." (defmacro org-with-point-at (pom &rest body) "Move to buffer and point of point-or-marker POM for the duration of BODY." + (declare (debug (form body)) (indent 1)) (org-with-gensyms (mpom) `(let ((,mpom ,pom)) (save-excursion @@ -157,15 +158,14 @@ We use a macro so that the test can happen at compilation time." (org-with-wide-buffer (goto-char (or ,mpom (point))) ,@body))))) -(def-edebug-spec org-with-point-at (form body)) -(put 'org-with-point-at 'lisp-indent-function 1) (defmacro org-no-warnings (&rest body) + (declare (debug (body))) (cons (if (fboundp 'with-no-warnings) 'with-no-warnings 'progn) body)) -(def-edebug-spec org-no-warnings (body)) (defmacro org-with-remote-undo (buffer &rest body) "Execute BODY while recording undo information in two buffers." + (declare (debug (form body)) (indent 1)) (org-with-gensyms (cline cmd buf1 buf2 undo1 undo2 c1 c2) `(let ((,cline (org-current-line)) (,cmd this-command) @@ -187,13 +187,11 @@ We use a macro so that the test can happen at compilation time." ;; remember which buffer to undo (push (list ,cmd ,cline ,buf1 ,c1 ,buf2 ,c2) org-agenda-undo-list)))))) -(def-edebug-spec org-with-remote-undo (form body)) -(put 'org-with-remote-undo 'lisp-indent-function 1) (defmacro org-no-read-only (&rest body) "Inhibit read-only for BODY." + (declare (debug (body))) `(let ((inhibit-read-only t)) ,@body)) -(def-edebug-spec org-no-read-only (body)) (defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t rear-nonsticky t mouse-map t fontified t @@ -313,7 +311,7 @@ This means that the buffer may change while running BODY, but it also means that the buffer should stay alive during the operation, because otherwise all these markers will point nowhere." - (declare (indent 1)) + (declare (debug (form body)) (indent 1)) (org-with-gensyms (data rtn) `(let ((,data (org-outline-overlay-data ,use-markers)) ,rtn) @@ -327,24 +325,28 @@ point nowhere." (and (markerp (cdr c)) (move-marker (cdr c) nil))) ,data))) ,rtn))) -(def-edebug-spec org-save-outline-visibility (form body)) (defmacro org-with-wide-buffer (&rest body) "Execute body while temporarily widening the buffer." + (declare (debug (body))) `(save-excursion (save-restriction (widen) ,@body))) -(def-edebug-spec org-with-wide-buffer (body)) (defmacro org-with-limited-levels (&rest body) "Execute BODY with limited number of outline levels." - `(let* ((org-called-with-limited-levels t) - (org-outline-regexp (org-get-limited-outline-regexp)) - (outline-regexp org-outline-regexp) - (org-outline-regexp-bol (concat "^" org-outline-regexp))) - ,@body)) -(def-edebug-spec org-with-limited-levels (body)) + (declare (debug (body))) + `(progn + (defvar org-called-with-limited-levels) + (defvar org-outline-regexp) + (defvar outline-regexp) + (defvar org-outline-regexp-bol) + (let* ((org-called-with-limited-levels t) + (org-outline-regexp (org-get-limited-outline-regexp)) + (outline-regexp org-outline-regexp) + (org-outline-regexp-bol (concat "^" org-outline-regexp))) + ,@body))) (defvar org-outline-regexp) ; defined in org.el (defvar org-odd-levels-only) ; defined in org.el @@ -365,9 +367,8 @@ The number of levels is controlled by `org-inlinetask-min-level'" (format-time-string string (seconds-to-time seconds)))) (defmacro org-eval-in-environment (environment form) + (declare (debug (form form)) (indent 1)) `(eval (list 'let ,environment ',form))) -(def-edebug-spec org-eval-in-environment (form form)) -(put 'org-eval-in-environment 'lisp-indent-function 1) (defun org-make-parameter-alist (flat) "Return alist based on FLAT. diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el index 160099ff055..9b218147b65 100644 --- a/lisp/org/org-mouse.el +++ b/lisp/org/org-mouse.el @@ -191,7 +191,7 @@ Changing this variable requires a restart of Emacs to get activated." (interactive) (end-of-line) (skip-chars-backward "\t ") - (when (org-looking-back ":[A-Za-z]+:") + (when (org-looking-back ":[A-Za-z]+:" (line-beginning-position)) (skip-chars-backward ":A-Za-z") (skip-chars-backward "\t "))) @@ -645,7 +645,7 @@ This means, between the beginning of line and the point." 'org-mode-restart)))) ((or (eolp) (and (looking-at "\\( \\|\t\\)\\(+:[0-9a-zA-Z_:]+\\)?\\( \\|\t\\)+$") - (org-looking-back " \\|\t"))) + (org-looking-back " \\|\t" (- (point) 2)))) (org-mouse-popup-global-menu)) ((funcall get-context :checkbox) (popup-menu diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el index eeefc8da528..d0750f7d639 100644 --- a/lisp/org/org-protocol.el +++ b/lisp/org/org-protocol.el @@ -561,7 +561,7 @@ as filename." (let ((fname (expand-file-name (car var)))) (setq fname (org-protocol-check-filename-for-protocol fname (member var flist) client)) - (if (eq fname t) ;; greedy? We need the `t' return value. + (if (eq fname t) ;; greedy? We need the t return value. (progn (ad-set-arg 0 nil) (throw 'greedy t)) diff --git a/lisp/org/org.el b/lisp/org/org.el index 3e032d46646..e9dae191b99 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -595,7 +595,7 @@ XEmacs user should have this variable set to nil, because (defcustom org-loop-over-headlines-in-active-region nil "Shall some commands act upon headlines in the active region? -When set to `t', some commands will be performed in all headlines +When set to t, some commands will be performed in all headlines within the active region. When set to `start-level', some commands will be performed in all @@ -1452,7 +1452,7 @@ changed by an edit command." (defcustom org-remove-highlights-with-change t "Non-nil means any change to the buffer will remove temporary highlights. Such highlights are created by `org-occur' and `org-clock-display'. -When nil, `C-c C-c needs to be used to get rid of the highlights. +When nil, `C-c C-c' needs to be used to get rid of the highlights. The highlights created by `org-preview-latex-fragment' always need `C-c C-c' to be removed." :group 'org-sparse-trees @@ -1575,7 +1575,7 @@ See the manual for examples." "Non-nil means Org will display descriptive links. E.g. [[http://orgmode.org][Org website]] will be displayed as \"Org Website\", hiding the link itself and just displaying its -description. When set to `nil', Org will display the full links +description. When set to nil, Org will display the full links literally. You can interactively set the value of this variable by calling @@ -7679,7 +7679,7 @@ command." (re-search-forward org-outline-regexp-bol) (beginning-of-line 0)) (skip-chars-backward " \r\n") - (and (not (looking-back "^\*+")) + (and (not (looking-back "^\*+" (line-beginning-position))) (looking-at "[ \t]+") (replace-match "")) (unless (eobp) (forward-char 1)) (when (looking-at "^\\*") @@ -8658,7 +8658,8 @@ links." (when (equal (marker-buffer org-clock-marker) (current-buffer)) (save-excursion (goto-char org-clock-marker) - (looking-back "^.*") (match-string-no-properties 0)))) + (buffer-substring-no-properties (line-beginning-position) + (point))))) start beg end stars re re2 txt what tmp) ;; Find beginning and end of region to sort @@ -11557,7 +11558,7 @@ go to the location where the last refiling operation has put the subtree. With a numeric prefix argument of `2', refile to the running clock. With a numeric prefix argument of `3', emulate `org-refile-keep' -being set to `t' and copy to the target location, don't move it. +being set to t and copy to the target location, don't move it. Beware that keeping refiled entries may result in duplicated ID properties. @@ -12076,7 +12077,7 @@ This is a list of abbreviation keys and values. The value gets inserted if you type `<' followed by the key and then press the completion key, usually `M-TAB'. %file will be replaced by a file name after prompting for the file using completion. The cursor will be placed at the position -of the `?` in the template. +of the `?' in the template. There are two templates for each key, the first uses the original Org syntax, the second uses Emacs Muse-like syntax tags. These Muse-like tags become the default when the /org-mtags.el/ module has been loaded. See also the @@ -15540,7 +15541,7 @@ and the new value.") (defun org-entry-put (pom property value) "Set PROPERTY to VALUE for entry at point-or-marker POM. -If the value is `nil', it is converted to the empty string. +If the value is nil, it is converted to the empty string. If it is not a string, an error is raised." (cond ((null value) (setq value "")) ((not (stringp value)) @@ -16954,12 +16955,12 @@ Allowed values for TYPE are: When TYPE is nil, fall back on returning a regexp that matches both scheduled and deadline timestamps." - (cond ((eq type 'all) "\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\(?: +[^]+0-9>
\n -]+\\)?\\(?: +[0-9]\\{1,2\\}:[0-9]\\{2\\}\\)?\\)") + (cond ((eq type 'all) "\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\}\\(?: +[^]+0-9>\r\n -]+\\)?\\(?: +[0-9]\\{1,2\\}:[0-9]\\{2\\}\\)?\\)") ((eq type 'active) org-ts-regexp) - ((eq type 'inactive) "\\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^
\n>]*?\\)\\]") + ((eq type 'inactive) "\\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^\r\n>]*?\\)\\]") ((eq type 'scheduled) (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>")) ((eq type 'deadline) (concat "\\<" org-deadline-string " *<\\([^>]+\\)>")) - ((eq type 'closed) (concat org-closed-string " \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^
\n>]*?\\)\\]")) + ((eq type 'closed) (concat org-closed-string " \\[\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} ?[^\r\n>]*?\\)\\]")) ((eq type 'scheduled-or-deadline) (concat "\\<\\(?:" org-deadline-string "\\|" org-scheduled-string "\\) *<\\([^>]+\\)>")))) @@ -17748,7 +17749,7 @@ If no number is found, the return value is 0." (defcustom org-image-actual-width t "Should we use the actual width of images when inlining them? -When set to `t', always use the image width. +When set to t, always use the image width. When set to a number, use imagemagick (when available) to set the image's width to this value. @@ -17775,7 +17776,7 @@ This requires Emacs >= 24.1, build with imagemagick support." (defcustom org-agenda-inhibit-startup nil "Inhibit startup when preparing agenda buffers. -When this variable is `t', the initialization of the Org agenda +When this variable is t, the initialization of the Org agenda buffers is inhibited: e.g. the visibility state is not set, the tables are not re-aligned, etc." :type 'boolean diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el index 65b6f7528dd..a3284d9b905 100644 --- a/lisp/org/ox-ascii.el +++ b/lisp/org/ox-ascii.el @@ -1965,7 +1965,7 @@ Return output file name." ;; Local variables: ;; generated-autoload-file: "org-loaddefs.el" -;; coding: utf-8-emacs +;; coding: utf-8 ;; End: ;;; ox-ascii.el ends here diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el index 36984b5cc37..144b58b9bc8 100644 --- a/lisp/org/ox-html.el +++ b/lisp/org/ox-html.el @@ -711,7 +711,7 @@ t Synonym for `mathjax'." When `org-mode' is exporting an `org-mode' file to HTML, links to non-html files are directly put into a href tag in HTML. However, links to other Org-mode files (recognized by the -extension `.org.) should become links to the corresponding html +extension `.org') should become links to the corresponding html file, assuming that the linked `org-mode' file will also be converted to HTML. When nil, the links still point to the plain `.org' file." diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index 6c74fb3eabd..f1ef90e169b 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el @@ -847,7 +847,7 @@ TABLE-CELL-STYLE-SELECTOR := `use-first-row-styles' | `use-banding-rows-styles' | `use-banding-columns-styles' | `use-first-row-styles' -ON-OR-OFF := `t' | `nil' +ON-OR-OFF := t | nil For example, with the following configuration @@ -3261,7 +3261,7 @@ contextual information." "Retrieve styles applicable to a table cell. R and C are (zero-based) row and column numbers of the table cell. STYLE-SPEC is an entry in `org-odt-table-styles' -applicable to the current table. It is `nil' if the table is not +applicable to the current table. It is nil if the table is not associated with any style attributes. Return a cons of (TABLE-CELL-STYLE-NAME . PARAGRAPH-STYLE-NAME). diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el index 0c81b620618..26f58ad662a 100644 --- a/lisp/org/ox-texinfo.el +++ b/lisp/org/ox-texinfo.el @@ -117,7 +117,7 @@ (defcustom org-texinfo-coding-system nil "Default document encoding for Texinfo output. -If `nil' it will default to `buffer-file-coding-system'." +If nil it will default to `buffer-file-coding-system'." :group 'org-export-texinfo :type 'coding-system) diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index 458e42028f0..6b6369587a4 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -164,27 +164,28 @@ operation character applies, as displayed by 'cvs -n update'." (with-temp-buffer (and dir (cd dir)) (call-process pcmpl-cvs-binary nil t nil - "-q" "-n" "-f" "update"); "-l") + "-q" "-n" "-f" "update") ; "-l") (goto-char (point-min)) (while (re-search-forward "^\\(.\\) \\(.+\\)$" nil t) (if (memq (string-to-char (match-string 1)) opers) (setq entries (cons (match-string 2) entries))))) - (with-temp-buffer - (insert-file-contents (concat dir "CVS/Entries")) - (goto-char (point-min)) - (while (not (eobp)) - ;; Normal file: /NAME -> "" "NAME" - ;; Directory : D/NAME -> "D" "NAME" - (let* ((fields (split-string (buffer-substring - (line-beginning-position) - (line-end-position)) - "/")) - (text (nth 1 fields))) - (when text - (if (string= (nth 0 fields) "D") - (setq text (file-name-as-directory text))) - (setq entries (cons text entries)))) - (forward-line)))) + (when (file-exists-p (expand-file-name "CVS/Entries" dir)) + (with-temp-buffer + (insert-file-contents (expand-file-name "CVS/Entries" dir)) + (goto-char (point-min)) + (while (not (eobp)) + ;; Normal file: /NAME -> "" "NAME" + ;; Directory : D/NAME -> "D" "NAME" + (let* ((fields (split-string (buffer-substring + (line-beginning-position) + (line-end-position)) + "/")) + (text (nth 1 fields))) + (when text + (if (string= (nth 0 fields) "D") + (setq text (file-name-as-directory text))) + (setq entries (cons text entries)))) + (forward-line))))) (setq pcomplete-stub nondir) (pcomplete-uniqify-list entries))) diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el index 2f4536c0820..877e5dbea88 100644 --- a/lisp/play/dunnet.el +++ b/lisp/play/dunnet.el @@ -3099,7 +3099,7 @@ File not found"))) (defun dun-dos-boot-msg () (sleep-for 3) (dun-mprinc "Current time is ") - (dun-mprincl (substring (current-time-string) 12 20)) + (dun-mprincl (format-time-string "%H:%M:%S")) (dun-mprinc "Enter new time: ") (dun-read-line) (if (not dun-batch-mode) diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el index ef55015a999..2c68c40d893 100644 --- a/lisp/play/gametree.el +++ b/lisp/play/gametree.el @@ -248,8 +248,8 @@ This value is simply the outline heading level of the current line." ;;;; outline layout (defsubst gametree-show-children-and-entry () - (show-children) - (show-entry)) + (outline-show-children) + (outline-show-entry)) (defun gametree-entry-shown-p () (save-excursion @@ -307,7 +307,7 @@ This value is simply the outline heading level of the current line." (if (not first-time) (outline-next-visible-heading 1)) (setq first-time nil) - (hide-subtree) + (outline-hide-subtree) (if (nth 0 layout) (funcall (nth 0 layout))) (if (not (and (nth 1 layout) (listp (nth 1 layout)))) @@ -393,7 +393,7 @@ depth AT-DEPTH or smaller is found." (outline-up-heading 1))) (beginning-of-line 1) (let ((parent-depth (gametree-current-branch-depth))) - (show-entry) + (outline-show-entry) (condition-case nil (outline-next-visible-heading 1) (error @@ -601,11 +601,11 @@ shogi, etc.) players, it is a slightly modified version of Outline mode. (defun gametree-mouse-show-subtree (event) (interactive "e") (mouse-set-point event) - (show-subtree)) + (outline-show-subtree)) (defun gametree-mouse-hide-subtree (event) (interactive "e") (mouse-set-point event) - (hide-subtree)) + (outline-hide-subtree)) (define-key gametree-mode-map [M-down-mouse-2 M-mouse-2] 'gametree-mouse-break-line-here) (define-key gametree-mode-map [S-down-mouse-1 S-mouse-1] diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el index 32ea6630717..62a8fe4bb0b 100644 --- a/lisp/play/handwrite.el +++ b/lisp/play/handwrite.el @@ -279,7 +279,7 @@ Variables: `handwrite-linespace' (default 12) (handwrite-set-pagenumber-on))) (defun handwrite-10pt () - "Specify 10-point output for `handwrite. + "Specify 10-point output for `handwrite'. This sets `handwrite-fontsize' to 10 and finds correct values for `handwrite-linespace' and `handwrite-numlines'." (interactive) @@ -290,7 +290,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." (defun handwrite-11pt () - "Specify 11-point output for `handwrite. + "Specify 11-point output for `handwrite'. This sets `handwrite-fontsize' to 11 and finds correct values for `handwrite-linespace' and `handwrite-numlines'." (interactive) @@ -300,7 +300,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." (message "Handwrite output size set to 11 points")) (defun handwrite-12pt () - "Specify 12-point output for `handwrite. + "Specify 12-point output for `handwrite'. This sets `handwrite-fontsize' to 12 and finds correct values for `handwrite-linespace' and `handwrite-numlines'." (interactive) @@ -310,7 +310,7 @@ values for `handwrite-linespace' and `handwrite-numlines'." (message "Handwrite output size set to 12 points")) (defun handwrite-13pt () - "Specify 13-point output for `handwrite. + "Specify 13-point output for `handwrite'. This sets `handwrite-fontsize' to 13 and finds correct values for `handwrite-linespace' and `handwrite-numlines'." (interactive) diff --git a/lisp/progmodes/ada-mode.el b/lisp/progmodes/ada-mode.el index 8afb92f2c90..c1bc79c599c 100644 --- a/lisp/progmodes/ada-mode.el +++ b/lisp/progmodes/ada-mode.el @@ -1013,7 +1013,7 @@ If PARSE-RESULT is non-nil, use it instead of calling `parse-partial-sexp'." (defsubst ada-in-numeric-literal-p () "Return t if point is after a prefix of a numeric literal." - (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)")) + (looking-back "\\([0-9]+#[0-9a-fA-F_]+\\)" (line-beginning-position))) ;;------------------------------------------------------------------ ;; Contextual menus diff --git a/lisp/progmodes/ada-xref.el b/lisp/progmodes/ada-xref.el index 6b611e6f99b..771dc2a3da1 100644 --- a/lisp/progmodes/ada-xref.el +++ b/lisp/progmodes/ada-xref.el @@ -954,7 +954,7 @@ Return new value of PROJECT." (append (mapcar 'directory-file-name compilation-search-path) ada-search-directories)) - ;; return 't', for decent display in message buffer when called interactively + ;; return t, for decent display in message buffer when called interactively t) (defun ada-find-references (&optional pos arg local-only) diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index 1ef80c801ee..ad0248561a8 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -61,6 +61,7 @@ (cc-bytecomp-defun c-backward-token-1) (cc-bytecomp-defun c-beginning-of-statement-1) (cc-bytecomp-defun c-backward-sws) +(cc-bytecomp-defun c-forward-sws) (defvar awk-mode-syntax-table (let ((st (make-syntax-table))) diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index 68075f356ab..94dc34bb20e 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -1317,6 +1317,9 @@ keyword on the line, the keyword is not inserted inside a literal, and (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t))) +(declare-function c-forward-subword "ext:cc-subword" (&optional arg)) +(declare-function c-backward-subword "ext:cc-subword" (&optional arg)) + ;; "nomenclature" functions + c-scope-operator. (defun c-forward-into-nomenclature (&optional arg) "Compatibility alias for `c-forward-subword'." diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index d0beab1d485..fd4bfb3b921 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -1983,7 +1983,7 @@ system." (defvar c-lang-const-expansion nil) -;; Ugly hack to pull in the definition of `cc-bytecomp-compiling-or-loading` +;; Ugly hack to pull in the definition of `cc-bytecomp-compiling-or-loading' ;; from cc-bytecomp to make it available at loadtime. This is the same ;; mechanism used in cc-mode.el for `c-populate-syntax-table'. (defalias 'cc-bytecomp-compiling-or-loading @@ -2017,10 +2017,10 @@ The second argument can optionally be a docstring. The rest of the arguments are one or more repetitions of LANG VAL where LANG specifies the language(s) that VAL applies to. LANG is the name of the language, i.e. the mode name without the \"-mode\" suffix, or a list -of such language names, or `t' for all languages. VAL is a form to +of such language names, or t for all languages. VAL is a form to evaluate to get the value. -If LANG isn't `t' or one of the core languages in CC Mode, it must +If LANG isn't t or one of the core languages in CC Mode, it must have been declared with `c-add-language'. Neither NAME, LANG nor VAL are evaluated directly - they should not be @@ -2030,7 +2030,7 @@ VAL to evaluate parts of it directly. When VAL is evaluated for some language, that language is temporarily made current so that `c-lang-const' without an explicit language can be used inside VAL to refer to the value of a language constant in the -same language. That is particularly useful if LANG is `t'. +same language. That is particularly useful if LANG is t. VAL is not evaluated right away but rather when the value is requested with `c-lang-const'. Thus it's possible to use `c-lang-const' inside @@ -2365,7 +2365,7 @@ fallback definition for all modes, to break the cycle).") (defun c-find-assignment-for-mode (source-pos mode match-any-lang _name) ;; Find the first assignment entry that applies to MODE at or after - ;; SOURCE-POS. If MATCH-ANY-LANG is non-nil, entries with `t' as + ;; SOURCE-POS. If MATCH-ANY-LANG is non-nil, entries with t as ;; the language list are considered to match, otherwise they don't. ;; On return SOURCE-POS is updated to point to the next assignment ;; after the returned one. If no assignment is found, diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 823d795b6de..06b03a24bd6 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -7972,7 +7972,7 @@ comment at the start of cc-engine.el for more info." ;; This should be called with point inside an argument list. ;; ;; Only one level of enclosing parentheses is considered, so for - ;; instance `nil' is returned when in a function call within an asm + ;; instance nil is returned when in a function call within an asm ;; operand. ;; ;; This function might do hidden buffer changes. diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 44172b05a56..ad564f7c3df 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1772,8 +1772,8 @@ on level 2 only and so aren't combined with `c-complex-decl-matchers'." ;; "\\|" ;; (c-lang-const c-symbol-key) ;; "\\)") -;; `((c-font-lock-declarators limit t nil) ; That `nil' says use `font-lock-variable-name-face'; -;; ; `t' would mean `font-lock-function-name-face'. +;; `((c-font-lock-declarators limit t nil) ; That nil says use `font-lock-variable-name-face'; +;; ; t would mean `font-lock-function-name-face'. ;; (progn ;; (c-put-char-property (match-beginning 0) 'c-type ;; 'c-decl-id-start) diff --git a/lisp/progmodes/cc-guess.el b/lisp/progmodes/cc-guess.el index 20534737d8a..ba23a75ff22 100644 --- a/lisp/progmodes/cc-guess.el +++ b/lisp/progmodes/cc-guess.el @@ -91,7 +91,7 @@ The offset of a line included in the indent information returned by (defcustom c-guess-region-max 50000 "The maximum region size for examining indent information with `c-guess'. It takes a long time to examine indent information from a large region; -this option helps you limit that time. `nil' means no limit." +this option helps you limit that time. nil means no limit." :version "24.1" :type 'integer :group 'c) @@ -465,7 +465,7 @@ the absolute file name of the file if STYLE-NAME is nil." (defun c-guess-dump-guessed-style (&optional printer) "Show the guessed style. `pp' is used to print the style but if PRINTER is given, -PRINTER is used instead. If PRINTER is not `nil', it +PRINTER is used instead. If PRINTER is not nil, it is called with one argument, the guessed style." (interactive) (let ((style (c-guess-make-style c-guess-guessed-basic-offset diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index ee5a5a6503f..07f5ef44d11 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -2400,7 +2400,7 @@ This construct is \"<keyword> <expression> :\"." "false" "true") ; Defined in C99. c++ (append '("nullptr") - (c-lang-const c-constant-kwds)) + (c-lang-const c-constant-kwds c)) objc '("nil" "Nil" "YES" "NO" "NS_DURING" "NS_HANDLER" "NS_ENDHANDLER") idl '("TRUE" "FALSE") java '("true" "false" "null") ; technically "literals", not keywords diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 1f58ba1ee9b..83657023bed 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -511,6 +511,14 @@ that requires a literal mode spec at compile time." (set (make-local-variable 'comment-line-break-function) 'c-indent-new-comment-line) + ;; Prevent time-wasting activity on C-y. + (when (boundp 'yank-handled-properties) + (make-local-variable 'yank-handled-properties) + (let ((yank-cat-handler (assq 'category yank-handled-properties))) + (when yank-cat-handler + (setq yank-handled-properties (remq yank-cat-handler + yank-handled-properties))))) + ;; For the benefit of adaptive file, which otherwise mis-fills. (setq fill-paragraph-handle-comment nil) @@ -839,6 +847,18 @@ Note that the style variables are always made local to the buffer." (defvar c-old-EOM 0) (make-variable-buffer-local 'c-old-EOM) +(defun c-called-from-text-property-change-p () + ;; Is the primitive which invoked `before-change-functions' or + ;; `after-change-functions' one which merely changes text properties? This + ;; function must be called directly from a member of one of the above hooks. + ;; + ;; In the following call, frame 0 is `backtrace-frame', frame 1 is + ;; `c-called-from-text-property-change-p', frame 2 is + ;; `c-before/after-change', frame 3 is the primitive invoking the change + ;; hook. + (memq (cadr (backtrace-frame 3)) + '(put-text-property remove-list-of-text-properties))) + (defun c-extend-region-for-CPP (beg end) ;; Set c-old-BOM or c-old-EOM respectively to BEG, END, each extended to the ;; beginning/end of any preprocessor construct they may be in. @@ -1009,8 +1029,9 @@ Note that the style variables are always made local to the buffer." ;; it/them from the cache. Don't worry about being inside a string ;; or a comment - "wrongly" removing a symbol from `c-found-types' ;; isn't critical. - (unless c-just-done-before-change ; Guard against a spurious second - ; invocation of before-change-functions. + (unless (or (c-called-from-text-property-change-p) + c-just-done-before-change) ; guard against a spurious second + ; invocation of before-change-functions. (setq c-just-done-before-change t) (setq c-maybe-stale-found-type nil) (save-restriction @@ -1105,51 +1126,53 @@ Note that the style variables are always made local to the buffer." ;; This calls the language variable c-before-font-lock-functions, if non nil. ;; This typically sets `syntax-table' properties. - (setq c-just-done-before-change nil) - (c-save-buffer-state (case-fold-search open-paren-in-column-0-is-defun-start) - ;; When `combine-after-change-calls' is used we might get calls - ;; with regions outside the current narrowing. This has been - ;; observed in Emacs 20.7. - (save-restriction - (save-match-data ; c-recognize-<>-arglists changes match-data - (widen) - - (when (> end (point-max)) - ;; Some emacsen might return positions past the end. This has been - ;; observed in Emacs 20.7 when rereading a buffer changed on disk - ;; (haven't been able to minimize it, but Emacs 21.3 appears to - ;; work). - (setq end (point-max)) - (when (> beg end) - (setq beg end))) - - ;; C-y is capable of spuriously converting category properties - ;; c-</>-as-paren-syntax and c-cpp-delimiter into hard syntax-table - ;; properties. Remove these when it happens. - (when (eval-when-compile (memq 'category-properties c-emacs-features)) - (c-clear-char-property-with-value beg end 'syntax-table - c-<-as-paren-syntax) - (c-clear-char-property-with-value beg end 'syntax-table - c->-as-paren-syntax) - (c-clear-char-property-with-value beg end 'syntax-table nil)) - - (c-trim-found-types beg end old-len) ; maybe we don't need all of these. - (c-invalidate-sws-region-after beg end) - ;; (c-invalidate-state-cache beg) ; moved to `c-before-change'. - (c-invalidate-find-decl-cache beg) - - (when c-recognize-<>-arglists - (c-after-change-check-<>-operators beg end)) - - ;; (c-new-BEG c-new-END) will be the region to fontify. It may become - ;; larger than (beg end). - (setq c-new-BEG beg - c-new-END end) - (setq c-in-after-change-fontification t) - (save-excursion - (mapc (lambda (fn) - (funcall fn beg end old-len)) - c-before-font-lock-functions)))))) + ;; (c-new-BEG c-new-END) will be the region to fontify. It may become + ;; larger than (beg end). + (setq c-new-BEG beg c-new-END end) + + (unless (c-called-from-text-property-change-p) + (setq c-just-done-before-change nil) + (c-save-buffer-state (case-fold-search open-paren-in-column-0-is-defun-start) + ;; When `combine-after-change-calls' is used we might get calls + ;; with regions outside the current narrowing. This has been + ;; observed in Emacs 20.7. + (save-restriction + (save-match-data ; c-recognize-<>-arglists changes match-data + (widen) + + (when (> end (point-max)) + ;; Some emacsen might return positions past the end. This has been + ;; observed in Emacs 20.7 when rereading a buffer changed on disk + ;; (haven't been able to minimize it, but Emacs 21.3 appears to + ;; work). + (setq end (point-max)) + (when (> beg end) + (setq beg end))) + + ;; C-y is capable of spuriously converting category properties + ;; c-</>-as-paren-syntax and c-cpp-delimiter into hard syntax-table + ;; properties. Remove these when it happens. + (when (eval-when-compile (memq 'category-properties c-emacs-features)) + (c-save-buffer-state () + (c-clear-char-property-with-value beg end 'syntax-table + c-<-as-paren-syntax) + (c-clear-char-property-with-value beg end 'syntax-table + c->-as-paren-syntax) + (c-clear-char-property-with-value beg end 'syntax-table nil))) + + (c-trim-found-types beg end old-len) ; maybe we don't need all of these. + (c-invalidate-sws-region-after beg end) + ;; (c-invalidate-state-cache beg) ; moved to `c-before-change'. + (c-invalidate-find-decl-cache beg) + + (when c-recognize-<>-arglists + (c-after-change-check-<>-operators beg end)) + + (setq c-in-after-change-fontification t) + (save-excursion + (mapc (lambda (fn) + (funcall fn beg end old-len)) + c-before-font-lock-functions))))))) (defun c-fl-decl-start (pos) ;; If the beginning of the line containing POS is in the middle of a "local" @@ -1322,7 +1345,7 @@ This function is called from `c-common-init', once per mode initialization." (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t)) ;; Emacs 22 and later. -(defun c-extend-after-change-region (_beg _end _old-len) +(defun c-extend-after-change-region (beg end _old-len) "Extend the region to be fontified, if necessary." ;; Note: the parameter OLD-LEN is ignored here. This somewhat indirect ;; implementation exists because it is minimally different from the @@ -1336,10 +1359,11 @@ This function is called from `c-common-init', once per mode initialization." (when (eq font-lock-support-mode 'jit-lock-mode) (save-restriction (widen) - (if (< c-new-BEG beg) - (put-text-property c-new-BEG beg 'fontified nil)) - (if (> c-new-END end) - (put-text-property end c-new-END 'fontified nil)))) + (c-save-buffer-state () ; Protect the undo-list from put-text-property. + (if (< c-new-BEG beg) + (put-text-property c-new-BEG beg 'fontified nil)) + (if (> c-new-END end) + (put-text-property end c-new-END 'fontified nil))))) (cons c-new-BEG c-new-END)) ;; Emacs < 22 and XEmacs @@ -1799,7 +1823,7 @@ Key bindings: ;; bug reporting (defconst c-mode-help-address - "bug-cc-mode@gnu.org" + "submit@debbugs.gnu.org" "Address(es) for CC Mode bug reports.") (defun c-version () @@ -1816,6 +1840,13 @@ Key bindings: (defvar reporter-prompt-for-summary-p) (defvar reporter-dont-compact-list) +;; This could be "emacs,cc-mode" in the version included in Emacs. +(defconst c-mode-bug-package "cc-mode" + "The package to use in the bug submission.") + +;; reporter-submit-bug-report requires sendmail. +(declare-function mail-position-on-field "sendmail" (field &optional soft)) + (defun c-submit-bug-report () "Submit via mail a bug report on CC Mode." (interactive) @@ -1879,6 +1910,9 @@ Key bindings: vars) (lambda () (run-hooks 'c-prepare-bug-report-hook) + (save-excursion + (or (mail-position-on-field "X-Debbugs-Package") + (insert c-mode-bug-package))) (insert (format "Buffer Style: %s\nc-emacs-features: %s\n" style c-features))))))) diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el index 357625d10cf..19d0473c42d 100644 --- a/lisp/progmodes/cmacexp.el +++ b/lisp/progmodes/cmacexp.el @@ -364,8 +364,8 @@ Optional arg DISPLAY non-nil means show messages in the echo area." ;; Find and delete the mark of the start of the expansion. ;; Look for `# nn "file.c"' lines and delete them. (goto-char (point-min)) - (search-forward startmarker) - (delete-region 1 (point))) + (if (search-forward startmarker nil t) + (delete-region 1 (point)))) (while (re-search-forward (concat "^# [0-9]+ \"" (regexp-quote filename) "\"") nil t) diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 9d36e91cf8f..a58e393779a 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -216,7 +216,7 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) ;; due to matching filenames via \\(.*?\\). This might be faster. (maven ;; Maven is a popular free software build tool for Java. - "\\([^ \n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\] " 1 2 3) + "\\(\\[WARNING\\] *\\)?\\([^ \n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\] " 2 3 4 (1)) (jikes-line "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)" diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 2acfc104cf3..7d2f3fcb007 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -282,7 +282,7 @@ This is in addition to cperl-continued-statement-offset." (defcustom cperl-indent-wrt-brace t "*Non-nil means indent statements in if/etc block relative brace, not if/etc. -Versions 5.2 ... 5.20 behaved as if this were `nil'." +Versions 5.2 ... 5.20 behaved as if this were nil." :type 'boolean :group 'cperl-indentation-details) @@ -7631,7 +7631,7 @@ $8 Match of the 8th set of parentheses in the last match (auto-local). $9 Match of the 9th set of parentheses in the last match (auto-local). $& The string matched by the last pattern match (auto-local). $' The string after what was matched by the last match (auto-local). -$` The string before what was matched by the last match (auto-local). +$\\=` The string before what was matched by the last match (auto-local). $( The real gid of this process. $) The effective gid of this process. @@ -7647,7 +7647,7 @@ $; Subscript separator for multi-dim array emulation. Default \"\\034\". $< The real uid of this process. $= The page length of the current output channel. Default is 60 lines. $> The effective uid of this process. -$? The status returned by the last ``, pipe close or `system'. +$? The status returned by the last \\=`\\=`, pipe close or `system'. $@ The perl error message from the last eval or do @var{EXPR} command. $ARGV The name of the current file used with <> . $[ Deprecated: The index of the first element/char in an array/string. @@ -7888,7 +7888,7 @@ printf [FILEHANDLE] (FORMAT,LIST) push(ARRAY,LIST) q/STRING/ Synonym for 'STRING' qq/STRING/ Synonym for \"STRING\" -qx/STRING/ Synonym for `STRING` +qx/STRING/ Synonym for \\=`STRING\\=` rand[(EXPR)] read(FILEHANDLE,SCALAR,LENGTH[,OFFSET]) readdir(DIRHANDLE) @@ -8007,7 +8007,7 @@ pos STRING Set/Get end-position of the last match over this string, see \\G. quotemeta [ EXPR ] Quote regexp metacharacters. qw/WORD1 .../ Synonym of split('', 'WORD1 ...') readline FH Synonym of <FH>. -readpipe CMD Synonym of `CMD`. +readpipe CMD Synonym of \\=`CMD\\=`. ref [ EXPR ] Type of EXPR when dereferenced. sysopen FH, FILENAME, MODE [, PERM] (MODE is numeric, see Fcntl.) tie VAR, PACKAGE, LIST Hide an object behind a simple Perl variable. diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index ad35c48a101..61709c326d6 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -30,7 +30,6 @@ (require 'lisp-mode) -(defvar emacs-lisp-mode-abbrev-table nil) (define-abbrev-table 'emacs-lisp-mode-abbrev-table () "Abbrev table for Emacs Lisp mode. It has `lisp-mode-abbrev-table' as its parent." @@ -232,7 +231,8 @@ Blank lines separate paragraphs. Semicolons start comments. (lisp-mode-variables nil nil 'elisp) (add-hook 'after-load-functions #'elisp--font-lock-flush-elisp-buffers) (setq-local electric-pair-text-pairs - (cons '(?\` . ?\') electric-pair-text-pairs)) + (append '((?\` . ?\') (?‘ . ?’)) electric-pair-text-pairs)) + (setq-local electric-quote-string t) (setq imenu-case-fold-search nil) (add-function :before-until (local 'eldoc-documentation-function) #'elisp-eldoc-documentation-function) @@ -395,7 +395,7 @@ It can be quoted, or be inside a quoted form." ((or (eq (char-after) ?\[) (progn (skip-chars-backward " ") - (memq (char-before) '(?' ?`)))) + (memq (char-before) '(?' ?` ?‘)))) (setq res t)) ((eq (char-before) ?,) (setq nesting nil)))) @@ -460,7 +460,7 @@ It can be quoted, or be inside a quoted form." (beg (condition-case nil (save-excursion (backward-sexp 1) - (skip-syntax-forward "'") + (skip-chars-forward "`',‘") (point)) (scan-error pos))) (end @@ -471,16 +471,17 @@ It can be quoted, or be inside a quoted form." (save-excursion (goto-char beg) (forward-sexp 1) - (skip-chars-backward "'") + (skip-chars-backward "'’") (when (>= (point) pos) (point))) (scan-error pos)))) ;; t if in function position. - (funpos (eq (char-before beg) ?\())) + (funpos (eq (char-before beg) ?\()) + (quoted (elisp--form-quoted-p beg))) (when (and end (or (not (nth 8 (syntax-ppss))) - (eq (char-before beg) ?`))) + (memq (char-before beg) '(?` ?‘)))) (let ((table-etc - (if (not funpos) + (if (or (not funpos) quoted) ;; FIXME: We could look at the first element of the list and ;; use it to provide a more specific completion table in some ;; cases. E.g. filter out keywords that are not understood by @@ -492,7 +493,7 @@ It can be quoted, or be inside a quoted form." :company-doc-buffer #'elisp--company-doc-buffer :company-docsig #'elisp--company-doc-string :company-location #'elisp--company-location)) - ((elisp--form-quoted-p beg) + (quoted (list nil obarray ;; Don't include all symbols (bug#16646). :predicate (lambda (sym) @@ -544,10 +545,11 @@ It can be quoted, or be inside a quoted form." (< (point) beg))))) (list t obarray :predicate (lambda (sym) (get sym 'error-conditions)))) - ((and ?\( + ((and (or ?\( `let `let*) (guard (save-excursion (goto-char (1- beg)) - (up-list -1) + (when (eq parent ?\() + (up-list -1)) (forward-symbol -1) (looking-at "\\_<let\\*?\\_>")))) (list t obarray @@ -577,9 +579,9 @@ It can be quoted, or be inside a quoted form." ;;; Xref backend -(declare-function xref-make-elisp-location "xref" (symbol type file)) (declare-function xref-make-bogus-location "xref" (message)) (declare-function xref-make "xref" (description location)) +(declare-function xref-collect-matches "xref" (input dir &optional kind)) (defun elisp-xref-find (action id) (require 'find-func) @@ -588,6 +590,10 @@ It can be quoted, or be inside a quoted form." (let ((sym (intern-soft id))) (when sym (elisp--xref-find-definitions sym)))) + (`references + (elisp--xref-find-matches id #'xref-collect-references)) + (`matches + (elisp--xref-find-matches id #'xref-collect-matches)) (`apropos (elisp--xref-find-apropos id)))) @@ -600,12 +606,16 @@ It can be quoted, or be inside a quoted form." (setq sym (car fun-lib)) (cdr fun-lib)))) (`defvar (and (boundp sym) - ;; Don't show minor modes twice. - ;; TODO: If TYPE ever becomes dependent on the - ;; context, move this check outside. - (not (fboundp sym)) - (or (symbol-file sym 'defvar) - (help-C-file-name sym 'var)))) + (let ((el-file (symbol-file sym 'defvar))) + (if el-file + (and + ;; Don't show minor modes twice. + ;; TODO: If TYPE ever becomes dependent on the + ;; context, move this check outside. + (not (and (fboundp sym) + (memq sym minor-mode-list))) + el-file) + (help-C-file-name sym 'var))))) (`feature (and (featurep sym) ;; Skip when a function with the same name ;; is defined, because it's probably in the @@ -620,6 +630,12 @@ It can be quoted, or be inside a quoted form." (setq file (substring file 0 -1))) (xref-make-elisp-location sym type file)))) +(defvar elisp--xref-format + (let ((str "(%s %s)")) + (put-text-property 1 3 'face 'font-lock-keyword-face str) + (put-text-property 4 6 'face 'font-lock-function-name-face str) + str)) + (defun elisp--xref-find-definitions (symbol) (save-excursion (let (lst) @@ -631,11 +647,35 @@ It can be quoted, or be inside a quoted form." (xref-make-bogus-location (error-message-string err)))))) (when loc (push - (xref-make (format "(%s %s)" type symbol) + (xref-make (format elisp--xref-format type symbol) loc) lst)))) lst))) +(defvar package-user-dir) + +(defun elisp--xref-find-matches (symbol fun) + (let* ((dirs (sort + (mapcar + (lambda (dir) + (file-name-as-directory (expand-file-name dir))) + ;; It's one level above a number of `load-path' + ;; elements (one for each installed package). + ;; Save us some process calls. + (cons package-user-dir load-path)) + #'string<)) + (ref dirs)) + ;; Delete subdirectories from the list. + (while (cdr ref) + (if (string-prefix-p (car ref) (cadr ref)) + (setcdr ref (cddr ref)) + (setq ref (cdr ref)))) + (cl-mapcan + (lambda (dir) + (and (file-exists-p dir) + (funcall fun symbol dir))) + dirs))) + (defun elisp--xref-find-apropos (regexp) (apply #'nconc (let (lst) @@ -656,6 +696,24 @@ It can be quoted, or be inside a quoted form." (defun elisp--xref-identifier-completion-table () elisp--xref-identifier-completion-table) +(cl-defstruct (xref-elisp-location + (:constructor xref-make-elisp-location (symbol type file))) + "Location of an Emacs Lisp symbol definition." + symbol type file) + +(cl-defmethod xref-location-marker ((l xref-elisp-location)) + (pcase-let (((cl-struct xref-elisp-location symbol type file) l)) + (let ((buffer-point + (pcase type + (`defun (find-function-search-for-symbol symbol nil file)) + ((or `defvar `defface) + (find-function-search-for-symbol symbol type file)) + (`feature + (cons (find-file-noselect file) 1))))) + (with-current-buffer (car buffer-point) + (goto-char (or (cdr buffer-point) (point-min))) + (point-marker))))) + ;;; Elisp Interaction mode (defvar lisp-interaction-mode-map @@ -861,15 +919,17 @@ If CHAR is not a character, return nil." (defun elisp--preceding-sexp () "Return sexp before the point." (let ((opoint (point)) - ignore-quotes + (left-quote ?‘) expr) (save-excursion (with-syntax-table emacs-lisp-mode-syntax-table - ;; If this sexp appears to be enclosed in `...' + ;; If this sexp appears to be enclosed in `...' or ‘...’ ;; then ignore the surrounding quotes. - (setq ignore-quotes - (or (eq (following-char) ?\') - (eq (preceding-char) ?\'))) + (cond ((eq (preceding-char) ?’) + (progn (forward-char -1) (setq opoint (point)))) + ((or (eq (following-char) ?\') + (eq (preceding-char) ?\')) + (setq left-quote ?\`))) (forward-sexp -1) ;; If we were after `?\e' (or similar case), ;; use the whole thing, not just the `e'. @@ -893,7 +953,7 @@ If CHAR is not a character, return nil." (forward-sexp -1)))) (save-restriction - (if (and ignore-quotes (eq (following-char) ?`)) + (if (eq (following-char) left-quote) ;; vladimir@cs.ualberta.ca 30-Jul-1997: Skip ` in `variable' so ;; that the value is returned, not the name. (forward-char)) @@ -1141,13 +1201,13 @@ which see." (cond ((null current-fnsym) nil) ((eq current-symbol (car current-fnsym)) - (or (apply #'elisp--get-fnsym-args-string current-fnsym) - (elisp--get-var-docstring current-symbol))) + (or (apply #'elisp-get-fnsym-args-string current-fnsym) + (elisp-get-var-docstring current-symbol))) (t - (or (elisp--get-var-docstring current-symbol) - (apply #'elisp--get-fnsym-args-string current-fnsym)))))) + (or (elisp-get-var-docstring current-symbol) + (apply #'elisp-get-fnsym-args-string current-fnsym)))))) -(defun elisp--get-fnsym-args-string (sym &optional index) +(defun elisp-get-fnsym-args-string (sym &optional index prefix) "Return a string containing the parameter list of the function SYM. If SYM is a subr and no arglist is obtainable from the docstring or elsewhere, return a 1-line docstring." @@ -1164,20 +1224,29 @@ or elsewhere, return a 1-line docstring." (args (cond ((listp advertised) advertised) - ((setq doc (help-split-fundoc (documentation sym t) sym)) + ((setq doc (help-split-fundoc + (condition-case nil (documentation sym t) + (invalid-function nil)) + sym)) (car doc)) (t (help-function-arglist sym))))) ;; Stringify, and store before highlighting, downcasing, etc. - ;; FIXME should truncate before storing. - (elisp--last-data-store sym (elisp--function-argstring args) + (elisp--last-data-store sym (elisp-function-argstring args) 'function)))))) ;; Highlight, truncate. (if argstring - (elisp--highlight-function-argument sym argstring index)))) - -(defun elisp--highlight-function-argument (sym args index) + (elisp--highlight-function-argument + sym argstring index + (or prefix + (concat (propertize (symbol-name sym) 'face + (if (functionp sym) + 'font-lock-function-name-face + 'font-lock-keyword-face)) + ": ")))))) + +(defun elisp--highlight-function-argument (sym args index prefix) "Highlight argument INDEX in ARGS list for function SYM. -In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." +In the absence of INDEX, just call `eldoc-docstring-format-sym-doc'." ;; FIXME: This should probably work on the list representation of `args' ;; rather than its string representation. ;; FIXME: This function is much too long, we need to split it up! @@ -1262,9 +1331,9 @@ In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." ((string= argument "&allow-other-keys")) ; Skip. ;; Back to index 0 in ARG1 ARG2 ARG2 ARG3 etc... ;; like in `setq'. - ((or (and (string-match-p "\\.\\.\\.$" argument) + ((or (and (string-match-p "\\.\\.\\.\\'" argument) (string= argument (car (last args-lst)))) - (and (string-match-p "\\.\\.\\.$" + (and (string-match-p "\\.\\.\\.\\'" (substring args 1 (1- (length args)))) (= (length (remove "..." args-lst)) 2) (> index 1) (eq (logand index 1) 1))) @@ -1279,14 +1348,12 @@ In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." (when start (setq doc (copy-sequence args)) (add-text-properties start end (list 'face argument-face) doc)) - (setq doc (elisp--docstring-format-sym-doc - sym doc (if (functionp sym) 'font-lock-function-name-face - 'font-lock-keyword-face))) + (setq doc (eldoc-docstring-format-sym-doc prefix doc)) doc))) ;; Return a string containing a brief (one-line) documentation string for ;; the variable. -(defun elisp--get-var-docstring (sym) +(defun elisp-get-var-docstring (sym) (cond ((not sym) nil) ((and (eq sym (aref elisp--eldoc-last-data 0)) (eq 'variable (aref elisp--eldoc-last-data 2))) @@ -1294,7 +1361,7 @@ In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." (t (let ((doc (documentation-property sym 'variable-documentation t))) (when doc - (let ((doc (elisp--docstring-format-sym-doc + (let ((doc (eldoc-docstring-format-sym-doc sym (elisp--docstring-first-line doc) 'font-lock-variable-name-face))) (elisp--last-data-store sym doc 'variable))))))) @@ -1318,36 +1385,6 @@ In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." (substring doc start (match-beginning 0))) ((zerop start) doc) (t (substring doc start)))))))) - -(defvar eldoc-echo-area-use-multiline-p) - -;; If the entire line cannot fit in the echo area, the symbol name may be -;; truncated or eliminated entirely from the output to make room for the -;; description. -(defun elisp--docstring-format-sym-doc (sym doc face) - (save-match-data - (let* ((name (symbol-name sym)) - (ea-multi eldoc-echo-area-use-multiline-p) - ;; Subtract 1 from window width since emacs will not write - ;; any chars to the last column, or in later versions, will - ;; cause a wraparound and resize of the echo area. - (ea-width (1- (window-width (minibuffer-window)))) - (strip (- (+ (length name) (length ": ") (length doc)) ea-width))) - (cond ((or (<= strip 0) - (eq ea-multi t) - (and ea-multi (> (length doc) ea-width))) - (format "%s: %s" (propertize name 'face face) doc)) - ((> (length doc) ea-width) - (substring (format "%s" doc) 0 ea-width)) - ((>= strip (length name)) - (format "%s" doc)) - (t - ;; Show the end of the partial symbol name, rather - ;; than the beginning, since the former is more likely - ;; to be unique given package namespace conventions. - (setq name (substring name strip)) - (format "%s: %s" (propertize name 'face face) doc)))))) - ;; Return a list of current function name and argument index. (defun elisp--fnsym-in-current-sexp () @@ -1392,7 +1429,7 @@ In the absence of INDEX, just call `elisp--docstring-format-sym-doc'." (memq (char-syntax c) '(?w ?_)) (intern-soft (current-word))))) -(defun elisp--function-argstring (arglist) +(defun elisp-function-argstring (arglist) "Return ARGLIST as a string enclosed by (). ARGLIST is either a string, or a list of strings or symbols." (let ((str (cond ((stringp arglist) arglist) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index b470352f8dc..bf57770a3dd 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -204,7 +204,7 @@ nil means it has not yet been computed; use function `tags-table-files' to do so.") (defvar tags-completion-table nil - "Obarray of tag names defined in current tags table.") + "List of tag names defined in current tags table.") (defvar tags-included-tables nil "List of tags tables included by the current tags table.") @@ -759,23 +759,19 @@ tags table and its (recursively) included tags tables." (or tags-completion-table ;; No cached value for this buffer. (condition-case () - (let (current-table combined-table) + (let (tables cont) (message "Making tags completion table for %s..." buffer-file-name) (save-excursion ;; Iterate over the current list of tags tables. - (while (visit-tags-table-buffer (and combined-table t)) + (while (visit-tags-table-buffer cont) ;; Find possible completions in this table. - (setq current-table (funcall tags-completion-table-function)) - ;; Merge this buffer's completions into the combined table. - (if combined-table - (mapatoms - (lambda (sym) (intern (symbol-name sym) combined-table)) - current-table) - (setq combined-table current-table)))) + (push (funcall tags-completion-table-function) tables) + (setq cont t))) (message "Making tags completion table for %s...done" buffer-file-name) ;; Cache the result in a buffer-local variable. - (setq tags-completion-table combined-table)) + (setq tags-completion-table + (nreverse (delete-dups (apply #'nconc tables))))) (quit (message "Tags completion table construction aborted.") (setq tags-completion-table nil))))) @@ -805,15 +801,16 @@ If no tags table is loaded, do nothing and return nil." case-fold-search)) (pattern (funcall (or find-tag-default-function (get major-mode 'find-tag-default-function) - 'find-tag-default))) + #'find-tag-default))) beg) (when pattern (save-excursion (forward-char (1- (length pattern))) - (search-backward pattern) - (setq beg (point)) - (forward-char (length pattern)) - (list beg (point) (tags-lazy-completion-table) :exclusive 'no)))))) + ;; The find-tag function might be overly optimistic. + (when (search-backward pattern nil t) + (setq beg (point)) + (forward-char (length pattern)) + (list beg (point) (tags-lazy-completion-table) :exclusive 'no))))))) (defun find-tag-tag (string) "Read a tag name, with defaulting and completion." @@ -947,6 +944,7 @@ onto a ring and may be popped back to with \\[pop-tag-mark]. Contrast this with the ring of marks gone to by the command. See documentation of variable `tags-file-name'." + (declare (obsolete xref-find-definitions "25.1")) (interactive (find-tag-interactive "Find tag: ")) (let* ((buf (find-tag-noselect tagname next-p regexp-p)) (pos (with-current-buffer buf (point)))) @@ -1254,7 +1252,7 @@ buffer-local values of tags table format variables." (defun etags-tags-completion-table () ; Doc string? - (let ((table (make-vector 511 0)) + (let (table (progress-reporter (make-progress-reporter (format "Making tags completion table for %s..." buffer-file-name) @@ -1274,7 +1272,7 @@ buffer-local values of tags table format variables." \\([-a-zA-Z0-9_+*$?:]+\\)[^-a-zA-Z0-9_+*$?:\177]*\\)\177\ \\(\\([^\n\001]+\\)\001\\)?\\([0-9]+\\)?,\\([0-9]+\\)?\n" nil t) - (intern (prog1 (if (match-beginning 5) + (push (prog1 (if (match-beginning 5) ;; There is an explicit tag name. (buffer-substring (match-beginning 5) (match-end 5)) ;; No explicit tag name. Best guess. @@ -1353,9 +1351,16 @@ hits the start of file." pat (concat (if (eq selective-display t) "\\(^\\|\^m\\)" "^") (regexp-quote (car tag-info)))) - ;; The character position in the tags table is 0-origin. + ;; The character position in the tags table is 0-origin and counts CRs. ;; Convert it to a 1-origin Emacs character position. - (if startpos (setq startpos (1+ startpos))) + (when startpos + (setq startpos (1+ startpos)) + (when (and line + (eq 1 (coding-system-eol-type buffer-file-coding-system))) + ;; Act as if CRs were elided from all preceding lines. + ;; Although this doesn't always give exactly the correct position, + ;; it does typically improve the guess. + (setq startpos (- startpos (1- line))))) ;; If no char pos was given, try the given line number. (or startpos (if line @@ -1623,7 +1628,8 @@ Point should be just after a string that matches TAG." ;; Look at the comment of the make_tag function in lib-src/etags.c for ;; a textual description of the four rules. (and (string-match "^[^ \t()=,;]+$" tag) ;rule #1 - (looking-at "[ \t()=,;]?\177") ;rules #2 and #4 + ;; Rules #2 and #4, and a check that there's no explicit name. + (looking-at "[ \t()=,;]?\177\\(?:[0-9]+\\)?,\\(?:[0-9]+\\)?$") (save-excursion (backward-char (1+ (length tag))) (looking-at "[\n \t()=,;]")))) ;rule #3 @@ -2073,12 +2079,27 @@ for \\[find-tag] (which see)." ;; we hit the limit rarely. (defconst etags--xref-limit 1000) +(defvar etags-xref-find-definitions-tag-order '(tag-exact-match-p + tag-implicit-name-match-p) + "Tag order used in `etags-xref-find' to look for definitions.") + ;;;###autoload (defun etags-xref-find (action id) (pcase action (`definitions (etags--xref-find-definitions id)) + (`references + (etags--xref-find-matches id #'xref-collect-references)) + (`matches + (etags--xref-find-matches id #'xref-collect-matches)) (`apropos (etags--xref-find-definitions id t)))) +(defun etags--xref-find-matches (input fun) + (let ((dirs (if tags-table-list + (mapcar #'file-name-directory tags-table-list) + ;; If no tags files are loaded, prompt for the dir. + (list (read-directory-name "In directory: " nil nil t))))) + (cl-mapcan (lambda (dir) (funcall fun input dir)) dirs))) + (defun etags--xref-find-definitions (pattern &optional regexp?) ;; This emulates the behaviour of `find-tag-in-order' but instead of ;; returning one match at a time all matches are returned as list. @@ -2094,7 +2115,7 @@ for \\[find-tag] (which see)." (while (visit-tags-table-buffer (not first-time)) (setq first-time nil) (dolist (order-fun (cond (regexp? find-tag-regexp-tag-order) - (t find-tag-tag-order))) + (t etags-xref-find-definitions-tag-order))) (goto-char (point-min)) (while (and (funcall search-fun pattern nil t) (< (hash-table-count marks) etags--xref-limit)) @@ -2129,6 +2150,10 @@ for \\[find-tag] (which see)." (etags-goto-tag-location tag-info) (point-marker))))) +(cl-defmethod xref-location-line ((l xref-etags-location)) + (with-slots (tag-info) l + (nth 1 tag-info))) + (provide 'etags) diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 6264d3b7b82..0fde4f4da5b 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el @@ -900,9 +900,11 @@ Can be overridden by the value of `font-lock-maximum-decoration'.") ;; type :: word ;; type, stuff :: word ;; type, bind(c) :: word + ;; type, extends(stuff) :: word ;; NOT "type (" "\\_<\\(type\\)\\_>\\(?:\\(?:[^()\n]*\\|\ -.*,[ \t]*bind[ \t]*([ \t]*c[ \t]*)[ \t]*\\)::\\)?[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)" +.*,[ \t]*\\(?:bind\\|extends\\)[ \t]*(.*)[ \t]*\\)::\\)?\ +[ \t]*\\(\\(?:\\sw\\|\\s_\\)+\\)" "Regexp matching the definition of a derived type.") (defconst f90-typeis-re @@ -1113,7 +1115,7 @@ For fixed format code, use `fortran-mode'. indented line. \\[f90-indent-subprogram] indents the current subprogram. -Type `? or `\\[help-command] to display a list of built-in\ +Type \\=`? or \\=`\\[help-command] to display a list of built-in\ abbrevs for F90 keywords. Key definitions: @@ -1450,7 +1452,7 @@ if all else fails." (not (or (looking-at "end") (looking-at "\\(do\\|if\\|else\\(if\\|where\\)?\ \\|select[ \t]*\\(case\\|type\\)\\|case\\|where\\|forall\\|\ -block\\|critical\\)\\_>") +block\\|critical\\|enum\\)\\_>") (looking-at "\\(program\\|\\(?:sub\\)?module\\|\ \\(?:abstract[ \t]*\\)?interface\\|block[ \t]*data\\)\\_>") (looking-at "\\(contains\\|\\(?:\\sw\\|\\s_\\)+[ \t]*:\\)") @@ -2267,7 +2269,7 @@ Leave point at the end of line." ;; Abbrevs and keywords. (defun f90-abbrev-start () - "Typing `\\[help-command] or `? lists all the F90 abbrevs. + "Typing \\=`\\[help-command] or \\=`? lists all the F90 abbrevs. Any other key combination is executed normally." (interactive "*") (self-insert-command 1) diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 486d67297a9..4af8ac6971e 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -2376,9 +2376,9 @@ Sets `gdb-thread-number' to new id." (let* ((result (gdb-json-string output-field)) (thread-id (bindat-get-field result 'id))) (gdb-setq-thread-number thread-id) - ;; Typing `thread N` in GUD buffer makes GDB emit `^done` followed - ;; by `=thread-selected` notification. `^done` causes `gdb-update` - ;; as usually. Things happen to fast and second call (from + ;; Typing `thread N' in GUD buffer makes GDB emit `^done' followed + ;; by `=thread-selected' notification. `^done' causes `gdb-update' + ;; as usually. Things happen too fast and second call (from ;; gdb-thread-selected handler) gets cut off by our beloved ;; pending triggers. ;; Solution is `gdb-wait-for-pending' macro: it guarantees that its diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 048fa1180a9..68852f7b558 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -633,17 +633,17 @@ This function is called from `compilation-filter-hook'." (format "%s " null-device) ""))) (cond ((eq grep-find-use-xargs 'gnu) - (format "%s . <X> -type f <F> -print0 | \"%s\" -0 %s" + (format "%s <D> <X> -type f <F> -print0 | \"%s\" -0 %s" find-program xargs-program gcmd)) ((eq grep-find-use-xargs 'exec) - (format "%s . <X> -type f <F> -exec %s {} %s%s" + (format "%s <D> <X> -type f <F> -exec %s {} %s%s" find-program gcmd null (shell-quote-argument ";"))) ((eq grep-find-use-xargs 'exec-plus) - (format "%s . <X> -type f <F> -exec %s %s{} +" + (format "%s <D> <X> -type f <F> -exec %s %s{} +" find-program gcmd null)) (t - (format "%s . <X> -type f <F> -print | \"%s\" %s" + (format "%s <D> <X> -type f <F> -print | \"%s\" %s" find-program xargs-program gcmd)))))))) ;; Save defaults for this host. @@ -792,7 +792,7 @@ easily repeat a find command." (defconst grep-expand-keywords '(("<C>" . (and cf (isearch-no-upper-case-p regexp t) "-i")) - ("<D>" . dir) + ("<D>" . (or dir ".")) ("<F>" . files) ("<N>" . null-device) ("<X>" . excl) @@ -992,58 +992,7 @@ to specify a command to run." grep-find-command))) (compilation-start regexp 'grep-mode)) (setq dir (file-name-as-directory (expand-file-name dir))) - (require 'find-dired) ; for `find-name-arg' - (let ((command (grep-expand-template - grep-find-template - regexp - (concat (shell-quote-argument "(") - " " find-name-arg " " - (mapconcat - #'shell-quote-argument - (split-string files) - (concat " -o " find-name-arg " ")) - " " - (shell-quote-argument ")")) - dir - (concat - (and grep-find-ignored-directories - (concat "-type d " - (shell-quote-argument "(") - ;; we should use shell-quote-argument here - " -path " - (mapconcat - #'(lambda (ignore) - (cond ((stringp ignore) - (shell-quote-argument - (concat "*/" ignore))) - ((consp ignore) - (and (funcall (car ignore) dir) - (shell-quote-argument - (concat "*/" - (cdr ignore))))))) - grep-find-ignored-directories - " -o -path ") - " " - (shell-quote-argument ")") - " -prune -o ")) - (and grep-find-ignored-files - (concat (shell-quote-argument "!") " -type d " - (shell-quote-argument "(") - ;; we should use shell-quote-argument here - " -name " - (mapconcat - #'(lambda (ignore) - (cond ((stringp ignore) - (shell-quote-argument ignore)) - ((consp ignore) - (and (funcall (car ignore) dir) - (shell-quote-argument - (cdr ignore)))))) - grep-find-ignored-files - " -o -name ") - " " - (shell-quote-argument ")") - " -prune -o ")))))) + (let ((command (rgrep-default-command regexp files nil))) (when command (if confirm (setq command @@ -1056,6 +1005,61 @@ to specify a command to run." (if (eq next-error-last-buffer (current-buffer)) (setq default-directory dir))))))) +(defun rgrep-default-command (regexp files dir) + "Compute the command for \\[rgrep] to use by default." + (require 'find-dired) ; for `find-name-arg' + (grep-expand-template + grep-find-template + regexp + (concat (shell-quote-argument "(") + " " find-name-arg " " + (mapconcat + #'shell-quote-argument + (split-string files) + (concat " -o " find-name-arg " ")) + " " + (shell-quote-argument ")")) + dir + (concat + (and grep-find-ignored-directories + (concat "-type d " + (shell-quote-argument "(") + ;; we should use shell-quote-argument here + " -path " + (mapconcat + #'(lambda (ignore) + (cond ((stringp ignore) + (shell-quote-argument + (concat "*/" ignore))) + ((consp ignore) + (and (funcall (car ignore) dir) + (shell-quote-argument + (concat "*/" + (cdr ignore))))))) + grep-find-ignored-directories + " -o -path ") + " " + (shell-quote-argument ")") + " -prune -o ")) + (and grep-find-ignored-files + (concat (shell-quote-argument "!") " -type d " + (shell-quote-argument "(") + ;; we should use shell-quote-argument here + " -name " + (mapconcat + #'(lambda (ignore) + (cond ((stringp ignore) + (shell-quote-argument ignore)) + ((consp ignore) + (and (funcall (car ignore) dir) + (shell-quote-argument + (cdr ignore)))))) + grep-find-ignored-files + " -o -name ") + " " + (shell-quote-argument ")") + " -prune -o "))))) + ;;;###autoload (defun zrgrep (regexp &optional files dir confirm template) "Recursively grep for REGEXP in gzipped FILES in tree rooted at DIR. diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el index 40c40eef302..23f9d4af8c9 100644 --- a/lisp/progmodes/idlw-shell.el +++ b/lisp/progmodes/idlw-shell.el @@ -229,7 +229,7 @@ to set this option to nil." (defcustom idlwave-shell-file-name-chars "~/A-Za-z0-9+:_.$#%={}\\- " "The characters allowed in file names, as a string. -Used for file name completion. Must not contain `'', `,' and `\"' +Used for file name completion. Must not contain ‘'’, ‘,’ and ‘\"’ because these are used as separators by IDL." :group 'idlwave-shell-general-setup :type 'string) @@ -1445,12 +1445,8 @@ Otherwise just move the line. Move down unless UP is non-nil." (interactive "p") (idlwave-shell-move-or-history nil arg)) -;; Newer versions of comint.el changed the name of comint-filter to -;; comint-output-filter. -(defalias 'idlwave-shell-comint-filter - (if (fboundp 'comint-output-filter) - #'comint-output-filter - #'comint-filter)) +(define-obsolete-function-alias 'idlwave-shell-comint-filter + 'comint-output-filter "25.1") (defun idlwave-shell-is-running () "Return t if the shell process is running." @@ -1496,7 +1492,7 @@ and then calls `idlwave-shell-send-command' for any pending commands." (get-buffer-create idlwave-shell-hidden-output-buffer)) (goto-char (point-max)) (insert string)) - (idlwave-shell-comint-filter proc string)) + (comint-output-filter proc string)) ;; Watch for magic - need to accumulate the current line ;; since it may not be sent all at once. (if (string-match "\n" string) @@ -1552,7 +1548,7 @@ and then calls `idlwave-shell-send-command' for any pending commands." (if idlwave-shell-hide-output (if (and idlwave-shell-show-if-error (eq idlwave-shell-current-state 'error)) - (idlwave-shell-comint-filter proc full-output) + (comint-output-filter proc full-output) ;; If it's only *mostly* hidden, filter % lines, ;; and show anything that remains (if (eq idlwave-shell-hide-output 'mostly) @@ -1560,7 +1556,7 @@ and then calls `idlwave-shell-send-command' for any pending commands." (idlwave-shell-filter-hidden-output full-output))) (if filtered - (idlwave-shell-comint-filter + (comint-output-filter proc filtered)))))) ;; Call the post-command hook @@ -2642,7 +2638,7 @@ If ENABLE is non-nil, enable them instead." (defun idlwave-shell-break-in () "Look for a module name near point and set a break point for it. The command looks for an identifier near point and sets a breakpoint -for the first line of the corresponding module. If MODULE is `t', set +for the first line of the corresponding module. If MODULE is t, set in the current routine." (interactive) (let* ((module (idlwave-fix-module-if-obj_new (idlwave-what-module))) diff --git a/lisp/progmodes/idlwave.el b/lisp/progmodes/idlwave.el index 7e269cb60f0..8e30aa29502 100644 --- a/lisp/progmodes/idlwave.el +++ b/lisp/progmodes/idlwave.el @@ -742,8 +742,8 @@ The actions that can be performed are listed in `idlwave-indent-action-table'." (defcustom idlwave-abbrev-start-char "\\" "A single character string used to start abbreviations in abbrev mode. -Possible characters to chose from: ~`\% -or even '?'. '.' is not a good choice because it can make structure +Possible characters to choose from: ~\\=`\% +or even ‘?’. ‘.’ is not a good choice because it can make structure field names act like abbrevs in certain circumstances. Changes to this in `idlwave-mode-hook' will have no effect. Instead a user @@ -1837,7 +1837,7 @@ The main features of this mode are 5. Code Templates and Abbreviations -------------------------------- Many Abbreviations are predefined to expand to code fragments and templates. - The abbreviations start generally with a `\\`. Some examples: + The abbreviations start generally with a `\\'. Some examples: \\pr PROCEDURE template \\fu FUNCTION template @@ -2047,7 +2047,7 @@ If optional argument RESERVED is non-nil then the expansion consists of reserved words, which will be capitalized if `idlwave-reserved-word-upcase' is non-nil. Otherwise, the abbrev will be capitalized if `idlwave-abbrev-change-case' -is non-nil, unless its value is \`down in which case the abbrev will be +is non-nil, unless its value is `down' in which case the abbrev will be made into all lowercase. Returns non-nil if abbrev is left expanded." (if (idlwave-quoted) @@ -8162,7 +8162,7 @@ demand _EXTRA in the keyword list." class (idlwave-routines)) 'do-link)))))) - ;; If the class is `t', combine all keywords of all methods NAME + ;; If the class is t, combine all keywords of all methods NAME (when (eq class t) (mapc (lambda (entry) (and diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 62f19f42df1..f06c5c75b1a 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -2852,10 +2852,6 @@ with `js--js-encode-value'." (defsubst js--js-true (value) (not (js--js-not value))) -;; The somewhat complex code layout confuses the byte-compiler into -;; thinking this function "might not be defined at runtime". -(declare-function js--optimize-arglist "js" (arglist)) - (eval-and-compile (defun js--optimize-arglist (arglist) "Convert immediate js< and js! references to deferred ones." diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index c9774a15bbb..d45d082c40a 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1585,7 +1585,7 @@ forward only one sexp, else move backwards." With positive optional argument DIR direction move forward, else backwards. When optional argument SAFE is non-nil do not throw errors when at end of sexp, skip it instead. With optional -argument SKIP-PARENS-P force sexp motion to ignore parenthised +argument SKIP-PARENS-P force sexp motion to ignore parenthesized expressions when looking at them in either direction." (setq dir (or dir 1)) (unless (= dir 0) @@ -1683,7 +1683,7 @@ expressions when looking at them in either direction." With ARG, do it that many times. Negative arg -N means move backward N times. When optional argument SAFE is non-nil do not throw errors when at end of sexp, skip it instead. With optional -argument SKIP-PARENS-P force sexp motion to ignore parenthised +argument SKIP-PARENS-P force sexp motion to ignore parenthesized expressions when looking at them in either direction (forced to t in interactive calls)." (interactive "^p") @@ -1694,7 +1694,7 @@ in interactive calls)." ;; interactive detection by checking `current-prefix-arg'. The ;; reason to make this distinction is that lisp functions like ;; `blink-matching-open' get confused causing issues like the one in - ;; Bug#16191. With this approach the user gets a simmetric behavior + ;; Bug#16191. With this approach the user gets a symmetric behavior ;; when working interactively while called functions expecting ;; paren-based sexp motion work just fine. (or @@ -1717,7 +1717,7 @@ in interactive calls)." With ARG, do it that many times. Negative arg -N means move forward N times. When optional argument SAFE is non-nil do not throw errors when at end of sexp, skip it instead. With optional -argument SKIP-PARENS-P force sexp motion to ignore parenthised +argument SKIP-PARENS-P force sexp motion to ignore parenthesized expressions when looking at them in either direction (forced to t in interactive calls)." (interactive "^p") @@ -1728,7 +1728,7 @@ in interactive calls)." "Move forward safely across expressions. With ARG, do it that many times. Negative arg -N means move backward N times. With optional argument SKIP-PARENS-P force -sexp motion to ignore parenthised expressions when looking at +sexp motion to ignore parenthesized expressions when looking at them in either direction (forced to t in interactive calls)." (interactive "^p") (python-nav-forward-sexp arg t skip-parens-p)) @@ -1737,7 +1737,7 @@ them in either direction (forced to t in interactive calls)." "Move backward safely across expressions. With ARG, do it that many times. Negative arg -N means move forward N times. With optional argument SKIP-PARENS-P force sexp -motion to ignore parenthised expressions when looking at them in +motion to ignore parenthesized expressions when looking at them in either direction (forced to t in interactive calls)." (interactive "^p") (python-nav-backward-sexp arg t skip-parens-p)) @@ -2268,7 +2268,8 @@ banner and the initial prompt are received separately." (while t (when (not (accept-process-output process timeout)) (throw 'found nil)) - (when (looking-back regexp) + (when (looking-back + regexp (car (python-util-comint-last-prompt))) (throw 'found t)))))) (defun python-shell-comint-end-of-output-p (output) @@ -3215,7 +3216,7 @@ With argument MSG show activation/deactivation message." (concat "Your `python-shell-interpreter' doesn't seem to " "support readline, yet `python-shell-completion-native' " - (format "was `t' and %S is not part of the " + (format "was t and %S is not part of the " (file-name-nondirectory python-shell-interpreter)) "`python-shell-completion-native-disabled-interpreters' " "list. Native completions have been disabled locally. ")) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index f2fb95ce59a..21ad1021c9e 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -287,7 +287,7 @@ Only has effect when `ruby-use-smie' is nil." :group 'ruby :safe 'booleanp) -;; FIXME Woefully under documented. What is the point of the last `t'?. +;; FIXME Woefully under documented. What is the point of the last t?. (defcustom ruby-deep-indent-paren '(?\( ?\[ ?\] t) "Deep indent lists in parenthesis when non-nil. The value t means continuous line. @@ -1392,7 +1392,8 @@ by `end-of-defun'." (interactive "p") (ruby-forward-sexp) (let (case-fold-search) - (when (looking-back (concat "^\\s *" ruby-block-end-re)) + (when (looking-back (concat "^\\s *" ruby-block-end-re) + (line-beginning-position)) (forward-line 1)))) (defun ruby-beginning-of-indent () diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 135f945dbb9..537b180eed6 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -921,7 +921,7 @@ See `sh-feature'.") (:foreground "magenta")) (t (:weight bold))) - "Face to show quoted execs like `blabla`." + "Face to show quoted execs like \\=`blabla\\=`." :group 'sh-indentation) (define-obsolete-face-alias 'sh-heredoc-face 'sh-heredoc "22.1") (defvar sh-heredoc-face 'sh-heredoc) @@ -4344,7 +4344,7 @@ The document is bounded by `sh-here-document-word'." (or arg (sh--maybe-here-document))) (defun sh--maybe-here-document () - (or (not (looking-back "[^<]<<")) + (or (not (looking-back "[^<]<<" (line-beginning-position))) (save-excursion (backward-char 2) (or (sh-quoted-p) diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index 8f7705ba17d..e4e96554c95 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el @@ -1028,7 +1028,8 @@ Returns nil if line starts inside a string, t if in a comment." (with-current-buffer (process-buffer proc) ;; Delete prompt if requested. (when (marker-buffer inferior-tcl-delete-prompt-marker) - (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker) + (let ((inhibit-read-only t)) + (delete-region (process-mark proc) inferior-tcl-delete-prompt-marker)) (set-marker inferior-tcl-delete-prompt-marker nil)))) (comint-output-filter proc string)) diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index 57206544b9b..11b7561c99a 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -123,7 +123,7 @@ ;;; Code: ;; This variable will always hold the version number of the mode -(defconst verilog-mode-version "2015-02-20-0d6420b-vpo" +(defconst verilog-mode-version "2015-05-14-6232468-vpo-GNU" "Version of this Verilog mode.") (defconst verilog-mode-release-emacs t "If non-nil, this version of Verilog mode was released with Emacs itself.") @@ -282,6 +282,50 @@ STRING should be given if the last search was by `string-match' on STRING." ;; Emacs. (defalias 'verilog-regexp-opt 'regexp-opt))) +;; emacs >=22 has looking-back, but older emacs and xemacs don't. +;; This function is lifted directly from emacs's subr.el +;; so that it can be used by xemacs. +;; The idea for this was borrowed from org-mode via this link: +;; https://lists.gnu.org/archive/html/emacs-orgmode/2009-12/msg00032.html +(eval-and-compile + (cond + ((fboundp 'looking-back) + (defalias 'verilog-looking-back 'looking-back)) + (t + (defun verilog-looking-back (regexp limit &optional greedy) + "Return non-nil if text before point matches regular expression REGEXP. +Like `looking-at' except matches before point, and is slower. +LIMIT if non-nil speeds up the search by specifying a minimum +starting position, to avoid checking matches that would start +before LIMIT. + +If GREEDY is non-nil, extend the match backwards as far as +possible, stopping when a single additional previous character +cannot be part of a match for REGEXP. When the match is +extended, its starting position is allowed to occur before +LIMIT. + +As a general recommendation, try to avoid using `looking-back' +wherever possible, since it is slow." + (let ((start (point)) + (pos + (save-excursion + (and (re-search-backward (concat "\\(?:" regexp "\\)\\=") limit t) + (point))))) + (if (and greedy pos) + (save-restriction + (narrow-to-region (point-min) start) + (while (and (> pos (point-min)) + (save-excursion + (goto-char pos) + (backward-char 1) + (looking-at (concat "\\(?:" regexp "\\)\\'")))) + (setq pos (1- pos))) + (save-excursion + (goto-char pos) + (looking-at (concat "\\(?:" regexp "\\)\\'"))))) + (not (null pos))))))) + (eval-and-compile ;; Both xemacs and emacs (condition-case nil @@ -475,8 +519,8 @@ take you to the next lint error." (defvar verilog-tool 'verilog-linter "Which tool to use for building compiler-command. -Either nil, `verilog-linter, `verilog-compiler, -`verilog-coverage, `verilog-preprocessor, or `verilog-simulator. +Either nil, `verilog-linter', `verilog-compiler', +`verilog-coverage', `verilog-preprocessor', or `verilog-simulator'. Alternatively use the \"Choose Compilation Action\" menu. See `verilog-set-compile-command' for more information.") @@ -553,11 +597,11 @@ Set to 0 to get them list right under containing block." "How to treat macro expansions in a declaration. If nil, indent as: input [31:0] a; - input `CP; + input \\=`CP; output c; If non nil, treat as: input [31:0] a; - input `CP ; + input \\=`CP ; output c;" :group 'verilog-mode-indent :type 'boolean) @@ -584,7 +628,7 @@ Set to 0 to get such code to start at the left side of the screen." (put 'verilog-indent-level-behavioral 'safe-local-variable 'integerp) (defcustom verilog-indent-level-directive 1 - "Indentation to add to each level of `ifdef declarations. + "Indentation to add to each level of \\=`ifdef declarations. Set to 0 to have all directives start at the left side of the screen." :group 'verilog-mode-indent :type 'integer) @@ -662,9 +706,10 @@ to see the effect as font color choices are cached by Emacs." (defcustom verilog-highlight-grouping-keywords nil "Non-nil means highlight grouping keywords more dramatically. -If false, these words are in the `font-lock-type-face'; if True then they are in -`verilog-font-lock-ams-face'. Some find that special highlighting on these -grouping constructs allow the structure of the code to be understood at a glance." +If false, these words are in the `font-lock-type-face'; if True +then they are in `verilog-font-lock-grouping-keywords-face'. +Some find that special highlighting on these grouping constructs +allow the structure of the code to be understood at a glance." :group 'verilog-mode-indent :type 'boolean) (put 'verilog-highlight-grouping-keywords 'safe-local-variable 'verilog-booleanp) @@ -688,8 +733,8 @@ file referenced. If false, this is not supported." (defcustom verilog-auto-declare-nettype nil "Non-nil specifies the data type to use with `verilog-auto-input' etc. -Set this to \"wire\" if the Verilog code uses \"`default_nettype -none\". Note using `default_nettype none isn't recommended practice; this +Set this to \"wire\" if the Verilog code uses \"\\=`default_nettype +none\". Note using \\=`default_nettype none isn't recommended practice; this mode is experimental." :version "24.1" ;; rev670 :group 'verilog-mode-actions @@ -1629,7 +1674,7 @@ If third arg START is non-nil, start search at that index in STRING." (defsubst verilog-string-replace-matches (from-string to-string fixedcase literal string) "Replace occurrences of FROM-STRING with TO-STRING. -FIXEDCASE and LITERAL as in `replace-match`. STRING is what to replace. +FIXEDCASE and LITERAL as in `replace-match'. STRING is what to replace. The case (verilog-string-replace-matches \"o\" \"oo\" nil nil \"foobar\") will break, as the o's continuously replace. xa -> x works ok though." ;; Hopefully soon to an Emacs built-in @@ -1880,14 +1925,22 @@ find the errors." (if (featurep 'xemacs) (add-hook 'compilation-mode-hook 'verilog-error-regexp-add-xemacs)) (if (featurep 'emacs) (add-hook 'compilation-mode-hook 'verilog-error-regexp-add-emacs)) -(defconst verilog-directive-re +(defconst verilog-compiler-directives (eval-when-compile - (verilog-regexp-words - '( - "`case" "`default" "`define" "`else" "`elsif" "`endfor" "`endif" - "`endprotect" "`endswitch" "`endwhile" "`for" "`format" "`if" "`ifdef" - "`ifndef" "`include" "`let" "`protect" "`switch" "`timescale" - "`time_scale" "`undef" "`while" )))) + '( ;; compiler directives, from IEEE 1800-2012 section 22.1 + "`__FILE__" "`__LINE" "`begin_keywords" "`celldefine" "`default_nettype" + "`define" "`else" "`elsif" "`end_keywords" "`endcelldefine" "`endif" + "`ifdef" "`ifndef" "`include" "`line" "`nounconnected_drive" "`pragma" + "`resetall" "`timescale" "`unconnected_drive" "`undef" "`undefineall" + ;; compiler directives not covered by IEEE 1800 + "`case" "`default" "`endfor" "`endprotect" "`endswitch" "`endwhile" "`for" + "`format" "`if" "`let" "`protect" "`switch" "`timescale" "`time_scale" + "`while" + )) + "List of Verilog compiler directives.") + +(defconst verilog-directive-re + (verilog-regexp-words verilog-compiler-directives)) (defconst verilog-directive-re-1 (concat "[ \t]*" verilog-directive-re)) @@ -2411,11 +2464,9 @@ find the errors." "\\(\\<begin\\>\\)\\|" ; 1 "\\(\\<else\\>\\)\\|" ; 2 "\\(\\<end\\>\\s-+\\<else\\>\\)\\|" ; 3 - "\\(\\<always_comb\\>\\(\[ \t\]*@\\)?\\)\\|" ; 4 - "\\(\\<always_ff\\>\\(\[ \t\]*@\\)?\\)\\|" ; 5 - "\\(\\<always_latch\\>\\(\[ \t\]*@\\)?\\)\\|" ; 6 + "\\(\\<always\\(?:_ff\\)?\\>\\(?:\[ \t\]*@\\)\\)\\|" ; 4 (matches always or always_ff w/ @...) + "\\(\\<always\\(?:_comb\\|_latch\\)?\\>\\)\\|" ; 5 (matches always, always_comb, always_latch w/o @...) "\\(\\<fork\\>\\)\\|" ; 7 - "\\(\\<always\\>\\(\[ \t\]*@\\)?\\)\\|" "\\(\\<if\\>\\)\\|" verilog-property-re "\\|" "\\(\\(" verilog-label-re "\\)?\\<assert\\>\\)\\|" @@ -2581,10 +2632,10 @@ find the errors." (defconst verilog-declaration-re (concat "\\(" verilog-declaration-prefix-re "\\s-*\\)?" verilog-declaration-core-re)) (defconst verilog-range-re "\\(\\[[^]]*\\]\\s-*\\)+") -(defconst verilog-optional-signed-re "\\s-*\\(signed\\)?") +(defconst verilog-optional-signed-re "\\s-*\\(\\(un\\)?signed\\)?") (defconst verilog-optional-signed-range-re (concat - "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?")) + "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?")) (defconst verilog-macroexp-re "`\\sw+") (defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)") @@ -2799,17 +2850,23 @@ find the errors." ;; from http://www.emacswiki.org/emacs/MultilineRegexp (concat "\\<\\(`define\\|`if\\)\\>" ;; directive "\\s-+" ;; separator - "\\(.*\\(?:\n.*\\)*?\\)" ;; definition: to tend of line, the maybe more lines (excludes any trailing \n) + "\\(?:.*?\\(?:\n.*\\)*?\\)" ;; definition: to end of line, then maybe more lines (excludes any trailing \n) + "\\(?:\n\\s-*\n\\|\\'\\)") ;; blank line or EOF + "\\)\\|\\(?:" + ;; `<macro>() : i.e. `uvm_info(a,b,c) or any other pre-defined macro + ;; Since parameters inside the macro can have parentheses, and + ;; the macro can span multiple lines, just look for the opening + ;; parentheses and then continue to the end of the first + ;; non-escaped EOL + (concat "\\<`\\w+\\>\\s-*(" + "\\(?:.*?\\(?:\n.*\\)*?\\)" ;; definition: to end of line, then maybe more lines (excludes any trailing \n) "\\(?:\n\\s-*\n\\|\\'\\)") ;; blank line or EOF "\\)" ))) (defconst verilog-keywords - '( "`case" "`default" "`define" "`else" "`endfor" "`endif" - "`endprotect" "`endswitch" "`endwhile" "`for" "`format" "`if" "`ifdef" - "`ifndef" "`include" "`let" "`protect" "`switch" "`timescale" - "`time_scale" "`undef" "`while" - + (append verilog-compiler-directives + '( "after" "alias" "always" "always_comb" "always_ff" "always_latch" "and" "assert" "assign" "assume" "automatic" "before" "begin" "bind" "bins" "binsof" "bit" "break" "buf" "bufif0" "bufif1" "byte" @@ -2851,7 +2908,7 @@ find the errors." "sync_reject_on" "unique0" "until" "until_with" "untyped" "weak" ;; 1800-2012 "implements" "interconnect" "nettype" "soft" - ) + )) "List of Verilog keywords.") (defconst verilog-comment-start-regexp "//\\|/\\*" @@ -2955,10 +3012,10 @@ See also `verilog-font-lock-extra-types'.") (defface verilog-font-lock-grouping-keywords-face '((((class color) (background light)) - (:foreground "red4" :bold t )) + (:foreground "Purple" :bold t )) (((class color) (background dark)) - (:foreground "red4" :bold t )) + (:foreground "orange1" :bold t )) (t (:italic t))) "Font lock mode face used to highlight verilog grouping keywords." :group 'font-lock-highlighting-faces) @@ -3068,7 +3125,7 @@ See also `verilog-font-lock-extra-types'.") ;; Fontify all types (if verilog-highlight-grouping-keywords (cons (concat "\\<\\(" verilog-font-grouping-keywords "\\)\\>") - 'verilog-font-lock-ams-face) + 'verilog-font-lock-grouping-keywords-face) (cons (concat "\\<\\(" verilog-font-grouping-keywords "\\)\\>") 'font-lock-type-face)) (cons (concat "\\<\\(" verilog-type-font-keywords "\\)\\>") @@ -3613,7 +3670,7 @@ Variables controlling indentation/edit style: Set to 0 to get such code to lined up underneath the task or function keyword. `verilog-indent-level-directive' (default 1) - Indentation of `ifdef/`endif blocks. + Indentation of \\=`ifdef/\\=`endif blocks. `verilog-cexp-indent' (default 1) Indentation of Verilog statements broken across lines i.e.: if (a) @@ -4200,6 +4257,8 @@ Uses `verilog-scan' cache." (not (or ;; stop if beginning of buffer (bobp) + ;; stop if looking at a pre-processor directive + (looking-at "`\\w+") ;; stop if we find a ; (= (preceding-char) ?\;) ;; stop if we see a named coverpoint @@ -4208,12 +4267,13 @@ Uses `verilog-scan' cache." (not (or (looking-at "\\<") (forward-word -1))) ;; stop if we see an assertion (perhaps labeled) (and - (looking-at "\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)") + (looking-at "\\(\\w+\\W*:\\W*\\)?\\(\\<\\(assert\\|assume\\|cover\\)\\>\\s-+\\<property\\>\\)\\|\\(\\<assert\\>\\)") (progn (setq h (point)) (save-excursion (verilog-backward-token) - (if (looking-at verilog-label-re) + (if (and (looking-at verilog-label-re) + (not (looking-at verilog-end-block-re))) (setq h (point)))) (goto-char h))) ;; stop if we see an extended complete reg, perhaps a complete one @@ -4715,8 +4775,8 @@ primitive or interface named NAME." (setq str (concat " // else: !assert " str )) (throw 'skip 1))))))))) - (; always_comb, always_ff, always_latch - (or (match-end 4) (match-end 5) (match-end 6)) + (; always, always_comb, always_latch w/o @... + (match-end 5) (goto-char (match-end 0)) (setq there (point)) (setq err nil) @@ -4800,6 +4860,9 @@ primitive or interface named NAME." (throw 'skip 1)))) )))) (end-of-line) + (if kill-existing-comment + (verilog-kill-existing-comment)) + (delete-horizontal-space) (insert (concat " // " string )))) (;- this is end{function,generate,task,module,primitive,table,generate} @@ -5138,7 +5201,7 @@ becomes: (defun verilog-preprocess (&optional command filename) "Preprocess the buffer, similar to `compile', but put output in Verilog-Mode. Takes optional COMMAND or defaults to `verilog-preprocessor', and -FILENAME to find directory to run in, or defaults to `buffer-file-name`." +FILENAME to find directory to run in, or defaults to `buffer-file-name'." (interactive (list (let ((default (verilog-expand-command verilog-preprocessor))) @@ -5161,7 +5224,8 @@ FILENAME to find directory to run in, or defaults to `buffer-file-name`." ;; We should use font-lock-ensure in preference to ;; font-lock-fontify-buffer, but IIUC the problem this is supposed to ;; solve only appears in Emacsen older than font-lock-ensure anyway. - (when fontlocked (font-lock-fontify-buffer))))))) + ;; So avoid bytecomp's interactive-only by going through intern. + (when fontlocked (funcall (intern "font-lock-fontify-buffer")))))))) ;; @@ -5530,8 +5594,12 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)." ((equal (char-after) ?\{) ;; block type returned based on outer constraint { or inner (if (verilog-at-constraint-p) - (cond (inconstraint (throw 'nesting 'constraint)) - (t (throw 'nesting 'statement))))) + (cond (inconstraint + (beginning-of-line nil) + (skip-chars-forward " \t") + (throw 'nesting 'constraint)) + (t + (throw 'nesting 'statement))))) ((equal (char-after) ?\}) (let (par-pos (there (verilog-at-close-constraint-p))) @@ -6044,7 +6112,16 @@ Optional BOUND limits search." (save-match-data (save-excursion (verilog-re-search-backward "\\((\\*\\)\\|\\(\\*)\\)" nil 'move) - (numberp (match-beginning 1))))) + (cond + ((match-end 1) + (progn (goto-char (match-end 1)) + (not (looking-at "\\s-*)"))) + nil) + ((match-end 2) + (progn (goto-char (match-beginning 2)) + (not (looking-at "(\\s-*"))) + nil) + (t nil))))) (defun verilog-in-parameter-p () "Return true if point is in a parameter assignment #( p1=1, p2=5)." @@ -6176,7 +6253,7 @@ Return >0 for nested struct." )) ;; if first word token not keyword, it maybe the instance name ;; check next word token - (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\w+") + (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\S-+") (progn (verilog-beg-of-statement) (if (looking-at (concat "\\<\\(constraint\\|" "\\(?:\\w+\\s-*:\\s-*\\)?\\(coverpoint\\|cross\\)" @@ -6275,8 +6352,8 @@ Return >0 for nested struct." (goto-char (- (point) 2)) t) ;; Let nth 4 state handle the rest ((and (not (bobp)) - (= (char-before) ?\)) - (= (char-before (1- (point))) ?\*)) + (verilog-looking-back "\\*)" nil) + (not (verilog-looking-back "(\\s-*\\*)" nil))) (goto-char (- (point) 2)) (if (search-backward "(*" nil t) (progn @@ -6320,7 +6397,8 @@ Return >0 for nested struct." (progn (goto-char h) nil)))) - ((looking-at "(\\*") + ((and (looking-at "(\\*") ;; attribute start, but not an event (*) or (* ) + (not (looking-at "(\\*\\s-*)"))) (progn (setq h (point)) (goto-char (match-end 0)) @@ -6375,7 +6453,6 @@ Only look at a few lines to determine indent level." (cond ((or (= (preceding-char) ?\,) - (= (preceding-char) ?\]) (save-excursion (verilog-beg-of-statement-1) (looking-at verilog-declaration-re))) @@ -7830,6 +7907,48 @@ Signals must be in standard (base vector) form." (nreverse out-list))))) ;;(verilog-signals-not-in '(("A" "") ("B" "") ("DEL" "[2:3]")) '(("DEL" "") ("EXT" ""))) +(defun verilog-signals-not-in-struct (in-list not-list) + "Return list of signals in IN-LIST that aren't also in NOT-LIST. +Also remove any duplicates in IN-LIST. +Any structure in not-list will remove all members in in-list. +Signals must be in standard (base vector) form." + (cond ((eval-when-compile (fboundp 'make-hash-table)) + (let ((ht (make-hash-table :test 'equal :rehash-size 4.0)) + out-list addit nm) + (while not-list + (puthash (car (car not-list)) t ht) + (setq not-list (cdr not-list))) + (while in-list + (setq nm (verilog-sig-name (car in-list))) + (when (not (gethash nm ht)) + (setq addit t) + (while (string-match "^\\([^\\].*\\)\\.[^.]+$" nm) + (setq nm (match-string 1 nm)) + (setq addit (and addit + (not (gethash nm ht))))) + (when addit + (setq out-list (cons (car in-list) out-list)) + (puthash (verilog-sig-name (car in-list)) t ht))) + (setq in-list (cdr in-list))) + (nreverse out-list))) + ;; Slower Fallback if no hash tables (pre Emacs 21.1/XEmacs 21.4) + (t + (let (out-list addit nm) + (while in-list + (setq nm (verilog-sig-name (car in-list))) + (when (and (not (assoc nm not-list)) + (not (assoc nm out-list))) + (setq addit t) + (while (string-match "^\\([^\\].*\\)\\.[^.]+$" nm) + (setq nm (match-string 1 nm)) + (setq addit (and addit + (not (assoc nm not-list))))) + (when addit + (setq out-list (cons (car in-list) out-list)))) + (setq in-list (cdr in-list))) + (nreverse out-list))))) +;;(verilog-signals-not-in-struct '(("A" "") ("B" "") ("DEL.SUB.A" "[2:3]")) '(("DEL.SUB" "") ("EXT" ""))) + (defun verilog-signals-memory (in-list) "Return list of signals in IN-LIST that are memorized (multidimensional)." (let (out-list) @@ -8281,10 +8400,9 @@ Return an array of [outputs inouts inputs wire reg assign const]." typedefed nil multidim nil ptype nil modport nil expect-signal 'sigs-assign sig-paren paren)) ((member keywd '("localparam" "genvar")) - (unless io - (setq vec nil enum nil rvalue nil signed nil - typedefed nil multidim nil ptype nil modport nil - expect-signal 'sigs-const sig-paren paren))) + (setq vec nil enum nil rvalue nil signed nil + typedefed nil multidim nil ptype nil modport nil + expect-signal 'sigs-const sig-paren paren)) ((member keywd '("signed" "unsigned")) (setq signed keywd)) ((member keywd '("assert" "assume" "cover" "expect" "restrict")) @@ -9117,9 +9235,9 @@ Optionally associate it with the specified enumeration ENUMNAME." (add-to-list (make-local-variable enumvar) defname))))) (defun verilog-read-defines (&optional filename recurse subcall) - "Read `defines and parameters for the current file, or optional FILENAME. + "Read \\=`defines and parameters for the current file, or optional FILENAME. If the filename is provided, `verilog-library-flags' will be used to -resolve it. If optional RECURSE is non-nil, recurse through `includes. +resolve it. If optional RECURSE is non-nil, recurse through \\=`includes. Parameters must be simple assignments to constants, or have their own \"parameter\" label rather than a list of parameters. Thus: @@ -9202,8 +9320,8 @@ warning message, you need to add to your init file: (forward-comment 99999))))))) (defun verilog-read-includes () - "Read `includes for the current file. -This will find all of the `includes which are at the beginning of lines, + "Read \\=`includes for the current file. +This will find all of the \\=`includes which are at the beginning of lines, ignoring any ifdefs or multiline comments around them. `verilog-read-defines' is then performed on the current and each included file. @@ -9225,11 +9343,11 @@ variable over and over when many modules are compiled together, put a test around the inside each include file: foo.v (an include file): - `ifdef _FOO_V // include if not already included - `else - `define _FOO_V + \\=`ifdef _FOO_V // include if not already included + \\=`else + \\=`define _FOO_V ... contents of file - `endif // _FOO_V" + \\=`endif // _FOO_V" ;;slow: (verilog-read-defines nil t) (save-excursion (verilog-getopt-flags) @@ -11066,7 +11184,7 @@ Limitations: `verilog-library-extensions', and being found in the same directory, or by changing the variable `verilog-library-flags' or `verilog-library-directories'. Macros `modname are translated through the - vh-{name} Emacs variable, if that is not found, it just ignores the `. + vh-{name} Emacs variable, if that is not found, it just ignores the \\=`. In templates you must have one signal per line, ending in a ), or ));, and have proper () nesting, including a final ); to end the template. @@ -12134,20 +12252,26 @@ You may also provide an optional third argument regular expression, in which case only signals which have that pin direction and data type matching that regular expression will be included. This matches against everything before the signal name -in the declaration, for example against \"input\" (single bit), -\"output logic\" (direction and type) or \"output -[1:0]\" (direction and implicit type). You also probably want to -skip spaces in your regexp. +in the declaration, for example against \"input\" (single +bit), \"output logic\" (direction and type) or +\"output [1:0]\" (direction and implicit type). You also +probably want to skip spaces in your regexp. For example, the below will result in matching the output \"o\" against the previous example's module: - /*AUTOINOUTMODULE(\"ExampMain\",\"\",\"^output.*\")*/" + /*AUTOINOUTMODULE(\"ExampMain\",\"\",\"^output.*\")*/ + +You may also provide an optional fourth argument regular +expression, which if not \"\" only signals which do NOT match +that expression are included." + ;; Beware spacing of quotes in above as can mess up Emacs indenter (save-excursion - (let* ((params (verilog-read-auto-params 1 3)) + (let* ((params (verilog-read-auto-params 1 4)) (submod (nth 0 params)) (regexp (nth 1 params)) (direction-re (nth 2 params)) + (not-re (nth 3 params)) submodi) ;; Lookup position, etc of co-module ;; Note this may raise an error @@ -12182,20 +12306,24 @@ against the previous example's module: (append (verilog-decls-get-interfaces moddecls))))) (forward-line 1) (setq sig-list-i (verilog-signals-edit-wire-reg - (verilog-signals-matching-dir-re - (verilog-signals-matching-regexp sig-list-i regexp) - "input" direction-re)) + (verilog-signals-not-matching-regexp + (verilog-signals-matching-dir-re + (verilog-signals-matching-regexp sig-list-i regexp) + "input" direction-re) not-re)) sig-list-o (verilog-signals-edit-wire-reg - (verilog-signals-matching-dir-re - (verilog-signals-matching-regexp sig-list-o regexp) - "output" direction-re)) + (verilog-signals-not-matching-regexp + (verilog-signals-matching-dir-re + (verilog-signals-matching-regexp sig-list-o regexp) + "output" direction-re) not-re)) sig-list-io (verilog-signals-edit-wire-reg + (verilog-signals-not-matching-regexp + (verilog-signals-matching-dir-re + (verilog-signals-matching-regexp sig-list-io regexp) + "inout" direction-re) not-re)) + sig-list-if (verilog-signals-not-matching-regexp (verilog-signals-matching-dir-re - (verilog-signals-matching-regexp sig-list-io regexp) - "inout" direction-re)) - sig-list-if (verilog-signals-matching-dir-re - (verilog-signals-matching-regexp sig-list-if regexp) - "interface" direction-re)) + (verilog-signals-matching-regexp sig-list-if regexp) + "interface" direction-re) not-re)) (when v2k (verilog-repair-open-comma)) (when (or sig-list-i sig-list-o sig-list-io sig-list-if) (verilog-insert-indent "// Beginning of automatic in/out/inouts (from specific module)\n") @@ -12262,15 +12390,20 @@ You may also provide an optional third argument regular expression, in which case only signals which have that pin direction and data type matching that regular expression will be included. This matches against everything before the signal name -in the declaration, for example against \"input\" (single bit), -\"output logic\" (direction and type) or \"output -[1:0]\" (direction and implicit type). You also probably want to -skip spaces in your regexp. +in the declaration, for example against \"input\" (single +bit), \"output logic\" (direction and type) +or \"output [1:0]\" (direction and implicit type). You also +probably want to skip spaces in your regexp. For example, the below will result in matching the output \"o\" against the previous example's module: - /*AUTOINOUTCOMP(\"ExampMain\",\"\",\"^output.*\")*/" + /*AUTOINOUTCOMP(\"ExampMain\",\"\",\"^output.*\")*/ + +You may also provide an optional fourth argument regular +expression, which if not \"\" only signals which do NOT match +that expression are included." + ;; Beware spacing of quotes in above as can mess up Emacs indenter (verilog-auto-inout-module t nil)) (defun verilog-auto-inout-in () @@ -12515,7 +12648,7 @@ driver/monitor using AUTOINST in the testbench." (defun verilog-auto-insert-lisp () "Expand AUTOINSERTLISP statements, as part of \\[verilog-auto]. The Lisp code provided is called before other AUTOS are expanded, -and the Lisp code generally will call `insert` to insert text +and the Lisp code generally will call `insert' to insert text into the current file beginning on the line after the AUTOINSERTLISP. @@ -12580,7 +12713,7 @@ text: (defun verilog-auto-insert-last () "Expand AUTOINSERTLAST statements, as part of \\[verilog-auto]. The Lisp code provided is called after all other AUTOS have been -expanded, and the Lisp code generally will call `insert` to +expanded, and the Lisp code generally will call `insert' to insert text into the current file beginning on the line after the AUTOINSERTLAST. @@ -12621,8 +12754,8 @@ Limitations: lists. AUTOSENSE will thus exclude them, and add a /*memory or*/ comment. Constant signals: - AUTOSENSE cannot always determine if a `define is a constant or a signal - (it could be in an include file for example). If a `define or other signal + AUTOSENSE cannot always determine if a \\=`define is a constant or a signal + (it could be in an include file for example). If a \\=`define or other signal is put into the AUTOSENSE list and is not desired, use the AUTO_CONSTANT declaration anywhere in the module (parenthesis are required): @@ -12737,8 +12870,8 @@ them to a one. AUTORESET may try to reset arrays or structures that cannot be reset by a simple assignment, resulting in compile errors. This is a feature to be taken as a hint that you need to reset these -signals manually (or put them into a \"`ifdef NEVER signal<=`0; -`endif\" so Verilog-Mode ignores them.) +signals manually (or put them into a \"\\=`ifdef NEVER signal<=\\=`0; +\\=`endif\" so Verilog-Mode ignores them.) An example: @@ -12793,14 +12926,15 @@ Typing \\[verilog-auto] will make this into: (verilog-re-search-backward-quick "\\(@\\|\\<\\(always\\(_latch\\|_ff\\|_comb\\)?\\)\\>\\)" nil t) (setq sigss (verilog-read-always-signals))) (setq dly-list (verilog-alw-get-outputs-delayed sigss)) - (setq sig-list (verilog-signals-not-in (append - (verilog-alw-get-outputs-delayed sigss) - (when (or (not (verilog-alw-get-uses-delayed sigss)) - verilog-auto-reset-blocking-in-non) - (verilog-alw-get-outputs-immediate sigss))) - (append - (verilog-alw-get-temps sigss) - prereset-sigs))) + (setq sig-list (verilog-signals-not-in-struct + (append + (verilog-alw-get-outputs-delayed sigss) + (when (or (not (verilog-alw-get-uses-delayed sigss)) + verilog-auto-reset-blocking-in-non) + (verilog-alw-get-outputs-immediate sigss))) + (append + (verilog-alw-get-temps sigss) + prereset-sigs))) (setq sig-list (sort sig-list `verilog-signals-sort-compare)) (when sig-list (insert "\n"); @@ -12907,27 +13041,27 @@ Typing \\[verilog-auto] will make this into: (defun verilog-auto-undef () "Expand AUTOUNDEF statements, as part of \\[verilog-auto]. -Take any `defines since the last AUTOUNDEF in the current file -and create `undefs for them. This is used to insure that -file-local defines do not pollute the global `define name space. +Take any \\=`defines since the last AUTOUNDEF in the current file +and create \\=`undefs for them. This is used to insure that +file-local defines do not pollute the global \\=`define name space. Limitations: - AUTOUNDEF presumes any identifier following `define is the - name of a define. Any `ifdefs are ignored. + AUTOUNDEF presumes any identifier following \\=`define is the + name of a define. Any \\=`ifdefs are ignored. - AUTOUNDEF suppresses creating an `undef for any define that was - `undefed before the AUTOUNDEF. This may be used to work around - the ignoring of `ifdefs as shown below. + AUTOUNDEF suppresses creating an \\=`undef for any define that was + \\=`undefed before the AUTOUNDEF. This may be used to work around + the ignoring of \\=`ifdefs as shown below. An example: - `define XX_FOO - `define M_BAR(x) - `define M_BAZ + \\=`define XX_FOO + \\=`define M_BAR(x) + \\=`define M_BAZ ... - `ifdef NEVER - `undef M_BAZ // Emacs will see this and not `undef M_BAZ - `endif + \\=`ifdef NEVER + \\=`undef M_BAZ // Emacs will see this and not \\=`undef M_BAZ + \\=`endif ... /*AUTOUNDEF*/ @@ -12936,8 +13070,8 @@ Typing \\[verilog-auto] will make this into: ... /*AUTOUNDEF*/ // Beginning of automatic undefs - `undef XX_FOO - `undef M_BAR + \\=`undef XX_FOO + \\=`undef M_BAR // End of automatics You may also provide an optional regular expression, in which case only @@ -13332,12 +13466,12 @@ Using \\[describe-function], see also: `verilog-auto-reset' for AUTORESET flop resets `verilog-auto-sense' for AUTOSENSE or AS always sensitivity lists `verilog-auto-tieoff' for AUTOTIEOFF output tieoffs - `verilog-auto-undef' for AUTOUNDEF `undef of local `defines + `verilog-auto-undef' for AUTOUNDEF \\=`undef of local \\=`defines `verilog-auto-unused' for AUTOUNUSED unused inputs/inouts `verilog-auto-wire' for AUTOWIRE instantiation wires - `verilog-read-defines' for reading `define values - `verilog-read-includes' for reading `includes + `verilog-read-defines' for reading \\=`define values + `verilog-read-includes' for reading \\=`includes If you have bugs with these autos, please file an issue at URL `http://www.veripool.org/verilog-mode' or contact the AUTOAUTHOR diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el index eb234944904..f85f4c4fada 100644 --- a/lisp/progmodes/vhdl-mode.el +++ b/lisp/progmodes/vhdl-mode.el @@ -8270,7 +8270,7 @@ case fixing to a region. Calls functions `vhdl-indent-buffer', (setq end (save-excursion (goto-char end) (point-marker))) (save-excursion ; remove DOS EOL characters in UNIX file (goto-char beg) - (while (search-forward "
" nil t) + (while (search-forward "\r" nil t) (replace-match "" nil t))) (when (nth 0 vhdl-beautify-options) (vhdl-fixup-whitespace-region beg end t)) (when (nth 1 vhdl-beautify-options) (vhdl-fix-statement-region beg end)) diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index afcbbf52264..89a9cf5d5ea 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -73,13 +73,17 @@ "Return a string used to group a set of locations. This is typically the filename.") +(cl-defgeneric xref-location-line (_location) + "Return the line number corresponding to the location." + nil) + ;;;; Commonly needed location classes are defined here: ;; FIXME: might be useful to have an optional "hint" i.e. a string to ;; search for in case the line number is sightly out of date. (defclass xref-file-location (xref-location) ((file :type string :initarg :file) - (line :type fixnum :initarg :line) + (line :type fixnum :initarg :line :reader xref-location-line) (column :type fixnum :initarg :column)) :documentation "A file location is a file/line/column triple. Line numbers start from 1 and columns from 0.") @@ -139,38 +143,13 @@ actual location is not known.") (cl-defmethod xref-location-group ((_ xref-bogus-location)) "(No location)") -;; This should be in elisp-mode.el, but it's preloaded, and we can't -;; preload defclass and defmethod (at least, not yet). -(defclass xref-elisp-location (xref-location) - ((symbol :type symbol :initarg :symbol) - (type :type symbol :initarg :type) - (file :type string :initarg :file - :reader xref-location-group)) - :documentation "Location of an Emacs Lisp symbol definition.") - -(defun xref-make-elisp-location (symbol type file) - (make-instance 'xref-elisp-location :symbol symbol :type type :file file)) - -(cl-defmethod xref-location-marker ((l xref-elisp-location)) - (with-slots (symbol type file) l - (let ((buffer-point - (pcase type - (`defun (find-function-search-for-symbol symbol nil file)) - ((or `defvar `defface) - (find-function-search-for-symbol symbol type file)) - (`feature - (cons (find-file-noselect file) 1))))) - (with-current-buffer (car buffer-point) - (goto-char (or (cdr buffer-point) (point-min))) - (point-marker))))) - ;;; Cross-reference (defclass xref--xref () ((description :type string :initarg :description :reader xref--xref-description) - (location :type xref-location :initarg :location + (location :initarg :location :reader xref--xref-location)) :comment "An xref is used to display and locate constructs like variables or functions.") @@ -203,6 +182,9 @@ found, return nil. (apropos PATTERN): Find all symbols that match PATTERN. PATTERN is a regexp. + (matches REGEXP): Find all matches for REGEXP in the related +files. REGEXP is an Emacs regular expression. + IDENTIFIER can be any string returned by `xref-identifier-at-point-function', or from the table returned by `xref-identifier-completion-table-function'. @@ -276,6 +258,32 @@ backward." :type 'integer :version "25.1") +(defcustom xref-prompt-for-identifier '(not xref-find-definitions + xref-find-definitions-other-window + xref-find-definitions-other-frame) + "When t, always prompt for the identifier name. + +When nil, prompt only when there's no value at point we can use, +or when the command has been called with the prefix argument. + +Otherwise, it's a list of xref commands which will prompt +anyway (the value at point, if any, will be used as the default). + +If the list starts with `not', the meaning of the rest of the +elements is negated." + :type '(choice (const :tag "always" t) + (const :tag "auto" nil) + (set :menu-tag "command specific" :tag "commands" + :value (not) + (const :tag "Except" not) + (repeat :inline t (symbol :tag "command")))) + :version "25.1") + +(defcustom xref-pulse-on-jump t + "When non-nil, momentarily highlight jump locations." + :type 'boolean + :version "25.1") + (defvar xref--marker-ring (make-ring xref-marker-ring-length) "Ring of markers to implement the marker stack.") @@ -294,7 +302,20 @@ backward." (switch-to-buffer (or (marker-buffer marker) (error "The marked buffer has been deleted"))) (goto-char (marker-position marker)) - (set-marker marker nil nil)))) + (set-marker marker nil nil) + (xref--maybe-pulse)))) + +(defun xref--maybe-pulse () + (when xref-pulse-on-jump + (let (beg end) + (save-excursion + (back-to-indentation) + (if (eolp) + (setq beg (line-beginning-position) + end (1+ (point))) + (setq beg (point) + end (line-end-position)))) + (pulse-momentary-highlight-region beg end 'next-error)))) ;; etags.el needs this (defun xref-clear-marker-stack () @@ -329,7 +350,8 @@ WINDOW controls how the buffer is displayed: (cl-ecase window ((nil) (switch-to-buffer (current-buffer))) (window (pop-to-buffer (current-buffer) t)) - (frame (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t))))) + (frame (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t)))) + (xref--maybe-pulse)) ;;; XREF buffer (part of the UI) @@ -365,6 +387,7 @@ Used for temporary buffers.") (with-selected-window (display-buffer (current-buffer) other-window) (goto-char pos) (recenter recenter-arg) + (xref--maybe-pulse) (let ((buf (current-buffer)) (win (selected-window))) (with-current-buffer xref-buf @@ -406,7 +429,9 @@ Used for temporary buffers.") (xref-show-location-at-point)) (defun xref--location-at-point () - (get-text-property (point) 'xref-location)) + (save-excursion + (back-to-indentation) + (get-text-property (point) 'xref-location))) (defvar-local xref--window nil "ACTION argument to call `display-buffer' with.") @@ -414,7 +439,6 @@ Used for temporary buffers.") (defun xref-goto-xref () "Jump to the xref on the current line and bury the xref buffer." (interactive) - (back-to-indentation) (let ((loc (or (xref--location-at-point) (user-error "No reference at point"))) (window xref--window)) @@ -435,7 +459,22 @@ Used for temporary buffers.") (define-derived-mode xref--xref-buffer-mode special-mode "XREF" "Mode for displaying cross-references." - (setq buffer-read-only t)) + (setq buffer-read-only t) + (setq next-error-function #'xref--next-error-function) + (setq next-error-last-buffer (current-buffer))) + +(defun xref--next-error-function (n reset?) + (when reset? + (goto-char (point-min))) + (let ((backward (< n 0)) + (n (abs n)) + (loc nil)) + (dotimes (_ n) + (setq loc (xref--search-property 'xref-location backward))) + (cond (loc + (xref--pop-to-location loc)) + (t + (error "No %s xref" (if backward "previous" "next")))))) (defun xref-quit (&optional kill) "Bury temporarily displayed buffers, then quit the current window. @@ -485,22 +524,35 @@ meantime are preserved." XREF-ALIST is of the form ((GROUP . (XREF ...)) ...). Where GROUP is a string for decoration purposes and XREF is an `xref--xref' object." - (cl-loop for ((group . xrefs) . more1) on xref-alist do - (xref--insert-propertized '(face bold) group "\n") + (require 'compile) ; For the compilation faces. + (cl-loop for ((group . xrefs) . more1) on xref-alist + for max-line-width = + (cl-loop for xref in xrefs + maximize (let ((line (xref-location-line + (oref xref :location)))) + (length (and line (format "%d" line))))) + for line-format = (and max-line-width + (format "%%%dd: " max-line-width)) + do + (xref--insert-propertized '(face compilation-info) group "\n") (cl-loop for (xref . more2) on xrefs do - (insert " ") (with-slots (description location) xref - (xref--insert-propertized - (list 'xref-location location - 'face 'font-lock-keyword-face - 'mouse-face 'highlight - 'keymap xref--button-map - 'help-echo - (concat "mouse-2: display in another window, " - "RET or mouse-1: follow reference")) - description)) - (when (or more1 more2) - (insert "\n"))))) + (let* ((line (xref-location-line location)) + (prefix + (if line + (propertize (format line-format line) + 'face 'compilation-line-number) + " "))) + (xref--insert-propertized + (list 'xref-location location + ;; 'face 'font-lock-keyword-face + 'mouse-face 'highlight + 'keymap xref--button-map + 'help-echo + (concat "mouse-2: display in another window, " + "RET or mouse-1: follow reference")) + prefix description))) + (insert "\n")))) (defun xref--analyze (xrefs) "Find common filenames in XREFS. @@ -556,14 +608,22 @@ Return an alist of the form ((FILENAME . (XREF ...)) ...)." `((window . ,window) (temporary-buffers . ,tb))))))) +(defun xref--prompt-p (command) + (or (eq xref-prompt-for-identifier t) + (if (eq (car xref-prompt-for-identifier) 'not) + (not (memq command (cdr xref-prompt-for-identifier))) + (memq command xref-prompt-for-identifier)))) + (defun xref--read-identifier (prompt) "Return the identifier at point or read it from the minibuffer." (let ((id (funcall xref-identifier-at-point-function))) - (cond ((or current-prefix-arg (not id)) + (cond ((or current-prefix-arg + (not id) + (xref--prompt-p this-command)) (completing-read prompt (funcall xref-identifier-completion-table-function) - nil t id - 'xref--read-identifier-history)) + nil nil nil + 'xref--read-identifier-history id)) (t id)))) @@ -599,15 +659,22 @@ With prefix argument, prompt for the identifier." (interactive (list (xref--read-identifier "Find references of: "))) (xref--show-xrefs identifier 'references identifier nil)) +;;;###autoload +(defun xref-find-regexp (regexp) + "Find all matches for REGEXP." + ;; FIXME: Prompt for directory. + (interactive (list (xref--read-identifier "Find regexp: "))) + (xref--show-xrefs regexp 'matches regexp nil)) + (declare-function apropos-parse-pattern "apropos" (pattern)) ;;;###autoload (defun xref-find-apropos (pattern) "Find all meaningful symbols that match PATTERN. The argument has the same meaning as in `apropos'." - (interactive (list (read-from-minibuffer + (interactive (list (read-string "Search for pattern (word list or regexp): " - nil nil nil 'xref--read-pattern-history))) + nil 'xref--read-pattern-history))) (require 'apropos) (xref--show-xrefs pattern 'apropos (apropos-parse-pattern @@ -650,6 +717,99 @@ and just use etags." (setq-local xref-identifier-completion-table-function (cdr xref-etags-mode--saved)))) +(declare-function semantic-symref-find-references-by-name "semantic/symref") +(declare-function semantic-symref-find-text "semantic/symref") +(declare-function semantic-find-file-noselect "semantic/fw") +(declare-function rgrep-default-command "grep") + +(defun xref-collect-references (symbol dir) + "Collect references to SYMBOL inside DIR. +This function uses the Semantic Symbol Reference API, see +`semantic-symref-find-references-by-name' for details on which +tools are used, and when." + (cl-assert (directory-name-p dir)) + (require 'semantic/symref) + (defvar semantic-symref-tool) + (let* ((default-directory dir) + (semantic-symref-tool 'detect) + (res (semantic-symref-find-references-by-name symbol 'subdirs)) + (hits (and res (oref res :hit-lines))) + (orig-buffers (buffer-list))) + (unwind-protect + (delq nil + (mapcar (lambda (hit) (xref--collect-match + hit (format "\\_<%s\\_>" (regexp-quote symbol)))) + hits)) + (mapc #'kill-buffer + (cl-set-difference (buffer-list) orig-buffers))))) + +(defun xref-collect-matches (regexp dir) + "Collect matches for REGEXP inside DIR using rgrep." + (cl-assert (directory-name-p dir)) + (require 'semantic/fw) + (grep-compute-defaults) + (defvar grep-find-template) + (let* ((grep-find-template + (replace-regexp-in-string + ;; Override the use ot '--color=always' on MS-Windows. + "--color=always" "" + (replace-regexp-in-string "-e " "-E " + grep-find-template t t) + t t)) + (command (rgrep-default-command (xref--regexp-to-extended regexp) + "*.*" dir)) + (orig-buffers (buffer-list)) + (buf (get-buffer-create " *xref-grep*")) + (grep-re (caar grep-regexp-alist)) + hits) + (with-current-buffer buf + (erase-buffer) + (when (eq (call-process-shell-command command nil t) 0) + (goto-char (point-min)) + (while (re-search-forward grep-re nil t) + (push (cons (string-to-number (match-string 2)) + (match-string 1)) + hits)))) + (unwind-protect + (delq nil + (mapcar (lambda (hit) (xref--collect-match hit regexp)) hits)) + (mapc #'kill-buffer + (cl-set-difference (buffer-list) orig-buffers))))) + +(defun xref--regexp-to-extended (str) + (replace-regexp-in-string + ;; FIXME: Add tests. Move to subr.el, make a public function. + ;; Maybe error on Emacs-only constructs. + "\\(?:\\\\\\\\\\)*\\(?:\\\\[][]\\)?\\(?:\\[.+?\\]\\|\\(\\\\?[(){}|]\\)\\)" + (lambda (str) + (cond + ((not (match-beginning 1)) + str) + ((eq (length (match-string 1 str)) 2) + (concat (substring str 0 (match-beginning 1)) + (substring (match-string 1 str) 1 2))) + (t + (concat (substring str 0 (match-beginning 1)) + "\\" + (match-string 1 str))))) + str t t)) + +(defun xref--collect-match (hit regexp) + (pcase-let* ((`(,line . ,file) hit) + (buf (or (find-buffer-visiting file) + (semantic-find-file-noselect file)))) + (with-current-buffer buf + (save-excursion + (goto-char (point-min)) + (forward-line (1- line)) + (when (re-search-forward regexp (line-end-position) t) + (goto-char (match-beginning 0)) + (xref-make (buffer-substring + (line-beginning-position) + (line-end-position)) + (xref-make-file-location file line + (current-column)))))))) + (provide 'xref) diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 0a2c214690f..e76b332ee3c 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el @@ -809,7 +809,7 @@ Please send all bug fixes and enhancements to ;; on next page. Visually, valid values are (the character `+' at right of ;; each column indicates that a line is printed): ;; -;; `nil' `follow' `full' `full-follow' +;; nil `follow' `full' `full-follow' ;; Current Page -------- ----------- --------- ---------------- ;; 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + ;; 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + @@ -2117,7 +2117,7 @@ See also documentation for `ps-zebra-stripes' and `ps-zebra-stripe-height'." Visually, valid values are (the character `+' at right of each column indicates that a line is printed): - `nil' `follow' `full' `full-follow' + nil `follow' `full' `full-follow' Current Page -------- ----------- --------- ---------------- 1 XXXXX + 1 XXXXXXXX + 1 XXXXXX + 1 XXXXXXXXXXXXX + 2 XXXXX + 2 XXXXXXXX + 2 XXXXXX + 2 XXXXXXXXXXXXX + diff --git a/lisp/recentf.el b/lisp/recentf.el index 37937ec1be1..89c1517e7f6 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -294,7 +294,7 @@ They are successively passed a file name to transform it." (function :tag "Other function"))))) (defcustom recentf-show-file-shortcuts-flag t - "Whether to show ``[N]'' for the Nth item up to 10. + "Whether to show \"[N]\" for the Nth item up to 10. If non-nil, `recentf-open-files' will show labels for keys that can be used as shortcuts to open the Nth file." :group 'recentf diff --git a/lisp/replace.el b/lisp/replace.el index 8e71615ca14..1bf134302e4 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -136,6 +136,16 @@ See `replace-regexp' and `query-replace-regexp-eval'.") (defun query-replace-descr (string) (mapconcat 'isearch-text-char-description string "")) +(defun query-replace--split-string (string) + "Split string STRING at a character with property `separator'" + (let* ((length (length string)) + (split-pos (text-property-any 0 length 'separator t string))) + (if (not split-pos) + (substring-no-properties string) + (cl-assert (not (text-property-any (1+ split-pos) length 'separator t string))) + (cons (substring-no-properties string 0 split-pos) + (substring-no-properties string (1+ split-pos) length))))) + (defun query-replace-read-from (prompt regexp-flag) "Query and return the `from' argument of a query-replace operation. The return value can also be a pair (FROM . TO) indicating that the user @@ -174,32 +184,30 @@ wants to replace FROM with TO." (read-regexp prompt nil 'query-replace-from-to-history) (read-from-minibuffer prompt nil nil nil 'query-replace-from-to-history - (car (if regexp-flag regexp-search-ring search-ring)) t))))) + (car (if regexp-flag regexp-search-ring search-ring)) t)))) + (to)) (if (and (zerop (length from)) query-replace-defaults) (cons (caar query-replace-defaults) (query-replace-compile-replacement (cdar query-replace-defaults) regexp-flag)) - (let* ((to (if (and (string-match separator from) - (get-text-property (match-beginning 0) 'separator from)) - (substring-no-properties from (match-end 0)))) - (from (if to (substring-no-properties from 0 (match-beginning 0)) - (substring-no-properties from)))) - (add-to-history query-replace-from-history-variable from nil t) - ;; Warn if user types \n or \t, but don't reject the input. - (and regexp-flag - (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from) - (let ((match (match-string 3 from))) - (cond - ((string= match "\\n") - (message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead")) - ((string= match "\\t") - (message "Note: `\\t' here doesn't match a tab; to do that, just type TAB"))) - (sit-for 2))) - (if (not to) - from - (add-to-history query-replace-to-history-variable to nil t) - (add-to-history 'query-replace-defaults (cons from to) nil t) - (cons from (query-replace-compile-replacement to regexp-flag)))))))) + (setq from (query-replace--split-string from)) + (when (consp from) (setq to (cdr from) from (car from))) + (add-to-history query-replace-from-history-variable from nil t) + ;; Warn if user types \n or \t, but don't reject the input. + (and regexp-flag + (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from) + (let ((match (match-string 3 from))) + (cond + ((string= match "\\n") + (message "Note: `\\n' here doesn't match a newline; to do that, type C-q C-j instead")) + ((string= match "\\t") + (message "Note: `\\t' here doesn't match a tab; to do that, just type TAB"))) + (sit-for 2))) + (if (not to) + from + (add-to-history query-replace-to-history-variable to nil t) + (add-to-history 'query-replace-defaults (cons from to) nil t) + (cons from (query-replace-compile-replacement to regexp-flag))))))) (defun query-replace-compile-replacement (to regexp-flag) "Maybe convert a regexp replacement TO to Lisp. diff --git a/lisp/saveplace.el b/lisp/saveplace.el index 4c53632affd..fe54743e393 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el @@ -50,28 +50,10 @@ visiting file FILENAME goes automatically to position POSITION rather than the beginning of the buffer. This alist is saved between Emacs sessions.") -(defcustom save-place nil - "Non-nil means automatically save place in each file. -This means when you visit a file, point goes to the last place -where it was when you previously visited the same file. - -If you wish your place in any file to always be automatically -saved, set this to t using the Customize facility, or put the -following code in your init file: - -\(setq-default save-place t) -\(require 'saveplace)" - :type 'boolean - :require 'saveplace - :group 'save-place) - -(make-variable-buffer-local 'save-place) - (defcustom save-place-file (locate-user-emacs-file "places" ".emacs-places") "Name of the file that records `save-place-alist' value." :version "24.4" ; added locate-user-emacs-file - :type 'file - :group 'save-place) + :type 'file) (defcustom save-place-version-control nil "Controls whether to make numbered backups of master save-place file. @@ -82,8 +64,7 @@ value of `version-control'." :type '(radio (const :tag "Unconditionally" t) (const :tag "For VC Files" nil) (const never) - (const :tag "Use value of `version-control'" nospecial)) - :group 'save-place) + (const :tag "Use value of `version-control'" nospecial))) (defvar save-place-loaded nil "Non-nil means that the `save-place-file' has been loaded.") @@ -92,8 +73,7 @@ value of `version-control'." "Maximum number of entries to retain in the list; nil means no limit." :version "24.1" ; nil -> 400 :type '(choice (integer :tag "Entries" :value 1) - (const :tag "No Limit" nil)) - :group 'save-place) + (const :tag "No Limit" nil))) (defcustom save-place-forget-unreadable-files t "Non-nil means forget place in unreadable files. @@ -106,7 +86,7 @@ You may do this anytime by calling the complementary function, `save-place-forget-unreadable-files'. When this option is turned on, this happens automatically before saving `save-place-alist' to `save-place-file'." - :type 'boolean :group 'save-place) + :type 'boolean) (defcustom save-place-save-skipped t "If non-nil, remember files matching `save-place-skip-check-regexp'. @@ -114,7 +94,7 @@ this happens automatically before saving `save-place-alist' to When filtering `save-place-alist' for unreadable files, some will not be checked, based on said regexp, and instead saved or forgotten based on this flag." - :type 'boolean :group 'save-place) + :type 'boolean) (defcustom save-place-skip-check-regexp ;; thanks to ange-ftp-name-format @@ -127,7 +107,7 @@ subject to `save-place-save-skipped'. Files for which such a check may be inconvenient include those on removable and network volumes." - :type 'regexp :group 'save-place) + :type 'regexp) (defcustom save-place-ignore-files-regexp "\\(?:COMMIT_EDITMSG\\|hg-editor-[[:alnum:]]+\\.txt\\|svn-commit\\.tmp\\|bzr_log\\.[[:alnum:]]+\\)$" @@ -136,11 +116,34 @@ Useful for temporary file such as commit message files that are automatically created by the VCS. If set to nil, this feature is disabled, i.e., the position is recorded for all files." :version "24.1" - :type 'regexp :group 'save-place) + :type 'regexp) (declare-function dired-current-directory "dired" (&optional localp)) -(defun toggle-save-place (&optional parg) +(define-obsolete-variable-alias 'save-place 'save-place-mode "25.1") +;;;###autoload +(define-minor-mode save-place-mode + "Non-nil means automatically save place in each file. +This means when you visit a file, point goes to the last place +where it was when you previously visited the same file." + :global t + :group 'save-place + (cond + (save-place-mode + (add-hook 'find-file-hook 'save-place-find-file-hook t) + (add-hook 'dired-initial-position-hook 'save-place-dired-hook) + (unless noninteractive + (add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook)) + (add-hook 'kill-buffer-hook 'save-place-to-alist)) + (t + (remove-hook 'find-file-hook 'save-place-find-file-hook t) + (remove-hook 'dired-initial-position-hook 'save-place-dired-hook) + (remove-hook 'kill-emacs-hook 'save-place-kill-emacs-hook) + (remove-hook 'kill-buffer-hook 'save-place-to-alist)))) + +(make-variable-buffer-local 'save-place-mode) ; Hysterical raisins. + +(defun toggle-save-place (&optional parg) ;FIXME: save-place-local-mode! "Toggle whether to save your place in this file between sessions. If this mode is enabled, point is recorded when you kill the buffer or exit Emacs. Visiting this file again will go to that position, @@ -353,15 +356,5 @@ may have changed) back to `save-place-alist'." (if save-place-loaded (save-place-alist-to-file))) -(add-hook 'find-file-hook 'save-place-find-file-hook t) - -(add-hook 'dired-initial-position-hook 'save-place-dired-hook) - -(unless noninteractive - (add-hook 'kill-emacs-hook 'save-place-kill-emacs-hook)) - -(add-hook 'kill-buffer-hook 'save-place-to-alist) - -(provide 'saveplace) ; why not... - +(provide 'saveplace) ;;; saveplace.el ends here diff --git a/lisp/select.el b/lisp/select.el index f68d3d6c47b..74b48d1d812 100644 --- a/lisp/select.el +++ b/lisp/select.el @@ -231,7 +231,7 @@ The value nil is the same as the list (UTF8_STRING COMPOUND_TEXT STRING)." (defun x-get-clipboard () "Return text pasted to the clipboard." (declare (obsolete gui-get-selection "25.1")) - (gui-call gui-get-selection 'CLIPBOARD 'STRING)) + (gui-backend-get-selection 'CLIPBOARD 'STRING)) (defun gui-get-primary-selection () "Return the PRIMARY selection, or the best emulation thereof." @@ -248,37 +248,36 @@ The value nil is the same as the list (UTF8_STRING COMPOUND_TEXT STRING)." ;;; Lower-level, backend dependent selection handling. -(gui-method-declare gui-get-selection #'ignore +(cl-defgeneric gui-backend-get-selection (_selection-symbol _target-type) "Return selected text. -Called with 2 arguments: (SELECTION-SYMBOL TARGET-TYPE) SELECTION-SYMBOL is typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names, since that's what X expects.) -TARGET-TYPE is the type of data desired, typically `STRING'.") +TARGET-TYPE is the type of data desired, typically `STRING'." + nil) -(gui-method-declare gui-set-selection #'ignore +(cl-defgeneric gui-backend-set-selection (_selection _value) "Method to assert a selection of type SELECTION and value VALUE. SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. If VALUE is nil and we own the selection SELECTION, disown it instead. Disowning it means there is no such selection. \(Those are literal upper-case symbol names, since that's what X expects.) VALUE is typically a string, or a cons of two markers, but may be -anything that the functions on `selection-converter-alist' know about. +anything that the functions on `selection-converter-alist' know about." + nil) -Called with 2 args: (SELECTION VALUE).") - -(gui-method-declare gui-selection-owner-p #'ignore +(cl-defgeneric gui-backend-selection-owner-p (_selection) "Whether the current Emacs process owns the given X Selection. -Called with one argument: (SELECTION). The arg should be the name of the selection in question, typically one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. -\(Those are literal upper-case symbol names, since that's what X expects.)") +\(Those are literal upper-case symbol names, since that's what X expects.)" + nil) -(gui-method-declare gui-selection-exists-p #'ignore +(cl-defgeneric gui-backend-selection-exists-p (_selection) "Whether there is an owner for the given X Selection. -Called with one argument: (SELECTION). The arg should be the name of the selection in question, typically one of the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. -\(Those are literal upper-case symbol names, since that's what X expects.)") +\(Those are literal upper-case symbol names, since that's what X expects.)" + nil) (defun gui-get-selection (&optional type data-type) "Return the value of an X Windows selection. @@ -294,8 +293,8 @@ all upper-case names. The most often used ones, in addition to DATA-TYPE is usually `STRING', but can also be one of the symbols in `selection-converter-alist', which see. This argument is ignored on NS, MS-Windows and MS-DOS." - (let ((data (gui-call gui-get-selection (or type 'PRIMARY) - (or data-type 'STRING)))) + (let ((data (gui-backend-get-selection (or type 'PRIMARY) + (or data-type 'STRING)))) (when (and (stringp data) (setq data-type (get-text-property 0 'foreign-selection data))) (let ((coding (or next-selection-coding-system @@ -351,7 +350,7 @@ are not available to other programs." valid)) (signal 'error (list "invalid selection" data))) (or type (setq type 'PRIMARY)) - (gui-call gui-set-selection type data) + (gui-backend-set-selection type data) data) (define-obsolete-function-alias 'x-set-selection 'gui-set-selection "25.1") @@ -511,7 +510,7 @@ two markers or an overlay. Otherwise, it is nil." (apply 'vector all))) (defun xselect-convert-to-delete (selection _type _value) - (gui-call gui-set-selection selection nil) + (gui-backend-set-selection selection nil) ;; A return value of nil means that we do not know how to do this conversion, ;; and replies with an "error". A return value of NULL means that we have ;; done the conversion (and any side-effects) but have no value to return. diff --git a/lisp/server.el b/lisp/server.el index 9585b1755c6..2007635b98c 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -245,6 +245,7 @@ in this way." :type 'boolean :version "21.1") +;; FIXME? This is not a minor mode; what's the point of this? (See bug#20201) (or (assq 'server-buffer-clients minor-mode-alist) (push '(server-buffer-clients " Server") minor-mode-alist)) @@ -650,8 +651,8 @@ server or call `M-x server-force-delete' to forcibly disconnect it.") :name server-name :server t :noquery t - :sentinel 'server-sentinel - :filter 'server-process-filter + :sentinel #'server-sentinel + :filter #'server-process-filter ;; We must receive file names without being decoded. ;; Those are decoded by server-process-filter according ;; to file-name-coding-system. Also don't get @@ -839,9 +840,6 @@ This handles splitting the command if it would be bigger than (w (or (cdr (assq 'window-system parameters)) (window-system-for-display display)))) - (unless (assq w window-system-initialization-alist) - (setq w nil)) - ;; Special case for ns. This is because DISPLAY may not be set at all ;; which in the ns case isn't an error. The variable display then becomes ;; the fully qualified hostname, which make-frame-on-display below @@ -849,7 +847,12 @@ This handles splitting the command if it would be bigger than ;; It may also be a valid X display, but if Emacs is compiled for ns, it ;; can not make X frames. (if (featurep 'ns-win) - (setq w 'ns display "ns")) + (setq w 'ns display "ns") + ;; FIXME! Not sure what this was for, and not sure how it should work + ;; in the cl-defmethod new world! + ;;(unless (assq w window-system-initialization-alist) + ;; (setq w nil)) + ) (cond (w ;; Flag frame as client-created, but use a dummy client. @@ -1167,7 +1170,8 @@ The following commands are accepted by the client: (setq file (expand-file-name file dir)) (push (cons file filepos) files) (server-log (format "New file: %s %s" - file (or filepos "")) proc)) + file (or filepos "")) + proc)) (setq filepos nil)) ;; -eval EXPR: Evaluate a Lisp expression. diff --git a/lisp/ses.el b/lisp/ses.el index e9860158450..e625e4ed593 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -172,7 +172,7 @@ Each function is called with ARG=1." "\C-c\C-s" ses-insert-ses-range [S-mouse-3] ses-insert-range-click [C-S-mouse-3] ses-insert-ses-range-click - "\M-\C-i" lisp-complete-symbol)) + "\M-\C-i" lisp-complete-symbol)) ; FIXME obsolete (newmap (make-sparse-keymap))) (set-keymap-parent newmap minibuffer-local-map) (while keys @@ -2276,7 +2276,7 @@ to are recalculated first." (when (and (< col (1- ses--numcols)) ;;Last column can't spill over, anyway (eq (ses-cell-value row (1+ col)) '*skip*)) ;; This cell has spill-over. We'll momentarily pretend the following cell - ;; has a `t' in it. + ;; has a t in it. (cl-progv (list (ses-cell-symbol row (1+ col))) '(t) @@ -3528,11 +3528,11 @@ execution anyway. Always returns t if `safe-functions' is t." ;;---------------------------------------------------------------------------- (defun ses--clean-! (&rest x) - "Clean by `delq' list X from any occurrence of `nil' or `*skip*'." + "Clean by `delq' list X from any occurrence of nil or `*skip*'." (delq nil (delq '*skip* x))) (defun ses--clean-_ (x y) - "Clean list X by replacing by Y any occurrence of `nil' or `*skip*'. + "Clean list X by replacing by Y any occurrence of nil or `*skip*'. This will change X by making `setcar' on its cons cells." (let ((ret x) ret-elt) diff --git a/lisp/simple.el b/lisp/simple.el index cf1912ade4f..4ef45c5d45d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3488,9 +3488,9 @@ value passed." (defvar process-file-side-effects t "Whether a call of `process-file' changes remote files. -By default, this variable is always set to `t', meaning that a +By default, this variable is always set to t, meaning that a call of `process-file' could potentially change any file on a -remote host. When set to `nil', a file handler could optimize +remote host. When set to nil, a file handler could optimize its behavior with respect to remote file attribute caching. You should only ever change this variable with a let-binding; @@ -4808,14 +4808,14 @@ run `deactivate-mark-hook'." ;; the region prior to the last command modifying the buffer. ;; Set the selection to that, or to the current region. (cond (saved-region-selection - (if (gui-call gui-selection-owner-p 'PRIMARY) + (if (gui-backend-selection-owner-p 'PRIMARY) (gui-set-selection 'PRIMARY saved-region-selection)) (setq saved-region-selection nil)) ;; If another program has acquired the selection, region ;; deactivation should not clobber it (Bug#11772). ((and (/= (region-beginning) (region-end)) - (or (gui-call gui-selection-owner-p 'PRIMARY) - (null (gui-call gui-selection-exists-p 'PRIMARY)))) + (or (gui-backend-selection-owner-p 'PRIMARY) + (null (gui-backend-selection-exists-p 'PRIMARY)))) (gui-set-selection 'PRIMARY (funcall region-extract-function nil))))) (when mark-active (force-mode-line-update)) ;Refresh toolbar (bug#16382). @@ -4870,6 +4870,45 @@ store it in a Lisp variable. Example: (setq mark-active nil) (set-marker (mark-marker) nil))) +(defun save-mark-and-excursion--save () + (cons + (let ((mark (mark-marker))) + (and (marker-position mark) (copy-marker mark))) + mark-active)) + +(defun save-mark-and-excursion--restore (saved-mark-info) + (let ((saved-mark (car saved-mark-info)) + (omark (marker-position (mark-marker))) + (nmark nil) + (saved-mark-active (cdr saved-mark-info))) + ;; Mark marker + (if (null saved-mark) + (set-marker (mark-marker) nil) + (setf nmark (marker-position saved-mark)) + (set-marker (mark-marker) nmark) + (set-marker saved-mark nil)) + ;; Mark active + (let ((cur-mark-active mark-active)) + (setq mark-active saved-mark-active) + ;; If mark is active now, and either was not active or was at a + ;; different place, run the activate hook. + (if saved-mark-active + (when (or (not cur-mark-active) + (not (eq omark nmark))) + (run-hooks 'activate-mark-hook)) + ;; If mark has ceased to be active, run deactivate hook. + (when cur-mark-active + (run-hooks 'deactivate-mark-hook)))))) + +(defmacro save-mark-and-excursion (&rest body) + "Like `save-excursion', but also save and restore the mark state. +This macro does what `save-excursion' did before Emacs 25.1." + (let ((saved-marker-sym (make-symbol "saved-marker"))) + `(let ((,saved-marker-sym (save-mark-and-excursion--save))) + (unwind-protect + (save-excursion ,@body) + (save-mark-and-excursion--restore ,saved-marker-sym))))) + (defcustom use-empty-active-region nil "Whether \"region-aware\" commands should act on empty regions. If nil, region-aware commands treat empty regions as inactive. @@ -5961,7 +6000,11 @@ and `current-column' to be able to ignore invisible text." ;; that will get us to the same place on the screen ;; but with a more reasonable buffer position. (goto-char normal-location) - (let ((line-beg (line-beginning-position))) + (let ((line-beg + ;; We want the real line beginning, so it's consistent + ;; with bolp below, otherwise we might infloop. + (let ((inhibit-field-text-motion t)) + (line-beginning-position)))) (while (and (not (bolp)) (invisible-p (1- (point)))) (goto-char (previous-char-property-change (point) line-beg)))))))) @@ -6632,7 +6675,7 @@ beyond `current-fill-column' automatically breaks the line at a previous space. When `auto-fill-mode' is on, the `auto-fill-function' variable is -non-`nil'. +non-nil. The value of `normal-auto-fill-function' specifies the function to use for `auto-fill-function' when turning Auto Fill mode on." @@ -6992,8 +7035,9 @@ The function should return non-nil if the two tokens do not match.") (buffer-substring blinkpos (1+ blinkpos)))) ;; There is nothing to show except the char itself. (t (buffer-substring blinkpos (1+ blinkpos)))))) - (message "Matches %s" - (substring-no-properties open-paren-line-string))))))))) + (minibuffer-message + "Matches %s" + (substring-no-properties open-paren-line-string))))))))) (defvar blink-paren-function 'blink-matching-open "Function called, if non-nil, whenever a close parenthesis is inserted. @@ -8188,7 +8232,7 @@ version and use the one distributed with Emacs.")) Each element has the form (PACKAGE SYMBOL REGEXP STRING). PACKAGE is either a regular expression to match file names, or a symbol (a feature name), like for `with-eval-after-load'. -SYMBOL is either the name of a string variable, or `t'. Upon +SYMBOL is either the name of a string variable, or t. Upon loading PACKAGE, if SYMBOL is t or matches REGEXP, display a warning using STRING as the message.") diff --git a/lisp/skeleton.el b/lisp/skeleton.el index 84b0e0a5754..d23488bfd34 100644 --- a/lisp/skeleton.el +++ b/lisp/skeleton.el @@ -481,7 +481,7 @@ This allows for context-sensitive checking whether pairing is appropriate.") Each alist element, which looks like (ELEMENT ...), is passed to `skeleton-insert' with no interactor. Variable `str' does nothing. -Elements might be (?` ?` _ \"''\"), (?\\( ? _ \" )\") or (?{ \\n > _ \\n ?} >).") +Elements might be (?\\=` ?\\=` _ \"''\"), (?\\( ? _ \" )\") or (?{ \\n > _ \\n ?} >).") (defvar skeleton-pair-default-alist '((?( _ ?)) (?\)) (?[ _ ?]) (?\]) @@ -502,8 +502,9 @@ Pairing is also prohibited if we are right after a quoting character such as backslash. If a match is found in `skeleton-pair-alist', that is inserted, else -the defaults are used. These are (), [], {}, <> and `' for the -symmetrical ones, and the same character twice for the others." +the defaults are used. These are (), [], {}, <> and (grave +accent, apostrophe) for the paired ones, and the same character +twice for the others." (interactive "*P") (if (or arg (not skeleton-pair)) (self-insert-command (prefix-numeric-value arg)) diff --git a/lisp/startup.el b/lisp/startup.el index 7fa929a659d..3c9ada682d3 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -47,6 +47,9 @@ visiting the file or directory that the string specifies. If the value is a function, call it with no arguments and switch to the buffer that it returns. If t, open the `*scratch*' buffer. +When `initial-buffer-choice' is non-nil, the startup screen is +inhibited. + If you use `emacsclient' with no target file, then it obeys any string or function value that this variable has." :type '(choice @@ -355,7 +358,7 @@ is not allowed, since it would not work anyway. The only way to set this variable usefully is to set it while building and dumping Emacs." :type '(choice (const :tag "none" nil) string) :group 'initialization - :initialize 'custom-initialize-default + :initialize #'custom-initialize-default :set (lambda (_variable _value) (error "Customizing `site-run-file' does not work"))) @@ -422,7 +425,7 @@ Warning Warning!!! Pure space overflow !!!Warning Warning "Directory containing the Emacs TUTORIAL files." :group 'installation :type 'directory - :initialize 'custom-initialize-delay) + :initialize #'custom-initialize-delay) (defun normal-top-level-add-subdirs-to-load-path () "Add all subdirectories of `default-directory' to `load-path'. @@ -707,19 +710,21 @@ It is the default value of the variable `top-level'." (defconst tool-bar-images-pixel-height 24 "Height in pixels of images in the tool-bar.") -(gui-method-declare handle-args-function #'tty-handle-args +(cl-defgeneric handle-args-function (args) "Method for processing window-system dependent command-line arguments. Window system startup files should add their own function to this method, which should parse the command line arguments. Those pertaining to the window system should be processed and removed from the returned command line.") +(cl-defmethod handle-args-function (args &context (window-system (eql nil))) + (tty-handle-args args)) -(gui-method-declare window-system-initialization #'ignore +(cl-defgeneric window-system-initialization (&optional _display) "Method for window-system initialization. Window-system startup files should add their own implementation -to this method. The function should take no arguments, -and initialize the window system environment to prepare for -opening the first frame (e.g. open a connection to an X server).") +to this method. The function should initialize the window system environment +to prepare for opening the first frame (e.g. open a connection to an X server)." + nil) (defun tty-handle-args (args) "Handle the X-like command-line arguments \"-fg\", \"-bg\", \"-name\", etc." @@ -907,7 +912,9 @@ please check its value") ((member argi '("-Q" "-quick")) (setq init-file-user nil site-run-file nil - inhibit-x-resources t)) + inhibit-x-resources t) + ;; Stop it showing up in emacs -Q's customize-rogue. + (put 'site-run-file 'standard-value '(nil))) ((member argi '("-no-x-resources")) (setq inhibit-x-resources t)) ((member argi '("-D" "-basic-display")) @@ -920,7 +927,8 @@ please check its value") (setq init-file-user (or argval (pop args)) argval nil)) ((equal argi "-no-site-file") - (setq site-run-file nil)) + (setq site-run-file nil) + (put 'site-run-file 'standard-value '(nil))) ((equal argi "-debug-init") (setq init-file-debug t)) ((equal argi "-iconic") @@ -955,12 +963,11 @@ please check its value") (error "Unsupported window system `%s'" initial-window-system)) ;; Process window-system specific command line parameters. (setq command-line-args - (funcall - (gui-method handle-args-function initial-window-system) - command-line-args)) + (let ((window-system initial-window-system)) ;Hack attack! + (handle-args-function command-line-args))) ;; Initialize the window system. (Open connection, etc.) - (funcall - (gui-method window-system-initialization initial-window-system)) + (let ((window-system initial-window-system)) ;Hack attack! + (window-system-initialization)) (put initial-window-system 'window-system-initialized t)) ;; If there was an error, print the error message and exit. (error @@ -1023,8 +1030,8 @@ please check its value") ;; switch color support on or off in mid-session by setting the ;; tty-color-mode frame parameter. ;; Exception: the `pc' ``window system'' has only 16 fixed colors, - ;; and they are already set at this point by a suitable function in - ;; window-system-initialization-alist. + ;; and they are already set at this point by a suitable method of + ;; window-system-initialization. (or (eq initial-window-system 'pc) (tty-register-default-colors)) @@ -2142,238 +2149,238 @@ A fancy display is used on graphic displays, normal otherwise." (See the node Pure Storage in the Lisp manual for details.)" :warning)) - (let ((file-count 0) - (command-line-args-left args-left) - first-file-buffer) - (when command-line-args-left - ;; We have command args; process them. - (let ((dir command-line-default-directory) - tem - ;; This approach loses for "-batch -L DIR --eval "(require foo)", - ;; if foo is intended to be found in DIR. - ;; - ;; The directories listed in --directory/-L options will *appear* - ;; at the front of `load-path' in the order they appear on the - ;; command-line. We cannot do this by *placing* them at the front - ;; in the order they appear, so we need this variable to hold them, - ;; temporarily. - ;; - ;; To DTRT we keep track of the splice point and modify `load-path' - ;; straight away upon any --directory/-L option. - splice - just-files ;; t if this follows the magic -- option. - ;; This includes our standard options' long versions - ;; and long versions of what's on command-switch-alist. - (longopts - (append '("--funcall" "--load" "--insert" "--kill" - "--directory" "--eval" "--execute" "--no-splash" - "--find-file" "--visit" "--file" "--no-desktop") - (mapcar (lambda (elt) (concat "-" (car elt))) - command-switch-alist))) - (line 0) - (column 0)) - - ;; Add the long X options to longopts. - (dolist (tem command-line-x-option-alist) - (if (string-match "^--" (car tem)) - (push (car tem) longopts))) - - ;; Add the long NS options to longopts. - (dolist (tem command-line-ns-option-alist) - (if (string-match "^--" (car tem)) - (push (list (car tem)) longopts))) - - ;; Loop, processing options. - (while command-line-args-left - (let* ((argi (car command-line-args-left)) - (orig-argi argi) - argval completion) - (setq command-line-args-left (cdr command-line-args-left)) - - ;; Do preliminary decoding of the option. - (if just-files - ;; After --, don't look for options; treat all args as files. - (setq argi "") - ;; Convert long options to ordinary options - ;; and separate out an attached option argument into argval. - (when (string-match "\\`\\(--[^=]*\\)=" argi) - (setq argval (substring argi (match-end 0)) - argi (match-string 1 argi))) - (when (string-match "\\`--?[^-]" orig-argi) - (setq completion (try-completion argi longopts)) - (if (eq completion t) - (setq argi (substring argi 1)) - (if (stringp completion) - (let ((elt (member completion longopts))) - (or elt - (error "Option `%s' is ambiguous" argi)) - (setq argi (substring (car elt) 1))) - (setq argval nil - argi orig-argi))))) - - ;; Execute the option. - (cond ((setq tem (assoc argi command-switch-alist)) - (if argval - (let ((command-line-args-left - (cons argval command-line-args-left))) - (funcall (cdr tem) argi)) - (funcall (cdr tem) argi))) - - ((equal argi "-no-splash") - (setq inhibit-startup-screen t)) - - ((member argi '("-f" ; what the manual claims - "-funcall" - "-e")) ; what the source used to say - (setq inhibit-startup-screen t) - (setq tem (intern (or argval (pop command-line-args-left)))) - (if (commandp tem) - (command-execute tem) - (funcall tem))) - - ((member argi '("-eval" "-execute")) - (setq inhibit-startup-screen t) - (eval (read (or argval (pop command-line-args-left))))) - - ((member argi '("-L" "-directory")) - ;; -L :/foo adds /foo to the _end_ of load-path. - (let (append) - (if (string-match-p - (format "\\`%s" path-separator) - (setq tem (or argval (pop command-line-args-left)))) - (setq tem (substring tem 1) - append t)) - (setq tem (expand-file-name - (command-line-normalize-file-name tem))) - (cond (append (setq load-path - (append load-path (list tem))) - (if splice (setq splice load-path))) - (splice (setcdr splice (cons tem (cdr splice))) - (setq splice (cdr splice))) - (t (setq load-path (cons tem load-path) - splice load-path))))) - - ((member argi '("-l" "-load")) - (let* ((file (command-line-normalize-file-name - (or argval (pop command-line-args-left)))) - ;; Take file from default dir if it exists there; - ;; otherwise let `load' search for it. - (file-ex (expand-file-name file))) - (when (file-exists-p file-ex) - (setq file file-ex)) - (load file nil t))) - - ;; This is used to handle -script. It's not clear - ;; we need to document it (it is totally internal). - ((member argi '("-scriptload")) - (let* ((file (command-line-normalize-file-name - (or argval (pop command-line-args-left)))) - ;; Take file from default dir. - (file-ex (expand-file-name file))) - (load file-ex nil t t))) - - ((equal argi "-insert") - (setq inhibit-startup-screen t) - (setq tem (or argval (pop command-line-args-left))) - (or (stringp tem) - (error "File name omitted from `-insert' option")) - (insert-file-contents (command-line-normalize-file-name tem))) - - ((equal argi "-kill") - (kill-emacs t)) - - ;; This is for when they use --no-desktop with -q, or - ;; don't load Desktop in their .emacs. If desktop.el - ;; _is_ loaded, it will handle this switch, and we - ;; won't see it by the time we get here. - ((equal argi "-no-desktop") - (message "\"--no-desktop\" ignored because the Desktop package is not loaded")) - - ((string-match "^\\+[0-9]+\\'" argi) - (setq line (string-to-number argi))) - - ((string-match "^\\+\\([0-9]+\\):\\([0-9]+\\)\\'" argi) - (setq line (string-to-number (match-string 1 argi)) - column (string-to-number (match-string 2 argi)))) - - ((setq tem (assoc orig-argi command-line-x-option-alist)) - ;; Ignore X-windows options and their args if not using X. - (setq command-line-args-left - (nthcdr (nth 1 tem) command-line-args-left))) - - ((setq tem (assoc orig-argi command-line-ns-option-alist)) - ;; Ignore NS-windows options and their args if not using NS. - (setq command-line-args-left - (nthcdr (nth 1 tem) command-line-args-left))) - - ((member argi '("-find-file" "-file" "-visit")) - (setq inhibit-startup-screen t) - ;; An explicit option to specify visiting a file. - (setq tem (or argval (pop command-line-args-left))) - (unless (stringp tem) - (error "File name omitted from `%s' option" argi)) - (setq file-count (1+ file-count)) - (let ((file (expand-file-name - (command-line-normalize-file-name tem) - dir))) - (if (= file-count 1) - (setq first-file-buffer (find-file file)) - (find-file-other-window file))) - (unless (zerop line) - (goto-char (point-min)) - (forward-line (1- line))) - (setq line 0) - (unless (< column 1) - (move-to-column (1- column))) - (setq column 0)) - - ;; These command lines now have no effect. - ((string-match "\\`--?\\(no-\\)?\\(uni\\|multi\\)byte$" argi) - (display-warning 'initialization - (format "Ignoring obsolete arg %s" argi))) - - ((equal argi "--") - (setq just-files t)) - (t - ;; We have almost exhausted our options. See if the - ;; user has made any other command-line options available - (let ((hooks command-line-functions) - (did-hook nil)) - (while (and hooks - (not (setq did-hook (funcall (car hooks))))) - (setq hooks (cdr hooks))) - (if (not did-hook) - ;; Presume that the argument is a file name. - (progn - (if (string-match "\\`-" argi) - (error "Unknown option `%s'" argi)) - (unless initial-window-system - (setq inhibit-startup-screen t)) - (setq file-count (1+ file-count)) - (let ((file - (expand-file-name - (command-line-normalize-file-name orig-argi) - dir))) - (cond ((= file-count 1) - (setq first-file-buffer (find-file file))) - (inhibit-startup-screen - (find-file-other-window file)) - (t (find-file file)))) - (unless (zerop line) - (goto-char (point-min)) - (forward-line (1- line))) - (setq line 0) - (unless (< column 1) - (move-to-column (1- column))) - (setq column 0)))))) - ;; In unusual circumstances, the execution of Lisp code due - ;; to command-line options can cause the last visible frame - ;; to be deleted. In this case, kill emacs to avoid an - ;; abort later. - (unless (frame-live-p (selected-frame)) (kill-emacs nil)))))) + ;; `displayable-buffers' is a list of buffers that may be displayed, + ;; which includes files parsed from the command line arguments and + ;; `initial-buffer-choice'. All of the display logic happens at the + ;; end of this `let'. As files as processed from the command line + ;; arguments, their buffers are prepended to `displayable-buffers' + ;; but they are not displayed until command line parsing has + ;; finished. + (let ((displayable-buffers nil)) + ;; This `let' processes the command line arguments. + (let ((command-line-args-left args-left)) + (when command-line-args-left + ;; We have command args; process them. + (let* ((dir command-line-default-directory) + tem + ;; This approach loses for "-batch -L DIR --eval "(require foo)", + ;; if foo is intended to be found in DIR. + ;; + ;; The directories listed in --directory/-L options will *appear* + ;; at the front of `load-path' in the order they appear on the + ;; command-line. We cannot do this by *placing* them at the front + ;; in the order they appear, so we need this variable to hold them, + ;; temporarily. + ;; + ;; To DTRT we keep track of the splice point and modify `load-path' + ;; straight away upon any --directory/-L option. + splice + just-files ;; t if this follows the magic -- option. + ;; This includes our standard options' long versions + ;; and long versions of what's on command-switch-alist. + (longopts + (append '("--funcall" "--load" "--insert" "--kill" + "--directory" "--eval" "--execute" "--no-splash" + "--find-file" "--visit" "--file" "--no-desktop") + (mapcar (lambda (elt) (concat "-" (car elt))) + command-switch-alist))) + (line 0) + (column 0) + ;; `process-file-arg' opens a file buffer for `name' + ;; without switching to the buffer, adds the buffer to + ;; `displayable-buffers', and puts the point at + ;; `line':`column'. `line' and `column' are both reset + ;; to zero when `process-file-arg' returns. + (process-file-arg + (lambda (name) + (let* ((file (expand-file-name + (command-line-normalize-file-name name) + dir)) + (buf (find-file-noselect file))) + (setq displayable-buffers (cons buf displayable-buffers)) + (with-current-buffer buf + (unless (zerop line) + (goto-char (point-min)) + (forward-line (1- line))) + (setq line 0) + (unless (< column 1) + (move-to-column (1- column))) + (setq column 0)))))) + + ;; Add the long X options to longopts. + (dolist (tem command-line-x-option-alist) + (if (string-match "^--" (car tem)) + (push (car tem) longopts))) + + ;; Add the long NS options to longopts. + (dolist (tem command-line-ns-option-alist) + (if (string-match "^--" (car tem)) + (push (list (car tem)) longopts))) + + ;; Loop, processing options. + (while command-line-args-left + (let* ((argi (car command-line-args-left)) + (orig-argi argi) + argval completion) + (setq command-line-args-left (cdr command-line-args-left)) + + ;; Do preliminary decoding of the option. + (if just-files + ;; After --, don't look for options; treat all args as files. + (setq argi "") + ;; Convert long options to ordinary options + ;; and separate out an attached option argument into argval. + (when (string-match "\\`\\(--[^=]*\\)=" argi) + (setq argval (substring argi (match-end 0)) + argi (match-string 1 argi))) + (when (string-match "\\`--?[^-]" orig-argi) + (setq completion (try-completion argi longopts)) + (if (eq completion t) + (setq argi (substring argi 1)) + (if (stringp completion) + (let ((elt (member completion longopts))) + (or elt + (error "Option `%s' is ambiguous" argi)) + (setq argi (substring (car elt) 1))) + (setq argval nil + argi orig-argi))))) + + ;; Execute the option. + (cond ((setq tem (assoc argi command-switch-alist)) + (if argval + (let ((command-line-args-left + (cons argval command-line-args-left))) + (funcall (cdr tem) argi)) + (funcall (cdr tem) argi))) + + ((equal argi "-no-splash") + (setq inhibit-startup-screen t)) + + ((member argi '("-f" ; what the manual claims + "-funcall" + "-e")) ; what the source used to say + (setq inhibit-startup-screen t) + (setq tem (intern (or argval (pop command-line-args-left)))) + (if (commandp tem) + (command-execute tem) + (funcall tem))) + + ((member argi '("-eval" "-execute")) + (setq inhibit-startup-screen t) + (eval (read (or argval (pop command-line-args-left))))) + + ((member argi '("-L" "-directory")) + ;; -L :/foo adds /foo to the _end_ of load-path. + (let (append) + (if (string-match-p + (format "\\`%s" path-separator) + (setq tem (or argval (pop command-line-args-left)))) + (setq tem (substring tem 1) + append t)) + (setq tem (expand-file-name + (command-line-normalize-file-name tem))) + (cond (append (setq load-path + (append load-path (list tem))) + (if splice (setq splice load-path))) + (splice (setcdr splice (cons tem (cdr splice))) + (setq splice (cdr splice))) + (t (setq load-path (cons tem load-path) + splice load-path))))) + + ((member argi '("-l" "-load")) + (let* ((file (command-line-normalize-file-name + (or argval (pop command-line-args-left)))) + ;; Take file from default dir if it exists there; + ;; otherwise let `load' search for it. + (file-ex (expand-file-name file))) + (when (file-exists-p file-ex) + (setq file file-ex)) + (load file nil t))) + + ;; This is used to handle -script. It's not clear + ;; we need to document it (it is totally internal). + ((member argi '("-scriptload")) + (let* ((file (command-line-normalize-file-name + (or argval (pop command-line-args-left)))) + ;; Take file from default dir. + (file-ex (expand-file-name file))) + (load file-ex nil t t))) + + ((equal argi "-insert") + (setq inhibit-startup-screen t) + (setq tem (or argval (pop command-line-args-left))) + (or (stringp tem) + (error "File name omitted from `-insert' option")) + (insert-file-contents (command-line-normalize-file-name tem))) + + ((equal argi "-kill") + (kill-emacs t)) + + ;; This is for when they use --no-desktop with -q, or + ;; don't load Desktop in their .emacs. If desktop.el + ;; _is_ loaded, it will handle this switch, and we + ;; won't see it by the time we get here. + ((equal argi "-no-desktop") + (message "\"--no-desktop\" ignored because the Desktop package is not loaded")) + + ((string-match "^\\+[0-9]+\\'" argi) + (setq line (string-to-number argi))) + + ((string-match "^\\+\\([0-9]+\\):\\([0-9]+\\)\\'" argi) + (setq line (string-to-number (match-string 1 argi)) + column (string-to-number (match-string 2 argi)))) + + ((setq tem (assoc orig-argi command-line-x-option-alist)) + ;; Ignore X-windows options and their args if not using X. + (setq command-line-args-left + (nthcdr (nth 1 tem) command-line-args-left))) + + ((setq tem (assoc orig-argi command-line-ns-option-alist)) + ;; Ignore NS-windows options and their args if not using NS. + (setq command-line-args-left + (nthcdr (nth 1 tem) command-line-args-left))) + + ((member argi '("-find-file" "-file" "-visit")) + (setq inhibit-startup-screen t) + ;; An explicit option to specify visiting a file. + (setq tem (or argval (pop command-line-args-left))) + (unless (stringp tem) + (error "File name omitted from `%s' option" argi)) + (funcall process-file-arg tem)) + + ;; These command lines now have no effect. + ((string-match "\\`--?\\(no-\\)?\\(uni\\|multi\\)byte$" argi) + (display-warning 'initialization + (format "Ignoring obsolete arg %s" argi))) + + ((equal argi "--") + (setq just-files t)) + (t + ;; We have almost exhausted our options. See if the + ;; user has made any other command-line options available + (let ((hooks command-line-functions) + (did-hook nil)) + (while (and hooks + (not (setq did-hook (funcall (car hooks))))) + (setq hooks (cdr hooks))) + (unless did-hook + ;; Presume that the argument is a file name. + (if (string-match "\\`-" argi) + (error "Unknown option `%s'" argi)) + ;; FIXME: Why do we only inhibit the startup + ;; screen for -nw? + (unless initial-window-system + (setq inhibit-startup-screen t)) + (funcall process-file-arg orig-argi))))) + + ;; In unusual circumstances, the execution of Lisp code due + ;; to command-line options can cause the last visible frame + ;; to be deleted. In this case, kill emacs to avoid an + ;; abort later. + (unless (frame-live-p (selected-frame)) (kill-emacs nil))))))) (when (eq initial-buffer-choice t) - ;; When initial-buffer-choice equals t make sure that *scratch* + ;; When `initial-buffer-choice' equals t make sure that *scratch* ;; exists. (get-buffer-create "*scratch*")) @@ -2386,59 +2393,81 @@ A fancy display is used on graphic displays, normal otherwise." (insert initial-scratch-message) (set-buffer-modified-p nil)))) + ;; Prepend `initial-buffer-choice' to `displayable-buffers'. (when initial-buffer-choice (let ((buf (cond ((stringp initial-buffer-choice) (find-file-noselect initial-buffer-choice)) ((functionp initial-buffer-choice) - (funcall initial-buffer-choice))))) - (switch-to-buffer - (if (buffer-live-p buf) buf (get-buffer-create "*scratch*")) - 'norecord))) - - (if (or inhibit-startup-screen - initial-buffer-choice - noninteractive - (daemonp) - inhibit-x-resources) - - ;; Not displaying a startup screen. If 3 or more files - ;; visited, and not all visible, show user what they all are. - (and (> file-count 2) - (not noninteractive) - (not inhibit-startup-buffer-menu) - (or (get-buffer-window first-file-buffer) - (list-buffers))) - - ;; Display a startup screen, after some preparations. - - ;; If there are no switches to process, we might as well - ;; run this hook now, and there may be some need to do it - ;; before doing any output. - (run-hooks 'emacs-startup-hook 'term-setup-hook) - - ;; It's important to notice the user settings before we - ;; display the startup message; otherwise, the settings - ;; won't take effect until the user gives the first - ;; keystroke, and that's distracting. - (when (fboundp 'frame-notice-user-settings) - (frame-notice-user-settings)) - - ;; If there are no switches to process, we might as well - ;; run this hook now, and there may be some need to do it - ;; before doing any output. - (run-hooks 'window-setup-hook) - - (setq inhibit-startup-hooks t) - - ;; ;; Do this now to avoid an annoying delay if the user - ;; ;; clicks the menu bar during the sit-for. - ;; (when (display-popup-menus-p) - ;; (precompute-menubar-bindings)) - ;; (with-no-warnings - ;; (setq menubar-bindings-done t)) - - (display-startup-screen (> file-count 0))))) + (funcall initial-buffer-choice)) + ((eq initial-buffer-choice t) + (get-buffer-create "*scratch*")) + (t + (error "initial-buffer-choice must be a string, a function, or t."))))) + (unless (buffer-live-p buf) + (error "initial-buffer-choice is not a live buffer.")) + (setq displayable-buffers (cons buf displayable-buffers)))) + + ;; Display the first two buffers in `displayable-buffers'. If + ;; `initial-buffer-choice' is non-nil, its buffer will be the + ;; first buffer in `displayable-buffers'. The first buffer will + ;; be focused. + (let ((displayable-buffers-len (length displayable-buffers)) + ;; `nondisplayed-buffers-p' is true if there exist buffers + ;; in `displayable-buffers' that were not displayed to the + ;; user. + (nondisplayed-buffers-p nil)) + (when (> displayable-buffers-len 0) + (switch-to-buffer (car displayable-buffers))) + (when (> displayable-buffers-len 1) + (switch-to-buffer-other-window (car (cdr displayable-buffers))) + ;; Focus on the first buffer. + (other-window -1)) + (when (> displayable-buffers-len 2) + (setq nondisplayed-buffers-p t)) + + (if (or inhibit-startup-screen + initial-buffer-choice + noninteractive + (daemonp) + inhibit-x-resources) + + ;; Not displaying a startup screen. Display *Buffer List* if + ;; there exist buffers that were not displayed. + (when (and nondisplayed-buffers-p + (not noninteractive) + (not inhibit-startup-buffer-menu)) + (list-buffers)) + + ;; Display a startup screen, after some preparations. + + ;; If there are no switches to process, we might as well + ;; run this hook now, and there may be some need to do it + ;; before doing any output. + (run-hooks 'emacs-startup-hook 'term-setup-hook) + + ;; It's important to notice the user settings before we + ;; display the startup message; otherwise, the settings + ;; won't take effect until the user gives the first + ;; keystroke, and that's distracting. + (when (fboundp 'frame-notice-user-settings) + (frame-notice-user-settings)) + + ;; If there are no switches to process, we might as well + ;; run this hook now, and there may be some need to do it + ;; before doing any output. + (run-hooks 'window-setup-hook) + + (setq inhibit-startup-hooks t) + + ;; ;; Do this now to avoid an annoying delay if the user + ;; ;; clicks the menu bar during the sit-for. + ;; (when (display-popup-menus-p) + ;; (precompute-menubar-bindings)) + ;; (with-no-warnings + ;; (setq menubar-bindings-done t)) + + (display-startup-screen (> displayable-buffers-len 0)))))) (defun command-line-normalize-file-name (file) "Collapse multiple slashes to one, to handle non-Emacs file names." diff --git a/lisp/subr.el b/lisp/subr.el index 1d41e015fa7..df173102fe2 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -417,10 +417,21 @@ If N is omitted or nil, remove the last element." Store the result in LIST and return it. LIST must be a proper list. Of several `equal' occurrences of an element in LIST, the first one is kept." - (let ((tail list)) - (while tail - (setcdr tail (delete (car tail) (cdr tail))) - (setq tail (cdr tail)))) + (let ((l (length list))) + (if (> l 100) + (let ((hash (make-hash-table :test #'equal :size l)) + (tail list) retail) + (puthash (car list) t hash) + (while (setq retail (cdr tail)) + (let ((elt (car retail))) + (if (gethash elt hash) + (setcdr tail (cdr retail)) + (puthash elt t hash))) + (setq tail retail))) + (let ((tail list)) + (while tail + (setcdr tail (delete (car tail) (cdr tail))) + (setq tail (cdr tail)))))) list) ;; See http://lists.gnu.org/archive/html/emacs-devel/2013-05/msg00204.html @@ -1373,6 +1384,7 @@ is converted into a string by expressing it in decimal." (defalias 'send-region 'process-send-region) (defalias 'string= 'string-equal) (defalias 'string< 'string-lessp) +(defalias 'string> 'string-greaterp) (defalias 'move-marker 'set-marker) (defalias 'rplaca 'setcar) (defalias 'rplacd 'setcdr) @@ -1491,6 +1503,19 @@ All symbols are bound before the VALUEFORMs are evalled." ,@(mapcar (lambda (binder) `(setq ,@binder)) binders) ,@body)) +(defmacro let-when-compile (bindings &rest body) + "Like `let', but allow for compile time optimization. +Use BINDINGS as in regular `let', but in BODY each usage should +be wrapped in `eval-when-compile'. +This will generate compile-time constants from BINDINGS." + (declare (indent 1) (debug let)) + (cl-progv (mapcar #'car bindings) + (mapcar (lambda (x) (eval (cadr x))) bindings) + (macroexpand-all + (macroexp-progn + body) + macroexpand-all-environment))) + (defmacro with-wrapper-hook (hook args &rest body) "Run BODY, using wrapper functions from HOOK with additional ARGS. HOOK is an abnormal hook. Each hook function in HOOK \"wraps\" @@ -1733,7 +1758,7 @@ this instead of `run-hooks' when running their FOO-mode-hook." (defmacro delay-mode-hooks (&rest body) "Execute BODY, but delay any `run-mode-hooks'. These hooks will be executed by the first following call to -`run-mode-hooks' that occurs outside any `delayed-mode-hooks' form. +`run-mode-hooks' that occurs outside any `delay-mode-hooks' form. Only affects hooks run in the current buffer." (declare (debug t) (indent 0)) `(progn @@ -2814,17 +2839,18 @@ remove properties specified by `yank-excluded-properties'." (let ((inhibit-read-only t)) (dolist (handler yank-handled-properties) (let ((prop (car handler)) - (fun (cdr handler)) - (run-start start)) - (while (< run-start end) - (let ((value (get-text-property run-start prop)) - (run-end (next-single-property-change - run-start prop nil end))) - (funcall fun value run-start run-end) - (setq run-start run-end))))) - (if (eq yank-excluded-properties t) - (set-text-properties start end nil) - (remove-list-of-text-properties start end yank-excluded-properties)))) + (fun (cdr handler)) + (run-start start)) + (while (< run-start end) + (let ((value (get-text-property run-start prop)) + (run-end (next-single-property-change + run-start prop nil end))) + (funcall fun value run-start run-end) + (setq run-start run-end))))) + (with-silent-modifications + (if (eq yank-excluded-properties t) + (set-text-properties start end nil) + (remove-list-of-text-properties start end yank-excluded-properties))))) (defvar yank-undo-function) @@ -3730,7 +3756,8 @@ REP is either a string used as the NEWTEXT arg of `replace-match' or a function. If it is a function, it is called with the actual text of each match, and its value is used as the replacement text. When REP is called, the match data are the result of matching REGEXP against a substring -of STRING. +of STRING, the same substring that is the actual text of the match which +is passed to REP as its argument. To replace only the first match (if any), make REGEXP match up to \\' and replace a sub-expression, e.g. @@ -3808,6 +3835,13 @@ consisting of STR followed by an invisible left-to-right mark (if (string-match "\\cR" str) (concat str (propertize (string ?\x200e) 'invisible t)) str)) + +(defun string-greaterp (string1 string2) + "Return non-nil if STRING1 is greater than STRING2 in lexicographic order. +Case is significant. +Symbols are also allowed; their print names are used instead." + (string-lessp string2 string1)) + ;;;; Specifying things to do later. diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el index 64459353e1c..98ad5acf268 100644 --- a/lisp/term/common-win.el +++ b/lisp/term/common-win.el @@ -419,4 +419,6 @@ the operating system.") (setq defined-colors (cons this-color defined-colors)))) defined-colors))) +(provide 'term/common-win) + ;;; common-win.el ends here diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 9264a1cf033..f603f3e0f6d 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -717,10 +717,6 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") ;;;; Pasteboard support. -(declare-function ns-get-selection-internal "nsselect.m" (buffer)) - -(define-obsolete-function-alias 'ns-get-cut-buffer-internal - 'ns-get-selection-internal "24.1") (define-obsolete-function-alias 'ns-store-cut-buffer-internal 'gui-set-selection "24.1") @@ -732,7 +728,7 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") (defun ns-paste-secondary () (interactive) - (insert (ns-get-selection-internal 'SECONDARY))) + (insert (gui-get-selection 'SECONDARY))) ;;;; Scrollbar handling. @@ -852,7 +848,8 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") ;; Do the actual Nextstep Windows setup here; the above code just ;; defines functions and variables that we use now. -(defun ns-initialize-window-system (&optional _display) +(cl-defmethod window-system-initialization (&context (window-system (eql ns)) + &optional _display) "Initialize Emacs for Nextstep (Cocoa / GNUstep) windowing." (cl-assert (not ns-initialized)) @@ -925,18 +922,37 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") ;; Any display name is OK. (add-to-list 'display-format-alist '(".*" . ns)) -(gui-method-define handle-args-function ns #'x-handle-args) -(gui-method-define frame-creation-function ns #'x-create-frame-with-faces) -(gui-method-define window-system-initialization ns - #'ns-initialize-window-system) - -(gui-method-define gui-set-selection ns - (lambda (selection value) - (if value (ns-own-selection-internal selection value) - (ns-disown-selection-internal selection)))) -(gui-method-define gui-selection-owner-p ns #'ns-selection-owner-p) -(gui-method-define gui-selection-exists-p ns #'ns-selection-exists-p) -(gui-method-define gui-get-selection ns #'ns-get-selection) +(cl-defmethod handle-args-function (args &context (window-system (eql ns))) + (x-handle-args args)) + +(cl-defmethod frame-creation-function (params &context (window-system (eql ns))) + (x-create-frame-with-faces params)) + +(declare-function ns-own-selection-internal "nsselect.m" (selection value)) +(declare-function ns-disown-selection-internal "nsselect.m" (selection)) +(declare-function ns-selection-owner-p "nsselect.m" + (&optional selection terminal)) +(declare-function ns-selection-exists-p "nsselect.m" + (&optional selection terminal)) +(declare-function ns-get-selection "nsselect.m" + (selection-symbol target-type &optional time-stamp terminal)) + +(cl-defmethod gui-backend-set-selection (selection value + &context (window-system (eql ns))) + (if value (ns-own-selection-internal selection value) + (ns-disown-selection-internal selection))) + +(cl-defmethod gui-backend-selection-owner-p (selection + &context (window-system (eql ns))) + (ns-selection-owner-p selection)) + +(cl-defmethod gui-backend-selection-exists-p (selection + &context (window-system (eql ns))) + (ns-selection-exists-p selection)) + +(cl-defmethod gui-backend-get-selection (selection-symbol target-type + &context (window-system (eql ns))) + (ns-get-selection selection-symbol target-type)) (provide 'ns-win) diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el index dd4a8ae8d13..b6c7222cdc8 100644 --- a/lisp/term/pc-win.el +++ b/lisp/term/pc-win.el @@ -218,8 +218,10 @@ the operating system.") ;; From lisp/term/w32-win.el ; ;;;; Selections -; -(defun w16-get-selection-value (_selection-symbol _target-type) + +;; gui-get-selection is used in select.el +(cl-defmethod gui-backend-get-selection (_selection-symbol _target-type + &context (window-system (eql pc))) "Return the value of the current selection. Consult the selection. Treat empty strings as if they were unset." ;; Don't die if x-get-selection signals an error. @@ -228,8 +230,13 @@ Consult the selection. Treat empty strings as if they were unset." (declare-function w16-selection-exists-p "w16select.c") ;; gui-selection-owner-p is used in simple.el. -(gui-method-define gui-selection-exists-p pc #'w16-selection-exists-p) -(gui-method-define gui-selection-owner-p pc #'w16-selection-owner-p) +(cl-defmethod gui-backend-selection-exists-p (selection + &context (window-system (eql pc))) + (w16-selection-exists-p selection)) + +(cl-defmethod gui-backend-selection-owner-p (selection + &context (window-system (eql pc))) + (w16-selection-owner-p selection)) (defun w16-selection-owner-p (_selection) ;; FIXME: Other systems don't obey select-enable-clipboard here. @@ -250,19 +257,16 @@ Consult the selection. Treat empty strings as if they were unset." ;; gui-set-selection is used in gui-set-selection. (declare-function w16-set-clipboard-data "w16select.c" (string &optional ignored)) -(gui-method-define gui-set-selection pc - (lambda (selection value) - (if (not value) - (if (w16-selection-owner-p selection) - t) - ;; FIXME: Other systems don't obey - ;; gui-select-enable-clipboard here. - (with-demoted-errors "w16-set-clipboard-data: %S" - (w16-set-clipboard-data value)) - value))) - -;; gui-get-selection is used in select.el -(gui-method-define gui-get-selection pc #'w16-get-selection-value) +(cl-defmethod gui-backend-set-selection (selection value + &context (window-system (eql pc))) + (if (not value) + (if (w16-selection-owner-p selection) + t) + ;; FIXME: Other systems don't obey + ;; gui-select-enable-clipboard here. + (with-demoted-errors "w16-set-clipboard-data: %S" + (w16-set-clipboard-data value)) + value)) ;; From src/fontset.c: (fset 'query-fontset 'ignore) @@ -310,15 +314,15 @@ This is used by `msdos-show-help'.") ;; Initialization. ;; --------------------------------------------------------------------------- -;; This function is run, by faces.el:tty-create-frame-with-faces, only -;; for the initial frame (on each terminal, but we have only one). +;; This function is run, by the tty method of `frame-creation-function' +;; (in faces.el), only for the initial frame (on each terminal, but we have +;; only one). ;; This works by setting the `terminal-initted' terminal parameter to -;; this function, the first time `tty-create-frame-with-faces' is -;; called on that terminal. `tty-create-frame-with-faces' is called -;; directly from startup.el and also by `make-frame' through -;; `frame-creation-function-alist'. `make-frame' will call this -;; function if `msdos-create-frame-with-faces' (see below) is not -;; found in `frame-creation-function-alist', which means something is +;; this function, the first time `frame-creation-function' is +;; called on that terminal. `frame-creation-function' is called +;; directly from startup.el and also by `make-frame'. +;; `make-frame' should call our own `frame-creation-function' method instead +;; (see below) so if terminal-init-internal is called it means something is ;; _very_ wrong, because "internal" terminal emulator should not be ;; turned on if our window-system is not `pc'. Therefore, the only ;; Right Thing for us to do here is scream bloody murder. @@ -328,7 +332,9 @@ Errors out because it is not supposed to be called, ever." (error "terminal-init-internal called for window-system `%s'" (window-system))) -(defun msdos-initialize-window-system (&optional _display) +;; window-system-initialization is called by startup.el:command-line. +(cl-defmethod window-system-initialization (&context (window-system (eql pc)) + &optional _display) "Initialization function for the `pc' \"window system\"." (or (eq (window-system) 'pc) (error @@ -370,17 +376,14 @@ Errors out because it is not supposed to be called, ever." (menu-bar-enable-clipboard) (run-hooks 'terminal-init-msdos-hook)) -;; frame-creation-function-alist is examined by frame.el:make-frame. -(gui-method-define frame-creation-function - pc #'msdos-create-frame-with-faces) -;; window-system-initialization-alist is examined by startup.el:command-line. -(gui-method-define window-system-initialization - pc #'msdos-initialize-window-system) +;; frame-creation-function is called by frame.el:make-frame. +(cl-defmethod frame-creation-function (params &context (window-system (eql pc))) + (msdos-create-frame-with-faces params)) + ;; We don't need anything beyond tty-handle-args for handling ;; command-line argument; see startup.el. -(gui-method-define handle-args-function pc #'tty-handle-args) - - +(cl-defmethod handle-args-function (args &context (window-system (eql pc))) + (tty-handle-args args)) ;; --------------------------------------------------------------------------- diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index fa981c6625b..c2055088fb5 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -24,36 +24,21 @@ ;;; Code: +(require 'term/xterm) + (defvar rxvt-function-map (let ((map (make-sparse-keymap))) + (set-keymap-parent map xterm-rxvt-function-map) ;; Set up input-decode-map entries that termcap and terminfo don't know. - (define-key map "\e[A" [up]) - (define-key map "\e[B" [down]) - (define-key map "\e[C" [right]) - (define-key map "\e[D" [left]) - (define-key map "\e[2~" [insert]) - (define-key map "\e[3~" [delete]) - (define-key map "\e[4~" [select]) - (define-key map "\e[5~" [prior]) - (define-key map "\e[6~" [next]) (define-key map "\e[7~" [home]) (define-key map "\e[8~" [end]) - (define-key map "\e[11~" [f1]) - (define-key map "\e[12~" [f2]) - (define-key map "\e[13~" [f3]) - (define-key map "\e[14~" [f4]) - (define-key map "\e[15~" [f5]) - (define-key map "\e[17~" [f6]) - (define-key map "\e[18~" [f7]) - (define-key map "\e[19~" [f8]) - (define-key map "\e[20~" [f9]) - (define-key map "\e[21~" [f10]) ;; The strings emitted by f11 and f12 are the same as the strings ;; emitted by S-f1 and S-f2, so don't define f11 and f12. ;; (define-key rxvt-function-map "\e[23~" [f11]) ;; (define-key rxvt-function-map "\e[24~" [f12]) - (define-key map "\e[29~" [print]) + (define-key map "\e[23~" [S-f1]) + (define-key map "\e[24~" [S-f2]) (define-key map "\e[11^" [C-f1]) (define-key map "\e[12^" [C-f2]) @@ -66,8 +51,6 @@ (define-key map "\e[20^" [C-f9]) (define-key map "\e[21^" [C-f10]) - (define-key map "\e[23~" [S-f1]) - (define-key map "\e[24~" [S-f2]) (define-key map "\e[25~" [S-f3]) (define-key map "\e[26~" [S-f4]) (define-key map "\e[28~" [S-f5]) @@ -99,7 +82,6 @@ (define-key map "\eOa" [C-up]) (define-key map "\eOb" [C-down]) - (define-key map "\e[2;2~" [S-insert]) (define-key map "\e[3$" [S-delete]) (define-key map "\e[5$" [S-prior]) (define-key map "\e[6$" [S-next]) @@ -157,26 +139,6 @@ map) "Keymap of possible alternative meanings for some keys.") -(defun terminal-init-rxvt () - "Terminal initialization function for rxvt." - - (let ((map (copy-keymap rxvt-alternatives-map))) - (set-keymap-parent map (keymap-parent local-function-key-map)) - (set-keymap-parent local-function-key-map map)) - - ;; Use inheritance to let the main keymap override those defaults. - ;; This way we don't override terminfo-derived settings or settings - ;; made in the init file. - (let ((m (copy-keymap rxvt-function-map))) - (set-keymap-parent m (keymap-parent input-decode-map)) - (set-keymap-parent input-decode-map m)) - - ;; Initialize colors and background mode. - (rxvt-register-default-colors) - (rxvt-set-background-mode) - ;; This recomputes all the default faces given the colors we've just set up. - (tty-set-up-initial-frame-faces)) - ;; Set up colors, for those versions of rxvt that support it. (defvar rxvt-standard-colors ;; The names of the colors in the comments taken from the rxvt.1 man @@ -199,93 +161,17 @@ ("brightwhite" 15 (255 255 255))) ; white "Names of 16 standard rxvt colors, their numbers, and RGB values.") -(defun rxvt-rgb-convert-to-16bit (prim) - "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value." - (logior prim (lsh prim 8))) - -(defun rxvt-register-default-colors () - "Register the default set of colors for rxvt or compatible emulator. +(defun terminal-init-rxvt () + "Terminal initialization function for rxvt." -This function registers the number of colors returned by `display-color-cells' -for the currently selected frame." - (let* ((ncolors (display-color-cells)) - (colors rxvt-standard-colors) - (color (car colors))) - (if (> ncolors 0) - ;; Clear the 8 default tty colors registered by startup.el - (tty-color-clear)) - ;; Only register as many colors as are supported by the display. - (while (and (> ncolors 0) colors) - (tty-color-define (car color) (cadr color) - (mapcar 'rxvt-rgb-convert-to-16bit - (car (cddr color)))) - (setq colors (cdr colors) - color (car colors) - ncolors (1- ncolors))) - (when (> ncolors 0) - (cond - ((= ncolors 240) ; 256-color rxvt - ;; 216 non-gray colors first - (let ((r 0) (g 0) (b 0)) - (while (> ncolors 24) - ;; This and other formulas taken from 256colres.pl and - ;; 88colres.pl in the xterm distribution. - (tty-color-define (format "color-%d" (- 256 ncolors)) - (- 256 ncolors) - (mapcar 'rxvt-rgb-convert-to-16bit - (list (if (zerop r) 0 (+ (* r 40) 55)) - (if (zerop g) 0 (+ (* g 40) 55)) - (if (zerop b) 0 (+ (* b 40) 55))))) - (setq b (1+ b)) - (if (> b 5) - (setq g (1+ g) - b 0)) - (if (> g 5) - (setq r (1+ r) - g 0)) - (setq ncolors (1- ncolors)))) - ;; Now the 24 gray colors - (while (> ncolors 0) - (setq color (rxvt-rgb-convert-to-16bit (+ 8 (* (- 24 ncolors) 10)))) - (tty-color-define (format "color-%d" (- 256 ncolors)) - (- 256 ncolors) - (list color color color)) - (setq ncolors (1- ncolors)))) + (xterm--push-map rxvt-alternatives-map local-function-key-map) + (xterm--push-map rxvt-function-map input-decode-map) - ((= ncolors 72) ; rxvt-unicode - ;; 64 non-gray colors - (let ((levels '(0 139 205 255)) - (r 0) (g 0) (b 0)) - (while (> ncolors 8) - (tty-color-define (format "color-%d" (- 88 ncolors)) - (- 88 ncolors) - (mapcar 'rxvt-rgb-convert-to-16bit - (list (nth r levels) - (nth g levels) - (nth b levels)))) - (setq b (1+ b)) - (if (> b 3) - (setq g (1+ g) - b 0)) - (if (> g 3) - (setq r (1+ r) - g 0)) - (setq ncolors (1- ncolors)))) - ;; Now the 8 gray colors - (while (> ncolors 0) - (setq color (rxvt-rgb-convert-to-16bit - (floor - (if (= ncolors 8) - 46.36363636 - (+ (* (- 8 ncolors) 23.18181818) 69.54545454))))) - (tty-color-define (format "color-%d" (- 88 ncolors)) - (- 88 ncolors) - (list color color color)) - (setq ncolors (1- ncolors)))) - (t (error "Unsupported number of rxvt colors (%d)" (+ 16 ncolors))))) - ;; Modifying color mappings means realized faces don't use the - ;; right colors, so clear them. - (clear-face-cache))) + ;; Initialize colors and background mode. + (xterm-register-default-colors rxvt-standard-colors) + (rxvt-set-background-mode) + ;; This recomputes all the default faces given the colors we've just set up. + (tty-set-up-initial-frame-faces)) ;; rxvt puts the default colors into an environment variable ;; COLORFGBG. We use this to set the background mode in a more diff --git a/lisp/term/screen.el b/lisp/term/screen.el index 3587c4f95e5..41fd916a785 100644 --- a/lisp/term/screen.el +++ b/lisp/term/screen.el @@ -1,9 +1,22 @@ ;;; screen.el --- terminal initialization for screen and tmux -*- lexical-binding: t -*- ;; Copyright (C) 1995, 2001-2015 Free Software Foundation, Inc. +(require 'term/xterm) + +(defcustom xterm-screen-extra-capabilities '(modifyOtherKeys) + "Extra capabilities supported under \"screen\". +Some features of screen depend on the terminal emulator in which +it runs, which can change when the screen session is moved to another tty." + :type xterm--extra-capabilities-type + :group 'xterm) + (defun terminal-init-screen () "Terminal initialization function for screen." - ;; Treat a screen terminal similar to an xterm. - (tty-run-terminal-initialization (selected-frame) "xterm")) + ;; Treat a screen terminal similar to an xterm, but don't use + ;; xterm-extra-capabilities's `check' setting since that doesn't seem + ;; to work so well (it depends too much on the surrounding terminal + ;; emulator, which can change during the session, bug#20356). + (let ((xterm-extra-capabilities xterm-screen-extra-capabilities)) + (tty-run-terminal-initialization (selected-frame) "xterm"))) ;; screen.el ends here diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el index 3571b488e7d..c1f5928bebe 100644 --- a/lisp/term/tvi970.el +++ b/lisp/term/tvi970.el @@ -105,11 +105,11 @@ With a prefix argument ARG, enable the mode if ARG is positive, and disable it otherwise. If called from Lisp, enable the mode if ARG is omitted or nil. -In ``alternate keypad mode'', the keys send distinct escape +In alternate keypad mode, the keys send distinct escape sequences, meaning that they can have their own bindings, independent of the normal number keys. -When disabled, the terminal enters ``numeric keypad mode'', in +When disabled, the terminal enters numeric keypad mode, in which the keypad's keys act as ordinary digits." :variable (terminal-parameter nil 'tvi970-keypad-numeric) (send-string-to-terminal diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index b0667e6c4f7..8bbc3ddf10d 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -290,7 +290,8 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") (declare-function x-parse-geometry "frame.c" (string)) (defvar x-command-line-resources) -(defun w32-initialize-window-system (&optional _display) +(cl-defmethod window-system-initialization (&context (window-system (eql w32)) + &optional _display) "Initialize Emacs for W32 GUI frames." (cl-assert (not w32-initialized)) @@ -376,11 +377,11 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") (setq w32-initialized t)) (add-to-list 'display-format-alist '("\\`w32\\'" . w32)) -(gui-method-define handle-args-function w32 #'x-handle-args) -(gui-method-define frame-creation-function w32 - #'x-create-frame-with-faces) -(gui-method-define window-system-initialization w32 - #'w32-initialize-window-system) +(cl-defmethod handle-args-function (args &context (window-system (eql w32))) + (x-handle-args args)) + +(cl-defmethod frame-creation-function (params &context (window-system (eql w32))) + (x-create-frame-with-faces params)) ;;;; Selections @@ -406,18 +407,41 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") (and (memq selection '(nil PRIMARY SECONDARY)) (get 'x-selections (or selection 'PRIMARY)))) -(gui-method-define gui-set-selection w32 #'w32--set-selection) -(gui-method-define gui-get-selection w32 #'w32--get-selection) +(cl-defmethod gui-backend-set-selection (type value + &context (window-system (eql w32))) + (w32--set-selection type value)) + +(cl-defmethod gui-backend-get-selection (type data-type + &context (window-system (eql w32))) + (w32--get-selection type data-type)) + +(cl-defmethod gui-backend-selection-owner-p (selection + &context (window-system (eql w32))) + (w32--selection-owner-p selection)) -(gui-method-define gui-selection-owner-p w32 #'w32--selection-owner-p) -(gui-method-define gui-selection-exists-p w32 #'w32-selection-exists-p) +(cl-defmethod gui-backend-selection-exists-p (selection + &context (window-system (eql w32))) + (w32-selection-exists-p selection)) (when (eq system-type 'windows-nt) ;; Make copy&pasting in w32's console interact with the system's clipboard! - (gui-method-define gui-set-selection nil #'w32--set-selection) - (gui-method-define gui-get-selection nil #'w32--get-selection) - (gui-method-define gui-selection-owner-p nil #'w32--selection-owner-p) - (gui-method-define gui-selection-exists-p nil #'w32-selection-exists-p)) + ;; We could move those cl-defmethods outside of the `when' and use + ;; "&context (system-type (eql windows-nt))" instead! + (cl-defmethod gui-backend-set-selection (type value + &context (window-system (eql nil))) + (w32--set-selection type value)) + + (cl-defmethod gui-backend-get-selection (type data-type + &context (window-system (eql nil))) + (w32--get-selection type data-type)) + + (cl-defmethod gui-backend-selection-owner-p (selection + &context (window-system (eql nil))) + (w32--selection-owner-p selection)) + + (cl-defmethod gui-selection-exists-p (selection + &context (window-system (eql nil))) + (w32-selection-exists-p selection))) ;; The "Windows" keys on newer keyboards bring up the Start menu ;; whether you want it or not - make Emacs ignore these keystrokes diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el index a7056cd5edf..29ab2f16e1c 100644 --- a/lisp/term/w32console.el +++ b/lisp/term/w32console.el @@ -65,7 +65,15 @@ (when oem-cs-p (set-keyboard-coding-system oem-code-page-coding) (set-terminal-coding-system - (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)))) + (if oem-o-cs-p oem-code-page-output-coding oem-code-page-coding)) + ;; Since we changed the terminal encoding, we need to repeat + ;; the test for Unicode quotes being displayable. + (dolist (char-repl + '((?‘ . [?\']) (?’ . [?\']) (?“ . [?\"]) (?” . [?\"]))) + (when (not (char-displayable-p (car char-repl))) + (or standard-display-table + (setq standard-display-table (make-display-table))) + (aset standard-display-table (car char-repl) (cdr char-repl)))))) (let* ((colors w32-tty-standard-colors) (color (car colors))) (tty-color-clear) diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index b0902942f8f..39145ff81e6 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -29,8 +29,7 @@ ;; Beginning in Emacs 23, the act of loading this file should not have ;; the side effect of initializing the window system or processing ;; command line arguments (this file is now loaded in loadup.el). See -;; the variables `handle-args-function-alist' and -;; `window-system-initialization-alist' for more details. +;; `handle-args-function' and `window-system-initialization' for more details. ;; startup.el will then examine startup files, and eventually call the hooks ;; which create the first window(s). @@ -72,6 +71,7 @@ (if (not (fboundp 'x-create-frame)) (error "%s: Loading x-win.el but not compiled for X" (invocation-name))) +(require 'term/common-win) (require 'frame) (require 'mouse) (require 'scroll-bar) @@ -1205,7 +1205,8 @@ This returns an error if any Emacs frames are X frames." (defvar x-display-name) (defvar x-command-line-resources) -(defun x-initialize-window-system (&optional display) +(cl-defmethod window-system-initialization (&context (window-system (eql x)) + &optional display) "Initialize Emacs for X frames and open the first connection to an X server." (cl-assert (not x-initialized)) @@ -1322,18 +1323,41 @@ This returns an error if any Emacs frames are X frames." (x-apply-session-resources) (setq x-initialized t)) +(declare-function x-own-selection-internal "xselect.c" + (selection value &optional frame)) +(declare-function x-disown-selection-internal "xselect.c" + (selection &optional time-object terminal)) +(declare-function x-selection-owner-p "xselect.c" + (&optional selection terminal)) +(declare-function x-selection-exists-p "xselect.c" + (&optional selection terminal)) +(declare-function x-get-selection-internal "xselect.c" + (selection-symbol target-type &optional time-stamp terminal)) + (add-to-list 'display-format-alist '("\\`[^:]*:[0-9]+\\(\\.[0-9]+\\)?\\'" . x)) -(gui-method-define handle-args-function x #'x-handle-args) -(gui-method-define frame-creation-function x #'x-create-frame-with-faces) -(gui-method-define window-system-initialization x #'x-initialize-window-system) - -(gui-method-define gui-set-selection x - (lambda (selection value) - (if value (x-own-selection-internal selection value) - (x-disown-selection-internal selection)))) -(gui-method-define gui-selection-owner-p x #'x-selection-owner-p) -(gui-method-define gui-selection-exists-p x #'x-selection-exists-p) -(gui-method-define gui-get-selection x #'x-get-selection-internal) +(cl-defmethod handle-args-function (args &context (window-system (eql x))) + (x-handle-args args)) + +(cl-defmethod frame-creation-function (params &context (window-system (eql x))) + (x-create-frame-with-faces params)) + +(cl-defmethod gui-backend-set-selection (selection value + &context (window-system (eql x))) + (if value (x-own-selection-internal selection value) + (x-disown-selection-internal selection))) + +(cl-defmethod gui-backend-selection-owner-p (selection + &context (window-system (eql x))) + (x-selection-owner-p selection)) + +(cl-defmethod gui-backend-selection-exists-p (selection + &context (window-system (eql x))) + (x-selection-exists-p selection)) + +(cl-defmethod gui-backend-get-selection (selection-symbol target-type + &context (window-system (eql x)) + &optional time-stamp terminal) + (x-get-selection-internal selection-symbol target-type time-stamp terminal)) ;; Initiate drag and drop (add-hook 'after-make-frame-functions 'x-dnd-init-frame) diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index 726ecf91f85..f7f80073cd7 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -29,6 +29,14 @@ :version "24.1" :group 'terminals) +(defconst xterm--extra-capabilities-type + ;; NOTE: If you add entries here, make sure to update + ;; `terminal-init-xterm' as well. + '(set (const :tag "modifyOtherKeys support" modifyOtherKeys) + (const :tag "report background" reportBackground) + (const :tag "get X selection" getSelection) + (const :tag "set X selection" setSelection))) + (defcustom xterm-extra-capabilities 'check "Whether Xterm supports some additional, more modern, features. If nil, just assume that it does not. @@ -38,15 +46,11 @@ If a list, assume that the listed features are supported, without checking. The relevant features are: modifyOtherKeys -- if supported, more key bindings work (e.g., \"\\C-,\") reportBackground -- if supported, Xterm reports its background color - setSelection -- if supported, Xterm saves yanked text to the X selection" + getSelection -- if supported, Xterm yanks text from the X selection + setSelection -- if supported, Xterm saves killed text to the X selection" :version "24.1" - :type '(choice (const :tag "No" nil) - (const :tag "Check" check) - ;; NOTE: If you add entries here, make sure to update - ;; `terminal-init-xterm' as well. - (set (const :tag "modifyOtherKeys support" modifyOtherKeys) - (const :tag "report background" reportBackground) - (const :tag "set X selection" setSelection)))) + :type `(choice (const :tag "Check" check) + ,xterm--extra-capabilities-type)) (defcustom xterm-max-cut-length 100000 "Maximum number of bytes to cut into xterm using the OSC 52 sequence. @@ -93,20 +97,50 @@ string bytes that can be copied is 3/4 of this value." (define-key global-map [xterm-paste] #'xterm-paste) -(defvar xterm-function-map +(defvar xterm-rxvt-function-map (let ((map (make-sparse-keymap))) + (define-key map "\e[2~" [insert]) + (define-key map "\e[3~" [delete]) + (define-key map "\e[4~" [select]) + (define-key map "\e[5~" [prior]) + (define-key map "\e[6~" [next]) - ;; xterm from X.org 6.8.2 uses these key definitions. - (define-key map "\eOP" [f1]) - (define-key map "\eOQ" [f2]) - (define-key map "\eOR" [f3]) - (define-key map "\eOS" [f4]) (define-key map "\e[15~" [f5]) (define-key map "\e[17~" [f6]) (define-key map "\e[18~" [f7]) (define-key map "\e[19~" [f8]) (define-key map "\e[20~" [f9]) (define-key map "\e[21~" [f10]) + + (define-key map "\e[2;2~" [S-insert]) + + ;; Other versions of xterm might emit these. + (define-key map "\e[A" [up]) + (define-key map "\e[B" [down]) + (define-key map "\e[C" [right]) + (define-key map "\e[D" [left]) + + (define-key map "\e[11~" [f1]) + (define-key map "\e[12~" [f2]) + (define-key map "\e[13~" [f3]) + (define-key map "\e[14~" [f4]) + + ;; Recognize the start of a bracketed paste sequence. The handler + ;; internally recognizes the end. + (define-key map "\e[200~" [xterm-paste]) + + map) + "Keymap of escape sequences, shared between xterm and rxvt support.") + +(defvar xterm-function-map + (let ((map (make-sparse-keymap))) + (set-keymap-parent map xterm-rxvt-function-map) + + ;; xterm from X.org 6.8.2 uses these key definitions. + (define-key map "\eOP" [f1]) + (define-key map "\eOQ" [f2]) + (define-key map "\eOR" [f3]) + (define-key map "\eOS" [f4]) (define-key map "\e[23~" [f11]) (define-key map "\e[24~" [f12]) @@ -235,12 +269,6 @@ string bytes that can be copied is 3/4 of this value." (define-key map "\e[1;3F" [M-end]) (define-key map "\e[1;3H" [M-home]) - (define-key map "\e[2~" [insert]) - (define-key map "\e[3~" [delete]) - (define-key map "\e[5~" [prior]) - (define-key map "\e[6~" [next]) - - (define-key map "\e[2;2~" [S-insert]) (define-key map "\e[3;2~" [S-delete]) (define-key map "\e[5;2~" [S-prior]) (define-key map "\e[6;2~" [S-next]) @@ -275,7 +303,6 @@ string bytes that can be copied is 3/4 of this value." (define-key map "\e[5;3~" [M-prior]) (define-key map "\e[6;3~" [M-next]) - (define-key map "\e[4~" [select]) (define-key map "\e[29~" [print]) (define-key map "\eOj" [kp-multiply]) @@ -480,10 +507,6 @@ string bytes that can be copied is 3/4 of this value." (format "\e[%d;%du" (nth 1 bind) (nth 0 bind)) (nth 2 bind))) ;; Other versions of xterm might emit these. - (define-key map "\e[A" [up]) - (define-key map "\e[B" [down]) - (define-key map "\e[C" [right]) - (define-key map "\e[D" [left]) (define-key map "\e[1~" [home]) (define-key map "\eO2A" [S-up]) @@ -500,15 +523,6 @@ string bytes that can be copied is 3/4 of this value." (define-key map "\eO5F" [C-end]) (define-key map "\eO5H" [C-home]) - (define-key map "\e[11~" [f1]) - (define-key map "\e[12~" [f2]) - (define-key map "\e[13~" [f3]) - (define-key map "\e[14~" [f4]) - - ;; Recognize the start of a bracketed paste sequence. The handler - ;; internally recognizes the end. - (define-key map "\e[200~" [xterm-paste]) - map) "Function key map overrides for xterm.") @@ -578,6 +592,29 @@ string bytes that can be copied is 3/4 of this value." map) "Keymap of possible alternative meanings for some keys.") +;; Set up colors, for those versions of xterm that support it. +(defvar xterm-standard-colors + ;; The names in the comments taken from XTerm-col.ad in the xterm + ;; distribution, see ftp://dickey.his.com/xterm/. RGB values are + ;; from rgb.txt. + '(("black" 0 ( 0 0 0)) ; black + ("red" 1 (205 0 0)) ; red3 + ("green" 2 ( 0 205 0)) ; green3 + ("yellow" 3 (205 205 0)) ; yellow3 + ("blue" 4 ( 0 0 238)) ; blue2 + ("magenta" 5 (205 0 205)) ; magenta3 + ("cyan" 6 ( 0 205 205)) ; cyan3 + ("white" 7 (229 229 229)) ; gray90 + ("brightblack" 8 (127 127 127)) ; gray50 + ("brightred" 9 (255 0 0)) ; red + ("brightgreen" 10 ( 0 255 0)) ; green + ("brightyellow" 11 (255 255 0)) ; yellow + ("brightblue" 12 (92 92 255)) ; rgb:5c/5c/ff + ("brightmagenta" 13 (255 0 255)) ; magenta + ("brightcyan" 14 ( 0 255 255)) ; cyan + ("brightwhite" 15 (255 255 255))) ; white + "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.") + (defun xterm--report-background-handler () (let ((str "") chr) @@ -623,8 +660,11 @@ string bytes that can be copied is 3/4 of this value." (setq version 200)) (when (equal (match-string 1 str) "83") ;; `screen' (which returns 83;40003;0) seems to also lack support for - ;; some of these (bug#17607). - (setq version 240)) + ;; some of these (bug#17607, bug#20356). + ;; Note: this code path should normally not be used any more + ;; since term/screen.el now binds xterm-extra-capabilities + ;; to a fixed value, rather than using the dynamic checking. + (setq version 200)) ;; If version is 242 or higher, assume the xterm supports ;; reporting the background color (TODO: maybe earlier ;; versions do too...) @@ -636,15 +676,19 @@ string bytes that can be copied is 3/4 of this value." ;; introduced) or higher, initialize the ;; modifyOtherKeys support. (when (>= version 216) - (terminal-init-xterm-modify-other-keys)) + (xterm--init-modify-other-keys)) ;; In version 203 support for accessing the X selection was ;; added. Hterm reports itself as version 256 and supports it ;; as well. gnome-terminal doesn't and is excluded by this ;; test. (when (>= version 203) - (terminal-init-xterm-activate-set-selection)))))) + ;; Most xterms seem to have it disabled by default, and if it's + ;; disabled, C-y will incur a timeout, so we only use it if the user + ;; explicitly requests it. + ;;(xterm--init-activate-get-selection) + (xterm--init-activate-set-selection)))))) -(defun xterm--query (query handlers) +(defun xterm--query (query handlers &optional no-async) "Send QUERY string to the terminal and watch for a response. HANDLERS is an alist with elements of the form (STRING . FUNCTION). We run the first FUNCTION whose STRING matches the input events." @@ -652,7 +696,7 @@ We run the first FUNCTION whose STRING matches the input events." ;; rather annoying (bug#6758). Maybe we could always use the asynchronous ;; approach, but it's less tested. ;; FIXME: Merge the two branches. - (if (input-pending-p) + (if (and (input-pending-p) (not no-async)) (progn (dolist (handler handlers) (define-key input-decode-map (car handler) @@ -682,6 +726,14 @@ We run the first FUNCTION whose STRING matches the input events." (push (aref (car handler) (setq i (1- i))) unread-command-events))))))) +(defun xterm--push-map (map basemap) + ;; Use inheritance to let the main keymaps override those defaults. + ;; This way we don't override terminfo-derived settings or settings + ;; made in the init file. + (set-keymap-parent + basemap + (make-composed-keymap map (keymap-parent basemap)))) + (defun terminal-init-xterm () "Terminal initialization function for xterm." ;; rxvt terminals sometimes set the TERM variable to "xterm", but @@ -691,19 +743,10 @@ We run the first FUNCTION whose STRING matches the input events." (string-match "\\`rxvt" (getenv "COLORTERM" (selected-frame)))) (tty-run-terminal-initialization (selected-frame) "rxvt") - (let ((map (copy-keymap xterm-alternatives-map))) - (set-keymap-parent map (keymap-parent local-function-key-map)) - (set-keymap-parent local-function-key-map map)) - - (let ((map (copy-keymap xterm-function-map))) + (xterm--push-map xterm-alternatives-map local-function-key-map) + (xterm--push-map xterm-function-map input-decode-map)) - ;; Use inheritance to let the main keymap override those defaults. - ;; This way we don't override terminfo-derived settings or settings - ;; made in the init file. - (set-keymap-parent map (keymap-parent input-decode-map)) - (set-keymap-parent input-decode-map map))) - - (xterm-register-default-colors) + (xterm-register-default-colors xterm-standard-colors) (tty-set-up-initial-frame-faces) (if (eq xterm-extra-capabilities 'check) @@ -721,38 +764,73 @@ We run the first FUNCTION whose STRING matches the input events." '(("\e]11;" . xterm--report-background-handler)))) (when (memq 'modifyOtherKeys xterm-extra-capabilities) - (terminal-init-xterm-modify-other-keys)) + (xterm--init-modify-other-keys)) + (when (memq 'getSelection xterm-extra-capabilities) + (xterm--init-activate-get-selection)) (when (memq 'setSelection xterm-extra-capabilities) - (terminal-init-xterm-activate-set-selection))) + (xterm--init-activate-set-selection))) ;; Unconditionally enable bracketed paste mode: terminals that don't ;; support it just ignore the sequence. - (terminal-init-xterm-bracketed-paste-mode) + (xterm--init-bracketed-paste-mode) (run-hooks 'terminal-init-xterm-hook)) -(defun terminal-init-xterm-modify-other-keys () +(defun xterm--init-modify-other-keys () "Terminal initialization for xterm's modifyOtherKeys support." (send-string-to-terminal "\e[>4;1m") (push "\e[>4m" (terminal-parameter nil 'tty-mode-reset-strings)) (push "\e[>4;1m" (terminal-parameter nil 'tty-mode-set-strings))) -(defun terminal-init-xterm-bracketed-paste-mode () +(defun xterm--init-bracketed-paste-mode () "Terminal initialization for bracketed paste mode." (send-string-to-terminal "\e[?2004h") (push "\e[?2004l" (terminal-parameter nil 'tty-mode-reset-strings)) (push "\e[?2004h" (terminal-parameter nil 'tty-mode-set-strings))) -(defun terminal-init-xterm-activate-set-selection () +(defun xterm--init-activate-get-selection () + "Terminal initialization for `gui-get-selection'." + (set-terminal-parameter nil 'xterm--get-selection t)) + +(defun xterm--init-activate-set-selection () "Terminal initialization for `gui-set-selection'." (set-terminal-parameter nil 'xterm--set-selection t)) -;; FIXME: This defines the gui method for all terminals, even tho it only -;; supports a subset of them. -(gui-method-define gui-set-selection nil #'xterm--set-selection) - -(defun xterm--set-selection (type data) +(defun xterm--selection-char (type) + (pcase type + ('PRIMARY "p") + ('CLIPBOARD "c") + (_ (error "Invalid selection type: %S" type)))) + +(cl-defmethod gui-backend-get-selection + (type data-type + &context (window-system (eql nil)) + ;; Only applies to terminals which have it enabled. + ((terminal-parameter nil 'xterm--get-selection) (eql t))) + (unless (eq data-type 'STRING) + (error "Unsupported data type %S" data-type)) + (let* ((screen (eq (terminal-parameter nil 'terminal-initted) + 'terminal-init-screen)) + (query (concat "\e]52;" (xterm--selection-char type) ";"))) + (with-temp-buffer + (set-buffer-multibyte nil) + (xterm--query + (concat (when screen "\eP") query "?\a" (when screen "\e\\")) + (list (cons query (lambda () + (while (let ((char (read-char))) + (unless (eq char ?\a) + (insert char) + t)))))) + 'no-async) + (base64-decode-region (point-min) (point-max)) + (decode-coding-region (point-min) (point-max) 'utf-8-unix t)))) + +(cl-defmethod gui-backend-set-selection + (type data + &context (window-system (eql nil)) + ;; Only applies to terminals which have it enabled. + ((terminal-parameter nil 'xterm--set-selection) (eql t))) "Copy DATA to the X selection using the OSC 52 escape sequence. TYPE specifies which selection to set; it must be either @@ -773,72 +851,38 @@ program. When inside the screen program, this function also chops long DCS sequences into multiple smaller ones to avoid hitting screen's max DCS length." (let* ((screen (eq (terminal-parameter nil 'terminal-initted) - 'terminal-init-screen))) - ;; Only do something if the current terminal is actually an XTerm - ;; or screen. - (when (terminal-parameter nil 'xterm--set-selection) - (let* ((bytes (encode-coding-string data 'utf-8-unix)) - (base-64 (if screen - (replace-regexp-in-string - "\n" "\e\\\eP" - (base64-encode-string bytes) - :fixedcase :literal) - (base64-encode-string bytes :no-line-break))) - (length (length base-64))) - (if (> length xterm-max-cut-length) - (progn - (warn "Selection too long to send to terminal: %d bytes" length) - (sit-for 2)) - (send-string-to-terminal - (concat - (when screen "\eP") - "\e]52;" - (pcase type - ('PRIMARY "p") - ('CLIPBOARD "c") - (_ (error "Invalid selection type: %S" type))) - ";" - base-64 - "\a" - (when screen "\e\\")))))))) - -;; Set up colors, for those versions of xterm that support it. -(defvar xterm-standard-colors - ;; The names in the comments taken from XTerm-col.ad in the xterm - ;; distribution, see ftp://dickey.his.com/xterm/. RGB values are - ;; from rgb.txt. - '(("black" 0 ( 0 0 0)) ; black - ("red" 1 (205 0 0)) ; red3 - ("green" 2 ( 0 205 0)) ; green3 - ("yellow" 3 (205 205 0)) ; yellow3 - ("blue" 4 ( 0 0 238)) ; blue2 - ("magenta" 5 (205 0 205)) ; magenta3 - ("cyan" 6 ( 0 205 205)) ; cyan3 - ("white" 7 (229 229 229)) ; gray90 - ("brightblack" 8 (127 127 127)) ; gray50 - ("brightred" 9 (255 0 0)) ; red - ("brightgreen" 10 ( 0 255 0)) ; green - ("brightyellow" 11 (255 255 0)) ; yellow - ("brightblue" 12 (92 92 255)) ; rgb:5c/5c/ff - ("brightmagenta" 13 (255 0 255)) ; magenta - ("brightcyan" 14 ( 0 255 255)) ; cyan - ("brightwhite" 15 (255 255 255))) ; white - "Names of 16 standard xterm/aixterm colors, their numbers, and RGB values.") + 'terminal-init-screen)) + (bytes (encode-coding-string data 'utf-8-unix)) + (base-64 (if screen + (replace-regexp-in-string + "\n" "\e\\\eP" + (base64-encode-string bytes) + :fixedcase :literal) + (base64-encode-string bytes :no-line-break))) + (length (length base-64))) + (if (> length xterm-max-cut-length) + (progn + (warn "Selection too long to send to terminal: %d bytes" length) + (sit-for 2)) + (send-string-to-terminal + (concat + (when screen "\eP") + "\e]52;" (xterm--selection-char type) ";" base-64 "\a" + (when screen "\e\\")))))) (defun xterm-rgb-convert-to-16bit (prim) "Convert an 8-bit primary color value PRIM to a corresponding 16-bit value." (logior prim (lsh prim 8))) -(defun xterm-register-default-colors () +(defun xterm-register-default-colors (colors) "Register the default set of colors for xterm or compatible emulator. This function registers the number of colors returned by `display-color-cells' -for the currently selected frame. The first 16 colors are taken from -`xterm-standard-colors', which see, while the rest are computed assuming +for the currently selected frame. The first (16) colors are taken from +COLORS, which see, while the rest are computed assuming either the 88- or 256-color standard color scheme supported by latest versions of xterm." - (let* ((ncolors (display-color-cells (selected-frame))) - (colors xterm-standard-colors) + (let* ((ncolors (display-color-cells)) (color (car colors))) (if (> ncolors 0) ;; Clear the 8 default tty colors registered by startup.el @@ -846,12 +890,12 @@ versions of xterm." ;; Only register as many colors as are supported by the display. (while (and (> ncolors 0) colors) (tty-color-define (car color) (cadr color) - (mapcar 'xterm-rgb-convert-to-16bit + (mapcar #'xterm-rgb-convert-to-16bit (car (cddr color)))) (setq colors (cdr colors) color (car colors) ncolors (1- ncolors))) - ;; We've exhausted the colors from `xterm-standard-colors'. If there + ;; We've exhausted the colors from `colors'. If there ;; are more colors to support, compute them now. (when (> ncolors 0) (cond @@ -863,7 +907,7 @@ versions of xterm." ;; 88colres.pl in the xterm distribution. (tty-color-define (format "color-%d" (- 256 ncolors)) (- 256 ncolors) - (mapcar 'xterm-rgb-convert-to-16bit + (mapcar #'xterm-rgb-convert-to-16bit (list (if (zerop r) 0 (+ (* r 40) 55)) (if (zerop g) 0 (+ (* g 40) 55)) (if (zerop b) 0 (+ (* b 40) 55))))) @@ -890,7 +934,7 @@ versions of xterm." (while (> ncolors 8) (tty-color-define (format "color-%d" (- 88 ncolors)) (- 88 ncolors) - (mapcar 'xterm-rgb-convert-to-16bit + (mapcar #'xterm-rgb-convert-to-16bit (list (nth r levels) (nth g levels) (nth b levels)))) @@ -925,6 +969,6 @@ versions of xterm." (set-terminal-parameter nil 'background-mode 'dark) t)) -(provide 'xterm) - +(provide 'xterm) ;Backward compatibility. +(provide 'term/xterm) ;;; xterm.el ends here diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index 930c39c82cc..14cf402a971 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -298,7 +298,7 @@ during the flood-fill." (defcustom artist-ellipse-right-char ?\) "Character to use at the rightmost position when drawing narrow ellipses. -In this figure, it is the right parenthesis (the ``)'' character): +In this figure, it is the right parenthesis (the \")\" character): ----- ( ) -----" @@ -309,7 +309,7 @@ In this figure, it is the right parenthesis (the ``)'' character): (defcustom artist-ellipse-left-char ?\( "Character to use at the leftmost position when drawing narrow ellipses. -In this figure, it is the left parenthesis (the ``('' character): +In this figure, it is the left parenthesis (the \"(\" character): ----- ( ) -----" @@ -331,7 +331,7 @@ Accept this many characters cutting off a line and still treat it as one line. Example: If `artist-vaporize-fuzziness' is 2, then those will be recognized as - lines from A to B (provided you start vaporizing them at the ``*''): + lines from A to B (provided you start vaporizing them at the \"*\"): / A----*------/-----------B \\/ @@ -342,7 +342,7 @@ Example: \\/ / A----*----/\\/----------B / /\\ - (in fact, only the left part [between the A and the leftmost ``/'' + (in fact, only the left part [between the A and the leftmost \"/\" crossing the line] will be vaporized)." :group 'artist :type 'integer) @@ -397,8 +397,8 @@ Example: ;; This is a defvar, not a defcustom, since the custom ;; package shows lists of characters as a lists of integers, ;; which is confusing - "Characters (``color'') to use when spraying. -They should be ordered from the ``lightest'' to the ``heaviest'' + "Characters (\"color\") to use when spraying. +They should be ordered from the \"lightest\" to the \"heaviest\" since spraying replaces a light character with the next heavier one.") @@ -1275,7 +1275,7 @@ Drawing with the mouse: * Cut copies, then clears the rectangle/square. * When drawing lines or poly-lines, you can set arrows. - See below under ``Arrows'' for more info. + See below under \"Arrows\" for more info. * The mode line shows the currently selected drawing operation. In addition, if it has an asterisk (*) at the end, you @@ -1383,8 +1383,8 @@ Variables artist-vaporize-fuzziness Tolerance when recognizing lines artist-spray-interval Seconds between repeated sprayings artist-spray-radius Size of the spray-area - artist-spray-chars The spray-``color'' - artist-spray-new-chars Initial spray-``color'' + artist-spray-chars The spray-\"color\" + artist-spray-new-chars Initial spray-\"color\" Hooks @@ -2020,7 +2020,7 @@ The replacement is used to convert tabs and new-lines to spaces." (defsubst artist-replace-string (string &optional see-thru) "Replace contents at point with STRING. With optional argument SEE-THRU set to non-nil, text in the buffer -``shines thru'' blanks in the STRING." +\"shines thru\" blanks in the STRING." (let ((char-list (append string nil)) ; convert the string to a list (overwrite-mode 'overwrite-mode-textual) (fill-column 32765) ; Large :-) @@ -2385,7 +2385,7 @@ in the coord." ;; Pretend we are plotting a pixel. Instead we just list it ;; (defmacro artist-put-pixel (point-list x y) - "In POINT-LIST, store a ``pixel'' at coord X,Y." + "In POINT-LIST, store a \"pixel\" at coord X,Y." `(setq ,point-list (append ,point-list (list (artist-new-coord ,x ,y))))) @@ -2928,7 +2928,7 @@ This is done by calling the function specified by `artist-text-renderer-function', which must return a list of strings, to be inserted in the buffer. -Text already in the buffer ``shines thru'' blanks in the rendered text." +Text already in the buffer \"shines thru\" blanks in the rendered text." (let* ((input-text (read-string "Type text to render: ")) (rendered-text (artist-funcall artist-text-renderer-function input-text))) (artist-text-insert-see-thru x y rendered-text))) @@ -2958,7 +2958,7 @@ Blanks in the rendered text overwrite any text in the buffer." Returns a list of points. Each point is on the form (X1 . Y1)." (let ((points)) (while (> n 0) - (let* ((angle (* (random 359) (/ float-pi 180))) + (let* ((angle (degrees-to-radians (random 359))) (dist (random radius)) (point (cons (round (* dist (cos angle))) (round (* dist (sin angle)))))) diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index 5933559b37c..9d6d19e6e1e 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -2229,7 +2229,7 @@ Optional arg COMMA is as in `bibtex-enclosing-field'." bibtex-entry-kill-ring)) ;; If we copied an entry from a buffer containing only this one entry, ;; it can be missing the second "\n". - (unless (looking-back "\n\n") (insert "\n")) + (unless (looking-back "\n\n" (- (point) 2)) (insert "\n")) (unless (functionp bibtex-reference-keys) ;; update `bibtex-reference-keys' (save-excursion @@ -4338,10 +4338,10 @@ Correct and validate again.\n" (goto-char (point-min)) (forward-line 2)) ; first error message (display-buffer err-buf) - nil) ; return `nil' (i.e., buffer is invalid) + nil) ; return nil (i.e., buffer is invalid) (message "%s is syntactically correct" (if mark-active "Region" "Buffer")) - t))) ; return `t' (i.e., buffer is valid) + t))) ; return t (i.e., buffer is valid) (defun bibtex-validate-globally (&optional strings) "Check for duplicate keys in `bibtex-files'. @@ -4395,9 +4395,9 @@ Return t if test was successful, nil otherwise." (goto-char (point-min)) (forward-line 2)) ; first error message (display-buffer err-buf) - nil) ; return `nil' (i.e., buffer is invalid) + nil) ; return nil (i.e., buffer is invalid) (message "No duplicate keys.") - t))) ; return `t' (i.e., buffer is valid) + t))) ; return t (i.e., buffer is valid) (defun bibtex-next-field (begin &optional comma) "Move point to end of text of next BibTeX field or entry head. diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index d1893a36f27..424cdb7f830 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -381,7 +381,8 @@ pseudo-classes, and at-rules." (setq-local comment-start-skip "/\\*+[ \t]*") (setq-local comment-end "*/") (setq-local comment-end-skip "[ \t]*\\*+/") - (setq-local fill-paragraph-function 'css-fill-paragraph) + (setq-local fill-paragraph-function #'css-fill-paragraph) + (setq-local adaptive-fill-function #'css-adaptive-fill) (setq-local add-log-current-defun-function #'css-current-defun-name) (smie-setup css-smie-grammar #'css-smie-rules :forward-token #'css-smie--forward-token @@ -395,6 +396,12 @@ pseudo-classes, and at-rules." (defun css-fill-paragraph (&optional justify) (save-excursion + ;; Fill succeeding comment when invoked right before a multi-line + ;; comment. + (when (save-excursion + (beginning-of-line) + (comment-search-forward (point-at-eol) t)) + (goto-char (match-end 0))) (let ((ppss (syntax-ppss)) (eol (line-end-position))) (cond @@ -414,8 +421,11 @@ pseudo-classes, and at-rules." (paragraph-separate (if (and comment-continue (string-match "[^ \t]" comment-continue)) - (concat "\\(?:[ \t]*" (regexp-quote comment-continue) - "\\)?\\(?:" paragraph-separate "\\)") + (concat "\\(?:[ \t]*\\(?:" + (regexp-quote comment-continue) "\\|" + comment-start-skip "\\|" + comment-end-skip "\\)\\)?" + "\\(?:" paragraph-separate "\\)") paragraph-separate)) (paragraph-start (if (and comment-continue @@ -468,6 +478,12 @@ pseudo-classes, and at-rules." ;; Don't use the default filling code. t))))))) +(defun css-adaptive-fill () + (when (looking-at "[ \t]*/\\*[ \t]*") + (let ((str (match-string 0))) + (and (string-match "/\\*" str) + (replace-match " *" t t str))))) + (defun css-current-defun-name () "Return the name of the CSS section at point, or nil." (save-excursion @@ -504,6 +520,7 @@ pseudo-classes, and at-rules." "Major mode to edit \"Sassy CSS\" files." (setq-local comment-start "// ") (setq-local comment-end "") + (setq-local comment-continue " *") (setq-local comment-start-skip "/[*/]+[ \t]*") (setq-local comment-end-skip "[ \t]*\\(?:\n\\|\\*+/\\)") (setq-local font-lock-defaults '(scss-font-lock-keywords nil t))) diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 498def0b966..b0fcb1724f5 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -1075,9 +1075,11 @@ of `ispell-dictionary-base-alist' elements." (dolist ( tmp-path (list ispell-aspell-dict-dir ispell-aspell-data-dir )) ;; Try xx.dat first, strip out variant, country code, etc, - ;; then try xx_YY.dat (without stripping country code). + ;; then try xx_YY.dat (without stripping country code), + ;; then try xx-alt.dat, for de-alt etc. (dolist (tmp-regexp (list "^[[:alpha:]]+" - "^[[:alpha:]_]+")) + "^[[:alpha:]_]+" + "^[[:alpha:]]+-\\(alt\\|old\\)")) (let ((fullpath (concat tmp-path "/" (and (string-match tmp-regexp dict-name) @@ -2986,10 +2988,14 @@ Keeps argument list for future Ispell invocations for no async support." (or ispell-local-dictionary ispell-dictionary "default")) (sit-for 0) (setq ispell-library-directory (ispell-check-version) + ;; Assign a non-nil value to ispell-process-directory + ;; before calling ispell-start-process, since that + ;; function needs it to set default-directory when + ;; ispell-async-processp is nil. + ispell-process-directory default-directory ispell-process (ispell-start-process) ispell-filter nil - ispell-filter-continue nil - ispell-process-directory default-directory) + ispell-filter-continue nil) (unless (equal ispell-process-directory (expand-file-name "~/")) ;; At this point, `ispell-process-directory' will be "~/" unless using @@ -3015,7 +3021,12 @@ Keeps argument list for future Ispell invocations for no async support." (if (and (or (featurep 'xemacs) (and (boundp 'enable-multibyte-characters) enable-multibyte-characters)) - (fboundp 'set-process-coding-system)) + (fboundp 'set-process-coding-system) + ;; Evidently, some people use the synchronous mode even + ;; when async subprocesses are supported, in which case + ;; set-process-coding-system is bound, but + ;; ispell-process is not a process object. + ispell-async-processp) (set-process-coding-system ispell-process (ispell-get-coding-system) (ispell-get-coding-system))) ;; Get version ID line @@ -3391,7 +3402,7 @@ Must be called after `ispell-buffer-local-parsing' due to dependence on mode." (defun ispell-ignore-fcc (start end) "Delete the Fcc: message header when large attachments are included. -Return value `nil' if file with large attachments is saved. +Return value nil if file with large attachments is saved. This can be used to avoid multiple questions for multiple large attachments. Returns point to starting location afterwards." (let ((result t)) @@ -3889,7 +3900,7 @@ Otherwise, it must be a function which is called to get the limit.") (defun ispell-mime-multipartp (&optional limit) "Return multipart message start boundary or nil if none." - ;; caller must ensure `case-fold-search' is set to `t' + ;; caller must ensure `case-fold-search' is set to t (and (re-search-forward "Content-Type: *multipart/\\([^ \t\n]*;[ \t]*[\n]?[ \t]*\\)+boundary=" diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index d62929b95b5..b9b72ea644f 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -66,7 +66,7 @@ The name of the file is appended to this string, separated by a space." "String containing options for running `makeinfo'. Do not include `--footnote-style' or `--paragraph-indent'; the proper way to specify those is with the Texinfo commands -`@footnotestyle` and `@paragraphindent'." +`@footnotestyle' and `@paragraphindent'." :type 'string :group 'makeinfo) diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index fa09efb64a4..17e8cfdc83c 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el @@ -197,7 +197,7 @@ Return list with entries." "[" default "]: ") (if reftex-mode (if (fboundp 'LaTeX-bibitem-list) - (LaTeX-bibitem-list) + (or (LaTeX-bibitem-list) '("")) (cdr (assoc 'bibview-cache (symbol-value reftex-docstruct-symbol)))) nil) @@ -228,11 +228,11 @@ Return list with entries." (message "No such BibTeX file %s (ignored)" buffer) (message "Scanning bibliography database %s" buffer1) (unless (verify-visited-file-modtime buffer1) - (when (y-or-n-p - (format "File %s changed on disk. Reread from disk? " - (file-name-nondirectory - (buffer-file-name buffer1)))) - (with-current-buffer buffer1 (revert-buffer t t))))) + (when (y-or-n-p + (format "File %s changed on disk. Reread from disk? " + (file-name-nondirectory + (buffer-file-name buffer1)))) + (with-current-buffer buffer1 (revert-buffer t t))))) (set-buffer buffer1) (reftex-with-special-syntax-for-bib @@ -543,7 +543,14 @@ If FORMAT is non-nil `format' entry accordingly." (extra (cond ((equal type "article") - (concat (reftex-get-bib-field "journal" entry) " " + (concat (let ((jt (reftex-get-bib-field "journal" entry))) + ;; biblatex prefers the alternative journaltitle + ;; field, so check if that exists in case journal + ;; is empty. + (if (zerop (length jt)) + (reftex-get-bib-field "journaltitle" entry) + jt)) + " " (reftex-get-bib-field "volume" entry) ", " (reftex-get-bib-field "pages" entry))) ((equal type "book") diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el index be119d9db58..d0e09bff880 100644 --- a/lisp/textmodes/reftex-ref.el +++ b/lisp/textmodes/reftex-ref.el @@ -857,7 +857,8 @@ Optional prefix argument OTHER-WINDOW goes to the label in another window." (docstruct (symbol-value reftex-docstruct-symbol)) ;; If point is inside a \ref{} or \pageref{}, use that as ;; default value. - (default (when (looking-back "\\\\\\(?:page\\)?ref{[-a-zA-Z0-9_*.:]*") + (default (when (looking-back "\\\\\\(?:page\\)?ref{[-a-zA-Z0-9_*.:]*" + (line-beginning-position)) (reftex-this-word "-a-zA-Z0-9_*.:"))) (label (completing-read (if default (format "Label (default %s): " default) diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 085f2d7bdf9..d51fb9b2d4a 100644 --- a/lisp/textmodes/reftex-toc.el +++ b/lisp/textmodes/reftex-toc.el @@ -190,8 +190,11 @@ M-% Global search and replace to rename label at point. x Switch to TOC of external document (with LaTeX package `xr'). z Jump to a specific section (e.g. '3 z' goes to section 3).") +(defvar reftex--rebuilding-toc nil) + ;;;###autoload -(defun reftex-toc (&optional rebuild reuse) +(defun reftex-toc (&optional _rebuild reuse) + ;; FIXME: Get rid of the `rebuild' argument. "Show the table of contents for the current document. When called with a raw C-u prefix, rescan the document first." @@ -201,6 +204,9 @@ When called with a raw C-u prefix, rescan the document first." (interactive) (if (or (not (string= reftex-last-toc-master (reftex-TeX-master-file))) + ;; FIXME: use (interactive "P") to receive current-prefix-arg as + ;; an argument instead of using the var here, which forces us to set + ;; current-prefix-arg in the callers. current-prefix-arg) (reftex-erase-buffer "*toc*")) @@ -225,7 +231,7 @@ When called with a raw C-u prefix, rescan the document first." (docstruct-symbol reftex-docstruct-symbol) (xr-data (assq 'xr (symbol-value reftex-docstruct-symbol))) (xr-alist (cons (cons "" (buffer-file-name)) (nth 1 xr-data))) - (here-I-am (if (boundp 'reftex-rebuilding-toc) + (here-I-am (if reftex--rebuilding-toc (get 'reftex-toc :reftex-data) (car (reftex-where-am-I)))) (unsplittable (if (fboundp 'frame-property) @@ -414,17 +420,17 @@ SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help (if reftex-toc-follow-mode (setq reftex-toc-follow-mode 1))) -(defun reftex-toc-next (&optional arg) +(defun reftex-toc-next (&optional _arg) "Move to next selectable item." - (interactive "p") + (interactive) (when (featurep 'xemacs) (setq zmacs-region-stays t)) (setq reftex-callback-fwd t) (or (eobp) (forward-char 1)) (goto-char (or (next-single-property-change (point) :data) (point)))) -(defun reftex-toc-previous (&optional arg) +(defun reftex-toc-previous (&optional _arg) "Move to previous selectable item." - (interactive "p") + (interactive) (when (featurep 'xemacs) (setq zmacs-region-stays t)) (setq reftex-callback-fwd nil) (goto-char (or (previous-single-property-change (point) :data) @@ -558,7 +564,7 @@ With prefix arg 1, restrict index to the section at point." (reftex-display-index (if restr nil arg) restr))) ;; Rescanning the document and rebuilding the TOC buffer. -(defun reftex-toc-rescan (&rest ignore) +(defun reftex-toc-rescan (&rest _) "Regenerate the *toc* buffer by reparsing file of section at point." (interactive) (if (and reftex-enable-partial-scans @@ -576,12 +582,12 @@ With prefix arg 1, restrict index to the section at point." (switch-to-buffer-other-window (reftex-get-file-buffer-force file)) (setq current-prefix-arg '(4)) - (let ((reftex-rebuilding-toc t)) + (let ((reftex--rebuilding-toc t)) (reftex-toc)))) (reftex-toc-Rescan)) (reftex-kill-temporary-buffers)) -(defun reftex-toc-Rescan (&rest ignore) +(defun reftex-toc-Rescan (&rest _) "Regenerate the *toc* buffer by reparsing the entire document." (interactive) (let* ((line (+ (count-lines (point-min) (point)) (if (bolp) 1 0)))) @@ -589,17 +595,17 @@ With prefix arg 1, restrict index to the section at point." (switch-to-buffer-other-window (reftex-get-file-buffer-force reftex-last-toc-file)) (setq current-prefix-arg '(16)) - (let ((reftex-rebuilding-toc t)) + (let ((reftex--rebuilding-toc t)) (reftex-toc))) -(defun reftex-toc-revert (&rest ignore) +(defun reftex-toc-revert (&rest _) "Regenerate the TOC from the internal lists." (interactive) (let ((unsplittable (if (fboundp 'frame-property) (frame-property (selected-frame) 'unsplittable) (frame-parameter nil 'unsplittable))) - (reftex-rebuilding-toc t)) + (reftex--rebuilding-toc t)) (if unsplittable (switch-to-buffer (reftex-get-file-buffer-force reftex-last-toc-file)) @@ -607,9 +613,9 @@ With prefix arg 1, restrict index to the section at point." (reftex-get-file-buffer-force reftex-last-toc-file)))) (reftex-erase-buffer "*toc*") (setq current-prefix-arg nil) - (reftex-toc t)) + (reftex-toc t t)) -(defun reftex-toc-external (&rest ignore) +(defun reftex-toc-external (&rest _) "Switch to table of contents of an external document." (interactive) (reftex-toc-dframe-p nil 'error) @@ -637,18 +643,17 @@ Useful for large TOCs." ;; Promotion/Demotion stuff -(defvar pro-or-de) -(defvar start-pos) -(defvar start-line) -(defvar mark-line) +(defvar reftex--pro-or-de) +(defvar reftex--start-line) +(defvar reftex--mark-line) -(defun reftex-toc-demote (&optional arg) +(defun reftex-toc-demote (&optional _arg) "Demote section at point. If region is active, apply to all in region." - (interactive "p") + (interactive) (reftex-toc-do-promote 1)) -(defun reftex-toc-promote (&optional arg) +(defun reftex-toc-promote (&optional _arg) "Promote section at point. If region is active, apply to all in region." - (interactive "p") + (interactive) (reftex-toc-do-promote -1)) (defun reftex-toc-do-promote (delta) "Workhorse for `reftex-toc-promote' and `reftex-toc-demote'. @@ -657,14 +662,15 @@ point." ;; We should not do anything unless we are sure this is going to work for ;; each section in the region. Therefore we first collect information and ;; test. - (let* ((start-line (+ (count-lines (point-min) (point)) - (if (bolp) 1 0))) - (mark-line (if (reftex-region-active-p) - (save-excursion (goto-char (mark)) - (+ (count-lines (point-min) (point)) - (if (bolp) 1 0))))) + (let* ((reftex--start-line (+ (count-lines (point-min) (point)) + (if (bolp) 1 0))) + (reftex--mark-line + (if (reftex-region-active-p) + (save-excursion (goto-char (mark)) + (+ (count-lines (point-min) (point)) + (if (bolp) 1 0))))) (start-pos (point)) - (pro-or-de (if (> delta 0) "de" "pro")) + (reftex--pro-or-de (if (> delta 0) "de" "pro")) beg end entries data sections nsec msg) (setq msg (catch 'exit @@ -713,23 +719,23 @@ point." ;; Rescan the document and rebuilt the toc buffer (save-window-excursion (reftex-toc-Rescan)) - (reftex-toc-restore-region start-line mark-line) + (reftex-toc-restore-region reftex--start-line reftex--mark-line) (message "%d section%s %smoted" - nsec (if (= 1 nsec) "" "s") pro-or-de) + nsec (if (= 1 nsec) "" "s") reftex--pro-or-de) nil)) (if msg (progn (ding) (message "%s" msg))))) (defun reftex-toc-restore-region (point-line &optional mark-line) - (let (mpos) - (when mark-line - (goto-char (point-min)) - (forward-line (1- mark-line)) - (setq mpos (point))) + (let ((mpos + (when mark-line + (goto-char (point-min)) + (forward-line (1- mark-line)) + (point)))) (when point-line (goto-char (point-min)) (forward-line (1- point-line))) - (when mark-line + (when mpos (set-mark mpos) (if (featurep 'xemacs) (zmacs-activate-region) @@ -749,7 +755,7 @@ promotion/demotion later. DELTA is the level change." (name nil) ;; Here follows some paranoid code to make very sure we are not ;; going to break anything - (name1 ; dummy + (_ (if (and (markerp marker) (marker-buffer marker)) ;; Buffer is still live and we have the marker. (progn @@ -772,24 +778,24 @@ promotion/demotion later. DELTA is the level change." ;; We don't have a live marker: scan and load files. (reftex-toc-load-all-files-for-promotion))) (level (cdr (assoc name reftex-section-levels-all))) - (dummy (if (not (integerp level)) - (progn - (goto-char toc-point) - (error "Cannot %smote special sections" pro-or-de)))) + (_ (if (not (integerp level)) + (progn + (goto-char toc-point) + (error "Cannot %smote special sections" reftex--pro-or-de)))) (newlevel (if (>= level 0) (+ delta level) (- level delta))) - (dummy2 (if (or (and (>= level 0) (= newlevel -1)) - (and (< level 0) (= newlevel 0))) - (error "Cannot %smote \\%s" pro-or-de name))) + (_ (if (or (and (>= level 0) (= newlevel -1)) + (and (< level 0) (= newlevel 0))) + (error "Cannot %smote \\%s" reftex--pro-or-de name))) (newname (reftex-toc-newhead-from-alist newlevel name reftex-section-levels-all))) (if (and name newname) (list data name newname toc-point) (goto-char toc-point) - (error "Cannot %smote \\%s" pro-or-de name)))) + (error "Cannot %smote \\%s" reftex--pro-or-de name)))) (defun reftex-toc-promote-action (x) "Change the level of a TOC entry. -PRO-OR-DE is assumed to be dynamically scoped into this function." +`reftex--pro-or-de' is assumed to be dynamically scoped into this function." (let* ((data (car x)) (name (nth 1 x)) (newname (nth 2 x)) @@ -798,7 +804,7 @@ PRO-OR-DE is assumed to be dynamically scoped into this function." (goto-char (marker-position marker)) (if (looking-at (concat "\\([ \t]*" reftex-section-pre-regexp "\\)" (regexp-quote name))) (replace-match (concat "\\1" newname)) - (error "Fatal error during %smotion" pro-or-de))))) + (error "Fatal error during %smotion" reftex--pro-or-de))))) (defun reftex-toc-extract-section-number (entry) "Get the numbering of a TOC entry, for message purposes." @@ -848,11 +854,11 @@ if these sets are sorted blocks in the alist." "Make sure all files of the document are being visited by buffers, and that the scanning info is absolutely up to date. We do this by rescanning with `reftex-keep-temporary-buffers' bound to t. -The variable PRO-OR-DE is assumed to be dynamically scoped into this function. +The variable `reftex--pro-or-de' is assumed to be dynamically scoped into this function. When finished, we exit with an error message." (let ((reftex-keep-temporary-buffers t)) (reftex-toc-Rescan) - (reftex-toc-restore-region start-line mark-line) + (reftex-toc-restore-region reftex--start-line reftex--mark-line) (throw 'exit "TOC had to be updated first. Please check selection and repeat the command."))) @@ -895,7 +901,7 @@ label prefix determines the wording of a reference." (let* ((toc (get-text-property (point) :data)) (toc-window (selected-window)) - show-window show-buffer match) + match) (unless toc (error "Don't know which TOC line to visit")) @@ -926,30 +932,33 @@ label prefix determines the wording of a reference." (setq match (reftex-show-label-location toc reftex-callback-fwd no-revisit t)))) - (setq show-window (selected-window) - show-buffer (current-buffer)) - (unless match (select-window toc-window) (error "Cannot find location")) - (select-window toc-window) - - ;; use the `final' parameter to decide what to do next + ;; Use the `final' parameter to decide what to do next. (cond ((eq final t) - (reftex-unhighlight 0) - (select-window show-window)) + (with-selected-window toc-window + (reftex-unhighlight 0))) ((eq final 'hide) - (reftex-unhighlight 0) - (or (one-window-p) (delete-window)) - ;; If `show-window' is still live, show-buffer is already visible - ;; so let's not make it visible in yet-another-window. - (if (window-live-p show-window) - (set-buffer show-buffer) - (switch-to-buffer show-buffer)) - (reftex-re-enlarge)) - (t nil)))) + (let ((show-window (selected-window)) + (show-buffer (window-buffer))) + (unless (eq show-window toc-window) ;FIXME: Can this happen? + (with-selected-window toc-window + (reftex-unhighlight 0) + (or (one-window-p) (delete-window)))) + ;; If `show-window' is still live, show-buffer is already visible + ;; so let's not make it visible in yet-another-window. + (unless (window-live-p show-window) + ;; FIXME: How could show-window not be live? + (switch-to-buffer show-buffer)) + (reftex-re-enlarge))) + (t + (unless (eq (selected-frame) (window-frame toc-window)) + ;; Make sure `toc-window' is not just selected but has focus. + (select-frame-set-input-focus (window-frame toc-window))) + (select-window toc-window))))) (defun reftex-toc-find-section (toc &optional no-revisit) (let* ((file (nth 3 toc)) diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index 9572539af64..f1a917d5b60 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -2446,7 +2446,7 @@ of ENTRY-LIST is a list of cons cells (\"MACRONAME\" . LEVEL). See ;;;*** -;;;### (autoloads nil "reftex-cite" "reftex-cite.el" "5a53c260fa01268c04ea2f558add9d7d") +;;;### (autoloads nil "reftex-cite" "reftex-cite.el" "83811ccf3471820f0ad0dc005ffc88d5") ;;; Generated autoloads from reftex-cite.el (autoload 'reftex-default-bibliography "reftex-cite" "\ @@ -2932,7 +2932,7 @@ When LEVEL is non-nil, increase section numbers on that level. ;;;*** -;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "64cd7a4eaec426177a8fb3689139d935") +;;;### (autoloads nil "reftex-ref" "reftex-ref.el" "2689a4cea701a9d284e0967c313da989") ;;; 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" "8b6d6733d445a55206e84fc119909520") +;;;### (autoloads nil "reftex-toc" "reftex-toc.el" "70daa7ce5ba54f2c8d469337f64636c1") ;;; Generated autoloads from reftex-toc.el (autoload 'reftex-toc "reftex-toc" "\ diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el index cda9703ea6b..9d3f2a92d4b 100644 --- a/lisp/textmodes/rst.el +++ b/lisp/textmodes/rst.el @@ -528,7 +528,7 @@ argument list for `rst-re'.") (defvar rst-re-alist) ; Forward declare to use it in `rst-re'. -;; FIXME: Use `sregex` or `rx` instead of re-inventing the wheel. +;; FIXME: Use `sregex' or `rx' instead of re-inventing the wheel. (rst-testcover-add-compose 'rst-re) ;; testcover: ok. (defun rst-re (&rest args) @@ -1512,8 +1512,8 @@ PFXARG (alternate behavior). This function is a bit of a swiss knife. It is meant to adjust the adornments of a section title in reStructuredText. It tries -to deal with all the possible cases gracefully and to do `the -right thing' in all cases. +to deal with all the possible cases gracefully and to do \"the +right thing\" in all cases. See the documentations of `rst-adjust-adornment-work' and `rst-promote-region' for full details. @@ -3571,8 +3571,8 @@ of your own." ;; properties on comments and literal blocks so they are *not* ;; inline fontified. See (elisp)Search-based Fontification. - ;; FIXME: And / or use `syntax-propertize` functions as in `octave-mod.el` - ;; and other V24 modes. May make `font-lock-extend-region` + ;; FIXME: And / or use `syntax-propertize' functions as in `octave-mod.el' + ;; and other V24 modes. May make `font-lock-extend-region' ;; superfluous. ;; `Comments`_ @@ -3952,11 +3952,11 @@ string)) to be used for converting the document." :package-version "1.2.0") (rst-testcover-defcustom) -;; FIXME: Must be `defcustom`. +;; FIXME: Must be defcustom. (defvar rst-compile-primary-toolset 'html "The default tool-set for `rst-compile'.") -;; FIXME: Must be `defcustom`. +;; FIXME: Must be defcustom. (defvar rst-compile-secondary-toolset 'latex "The default tool-set for `rst-compile' with a prefix argument.") @@ -4035,7 +4035,7 @@ buffer, if the region is not selected." (cadr (assq 'pseudoxml rst-compile-toolsets)) standard-output))) -;; FIXME: Should be `defcustom`. +;; FIXME: Should be defcustom. (defvar rst-pdf-program "xpdf" "Program used to preview PDF files.") @@ -4052,7 +4052,7 @@ buffer, if the region is not selected." ;; output. )) -;; FIXME: Should be `defcustom` or use something like `browse-url`. +;; FIXME: Should be defcustom or use something like `browse-url'. (defvar rst-slides-program "firefox" "Program used to preview S5 slides.") diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index c71ecb4d7a0..2ffe9c1e7ed 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1828,6 +1828,8 @@ This takes effect when first loading the library.") ("array" (nil \n ("Item: " "<item>" str (if sgml-xml-mode "</item>") \n)) "align") + ("article" \n) + ("aside" \n) ("au") ("b") ("big") @@ -1853,7 +1855,10 @@ This takes effect when first loading the library.") "<dd>" (if sgml-xml-mode "</dd>") \n)) ("em") ("fn" "id" "fn") ;; Footnotes were deprecated in HTML 3.2 + ("footer" \n) ("head" \n) + ("header" \n) + ("hgroup" \n) ("html" (\n "<head>\n" "<title>" (setq str (read-input "Title: ")) "</title>\n" @@ -1871,6 +1876,7 @@ This takes effect when first loading the library.") ("lang") ("li" ,(not sgml-xml-mode)) ("math" \n) + ("nav" \n) ("nobr") ("option" t ("value") ("label") ("selected" t)) ("over" t) @@ -1880,6 +1886,7 @@ This takes effect when first loading the library.") ("rev") ("s") ("samp") + ("section" \n) ("small") ("span" nil ("class" @@ -1910,6 +1917,8 @@ This takes effect when first loading the library.") ("acronym" . "Acronym") ("address" . "Formatted mail address") ("array" . "Math array") + ("article" . "An independent part of document or site") + ("aside" . "Secondary content related to surrounding content (e.g. page or article)") ("au" . "Author") ("b" . "Bold face") ("base" . "Base address for URLs") @@ -1939,6 +1948,7 @@ This takes effect when first loading the library.") ("figt" . "Figure text") ("fn" . "Footnote") ;; No one supports special footnote rendering. ("font" . "Font size") + ("footer" . "Footer of a section") ("form" . "Form with input fields") ("group" . "Document grouping") ("h1" . "Most important section headline") @@ -1948,6 +1958,8 @@ This takes effect when first loading the library.") ("h5" . "Unimportant section headline") ("h6" . "Least important section headline") ("head" . "Document header") + ("header" . "Header of a section") + ("hgroup" . "Group of headings - h1-h6 elements") ("hr" . "Horizontal rule") ("html" . "HTML Document") ("i" . "Italic face") @@ -1960,8 +1972,9 @@ This takes effect when first loading the library.") ("li" . "List item") ("link" . "Link relationship") ("math" . "Math formula") - ("menu" . "Menu list (obsolete)") + ("menu" . "List of commands") ("mh" . "Form mail header") + ("nav" . "Group of navigational links") ("nextid" . "Allocate new id") ("nobr" . "Text without line break") ("ol" . "Ordered list") @@ -1975,6 +1988,7 @@ This takes effect when first loading the library.") ("rev" . "Reverse video") ("s" . "Strikeout") ("samp" . "Sample text") + ("section" . "Section of a document") ("select" . "Selection list") ("small" . "Font size") ("sp" . "Nobreak space") @@ -2242,6 +2256,33 @@ HTML Autoview mode is a buffer-local minor mode for use with ""))) \n)) +(define-skeleton html-navigational-links + "Group of navigational links." + nil + "<nav>" \n + "<ul>" \n + "<li><a href=\"" (skeleton-read "URL: " "#") "\">" + (skeleton-read "Title: ") "</a>" + (if sgml-xml-mode (if sgml-xml-mode "</li>")) \n + "</ul>" \n + "</nav>") + +(define-skeleton html-html5-template + "Initial HTML5 template" + nil + "<!DOCTYPE html>" \n + "<html lang=\"en\">" \n + "<head>" \n + "<meta charset=\"utf-8\">" \n + "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">" \n + "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">" \n + "<title>" (skeleton-read "Page Title: ") "</title>" \n + "</head>" \n + "<body>" \n + "<div id=\"app\"></div>" \n + "</body>" \n + "</html>") + (provide 'sgml-mode) ;;; sgml-mode.el ends here diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index e9c7e2f114e..535b8857677 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -1034,7 +1034,7 @@ says which mode to use." (define-derived-mode plain-tex-mode tex-mode "TeX" "Major mode for editing files of input for plain TeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run TeX on the current region, plus a \"header\" @@ -1080,7 +1080,7 @@ special subshell is initiated, the hook `tex-shell-hook' is run." (define-derived-mode latex-mode tex-mode "LaTeX" "Major mode for editing files of input for LaTeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run LaTeX on the current region, plus the preamble @@ -1162,7 +1162,7 @@ subshell is initiated, `tex-shell-hook' is run." (define-derived-mode slitex-mode latex-mode "SliTeX" "Major mode for editing files of input for SliTeX. Makes $ and } display the characters they match. -Makes \" insert `` when it seems to be the beginning of a quotation, +Makes \" insert \\=`\\=` when it seems to be the beginning of a quotation, and '' when it appears to be the end; it inserts \" only after a \\. Use \\[tex-region] to run SliTeX on the current region, plus the preamble @@ -1296,7 +1296,7 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook (defun tex-insert-quote (arg) "Insert the appropriate quote marks for TeX. -Inserts the value of `tex-open-quote' (normally ``) or `tex-close-quote' +Inserts the value of `tex-open-quote' (normally \\=`\\=`) or `tex-close-quote' \(normally '') depending on the context. With prefix argument, always inserts \" characters." (interactive "*P") @@ -1331,7 +1331,9 @@ inserts \" characters." (goto-char saved) (insert (if (> saved (mark)) tex-close-quote tex-open-quote))) (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s)) - (memq (preceding-char) '(?~))) + (memq (preceding-char) '(?~ ?'))) + ;; We're in an "opening" context + ;; (if electric-pair-mode (if (looking-at (regexp-quote tex-close-quote)) (forward-char (length tex-close-quote)) @@ -1339,6 +1341,8 @@ inserts \" characters." (insert tex-close-quote) (backward-char (length tex-close-quote))) (insert tex-open-quote)) + ;; We're in a "closing" context. + ;; (if (looking-at (regexp-quote tex-close-quote)) (forward-char (length tex-close-quote)) (insert tex-close-quote)))))) @@ -1761,13 +1765,13 @@ Mark is left at original location." ;; A better way to handle this, \( .. \) etc, is probably to ;; temporarily change the syntax of the \ in \( to punctuation. ((and latex-handle-escaped-parens - (looking-back "\\\\[])}]")) + (looking-back "\\\\[])}]" (- (point) 2))) (signal 'scan-error (list "Containing expression ends prematurely" (- (point) 2) (prog1 (point) (goto-char pos))))) ((and latex-handle-escaped-parens - (looking-back "\\\\\\([({[]\\)")) + (looking-back "\\\\\\([({[]\\)" (- (point) 2))) (tex-next-unmatched-eparen (match-string 1))) (t (goto-char newpos)))))) diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el index e7b6835df67..cab4f770b98 100644 --- a/lisp/textmodes/texinfmt.el +++ b/lisp/textmodes/texinfmt.el @@ -1287,7 +1287,7 @@ Leave point after argument." (put 'uref 'texinfo-format 'texinfo-format-uref) (defun texinfo-format-uref () "Format URL and optional URL-TITLE. -Insert ` ... ' around URL if no URL-TITLE argument; +Insert \\=` ... ' around URL if no URL-TITLE argument; otherwise, insert URL-TITLE followed by URL in parentheses." (let ((args (texinfo-format-parse-args))) (texinfo-discard-command) @@ -2447,7 +2447,7 @@ Use only the FILENAME arg; for Info, ignore the other arguments to @image." ;; not lead to inserted ` ... ' in a table, but does elsewhere. (put 'option 'texinfo-format 'texinfo-format-option) (defun texinfo-format-option () - "Insert ` ... ' around arg unless inside a table; in that case, no quotes." + "Insert \\=` ... ' around arg unless inside a table; in that case, no quotes." ;; `looking-at-backward' not available in v. 18.57, 20.2 (if (not (search-backward "" ; searched-for character is a control-H (line-beginning-position) @@ -2494,7 +2494,7 @@ Enclose the verbatim text, including the delimiters, in braces. Print text exactly as written (but not the delimiters) in a fixed-width. For example, @verb\{|@|\} results in @ and -@verb\{+@'e?`!`+} results in @'e?`!`." +@verb\{+@'e?\\=`!\\=`+} results in @'e?\\=`!\\=`." (let ((delimiter (buffer-substring-no-properties (1+ texinfo-command-end) (+ 2 texinfo-command-end)))) diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el index 895adbf892e..6b28249c427 100644 --- a/lisp/textmodes/texinfo.el +++ b/lisp/textmodes/texinfo.el @@ -689,7 +689,7 @@ Puts point on a blank line between them." '("example\\>" "smallexample\\>" "lisp\\>")) (defun texinfo-insert-quote (&optional arg) "Insert the appropriate quote mark for Texinfo. -Usually inserts the value of `texinfo-open-quote' (normally ``) or +Usually inserts the value of `texinfo-open-quote' (normally \\=`\\=`) or `texinfo-close-quote' (normally ''), depending on the context. With prefix argument or inside @code or @example, inserts a plain \"." (interactive "*P") diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el index 84b578b5059..1466556ab59 100644 --- a/lisp/textmodes/text-mode.el +++ b/lisp/textmodes/text-mode.el @@ -29,7 +29,9 @@ ;;; Code: -(defcustom text-mode-hook nil +;; Normally non-nil defaults for hooks are bad, but since this file is +;; preloaded it's ok/better, and avoids this showing up in customize-rogue. +(defcustom text-mode-hook '(text-mode-hook-identify) "Normal hook run when entering Text mode and many related modes." :type 'hook :options '(turn-on-auto-fill turn-on-flyspell) @@ -147,14 +149,13 @@ Turning on Paragraph-Indent minor mode runs the normal hook (defalias 'indented-text-mode 'text-mode) ;; This can be made a no-op once all modes that use text-mode-hook -;; are "derived" from text-mode. +;; are "derived" from text-mode. (As of 2015/04, and probably well before, +;; the only one I can find that doesn't so derive is rmail-edit-mode.) (defun text-mode-hook-identify () "Mark that this mode has run `text-mode-hook'. This is how `toggle-text-mode-auto-fill' knows which buffers to operate on." (set (make-local-variable 'text-mode-variant) t)) -(add-hook 'text-mode-hook 'text-mode-hook-identify) - (defun toggle-text-mode-auto-fill () "Toggle whether to use Auto Fill in Text mode and related modes. This command affects all buffers that use modes related to Text mode, diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 0eae67ae83a..4e385a0fbd3 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -431,7 +431,7 @@ current `case-fold-search' setting." If * character before point is a space character, - * character before that has “w” character syntax (i.e. it's a word + * character before that has \"w\" character syntax (i.e. it's a word constituent), * `tildify-space-pattern' matches when `looking-back' (no more than 10 characters) from before the space character, and diff --git a/lisp/type-break.el b/lisp/type-break.el index a5a31c9ffd1..5a12f02f876 100644 --- a/lisp/type-break.el +++ b/lisp/type-break.el @@ -45,7 +45,7 @@ ;; If you find echo area messages annoying and would prefer to see messages ;; in the mode line instead, do M-x type-break-mode-line-message-mode -;; or set the variable of the same name to `t'. +;; or set the variable of the same name to t. ;; This program can truly cons up a storm because of all the calls to ;; `current-time' (which always returns fresh conses). I'm dismayed by diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el index ff3eafd19da..001a7831ad5 100644 --- a/lisp/url/url-handlers.el +++ b/lisp/url/url-handlers.el @@ -344,14 +344,14 @@ They count bytes from the beginning of the body." (put 'insert-file-contents 'url-file-handlers 'url-insert-file-contents) -(defun url-file-name-completion (url directory &optional predicate) +(defun url-file-name-completion (url _directory &optional _predicate) ;; Even if it's not implemented, it's not an error to ask for completion, ;; in case it's available (bug#14806). ;; (error "Unimplemented") url) (put 'file-name-completion 'url-file-handlers 'url-file-name-completion) -(defun url-file-name-all-completions (file directory) +(defun url-file-name-all-completions (_file _directory) ;; Even if it's not implemented, it's not an error to ask for completion, ;; in case it's available (bug#14806). ;; (error "Unimplemented") diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index d766952ebf3..6a7d8e2c947 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -485,6 +485,8 @@ work correctly." ) ) +(declare-function gnutls-peer-status "gnutls.c" (proc)) + (defun url-http-parse-headers () "Parse and handle HTTP specific headers. Return t if and only if the current buffer is still active and diff --git a/lisp/vc/compare-w.el b/lisp/vc/compare-w.el index 07c07682186..5b923697241 100644 --- a/lisp/vc/compare-w.el +++ b/lisp/vc/compare-w.el @@ -88,7 +88,7 @@ regexp containing some field separator or a newline, depending on the nature of the difference units separator. The variable can be made buffer-local. -If the value of this variable is `nil' (option \"No sync\"), then +If the value of this variable is nil (option \"No sync\"), then no synchronization is performed, and the function `ding' is called to beep or flash the screen when points are mismatched." :type '(choice function regexp (const :tag "No sync" nil)) diff --git a/lisp/vc/ediff-help.el b/lisp/vc/ediff-help.el index c981d89f50a..3d46869b252 100644 --- a/lisp/vc/ediff-help.el +++ b/lisp/vc/ediff-help.el @@ -195,47 +195,47 @@ the value of this variable and the variables `ediff-help-message-*' in (ediff-documentation "Quick Help Commands") (let (case-fold-search) - (cond ((string= cmd "?") (re-search-forward "^`\\?'")) - ((string= cmd "G") (re-search-forward "^`G'")) - ((string= cmd "E") (re-search-forward "^`E'")) - ((string= cmd "wd") (re-search-forward "^`wd'")) - ((string= cmd "wx") (re-search-forward "^`wa'")) - ((string= cmd "a/b") (re-search-forward "^`a'")) - ((string= cmd "x") (re-search-forward "^`a'")) - ((string= cmd "xy") (re-search-forward "^`ab'")) - ((string= cmd "p,DEL") (re-search-forward "^`p'")) - ((string= cmd "n,SPC") (re-search-forward "^`n'")) - ((string= cmd "j") (re-search-forward "^`j'")) - ((string= cmd "gx") (re-search-forward "^`ga'")) - ((string= cmd "!") (re-search-forward "^`!'")) - ((string= cmd "*") (re-search-forward "^`\\*'")) - ((string= cmd "m") (re-search-forward "^`m'")) - ((string= cmd "|") (re-search-forward "^`|'")) - ((string= cmd "@") (re-search-forward "^`@'")) - ((string= cmd "h") (re-search-forward "^`h'")) - ((string= cmd "r") (re-search-forward "^`r'")) - ((string= cmd "rx") (re-search-forward "^`ra'")) - ((string= cmd "##") (re-search-forward "^`##'")) - ((string= cmd "#c") (re-search-forward "^`#c'")) - ((string= cmd "#f/#h") (re-search-forward "^`#f'")) - ((string= cmd "X") (re-search-forward "^`A'")) - ((string= cmd "v/V") (re-search-forward "^`v'")) - ((string= cmd "</>") (re-search-forward "^`<'")) - ((string= cmd "~") (re-search-forward "^`~'")) - ((string= cmd "i") (re-search-forward "^`i'")) - ((string= cmd "D") (re-search-forward "^`D'")) - ((string= cmd "R") (re-search-forward "^`R'")) - ((string= cmd "M") (re-search-forward "^`M'")) - ((string= cmd "z/q") (re-search-forward "^`z'")) - ((string= cmd "%") (re-search-forward "^`%'")) - ((string= cmd "C-l") (re-search-forward "^`C-l'")) - ((string= cmd "$$") (re-search-forward "^`\\$\\$'")) - ((string= cmd "$*") (re-search-forward "^`\\$\\*'")) - ((string= cmd "/") (re-search-forward "^`/'")) - ((string= cmd "&") (re-search-forward "^`&'")) - ((string= cmd "s") (re-search-forward "^`s'")) - ((string= cmd "+") (re-search-forward "^`\\+'")) - ((string= cmd "=") (re-search-forward "^`='")) + (cond ((string= cmd "?") (re-search-forward "^['`‘]\\?['’]")) + ((string= cmd "G") (re-search-forward "^['`‘]G['’]")) + ((string= cmd "E") (re-search-forward "^['`‘]E['’]")) + ((string= cmd "wd") (re-search-forward "^['`‘]wd['’]")) + ((string= cmd "wx") (re-search-forward "^['`‘]wa['’]")) + ((string= cmd "a/b") (re-search-forward "^['`‘]a['’]")) + ((string= cmd "x") (re-search-forward "^['`‘]a['’]")) + ((string= cmd "xy") (re-search-forward "^['`‘]ab['’]")) + ((string= cmd "p,DEL") (re-search-forward "^['`‘]p['’]")) + ((string= cmd "n,SPC") (re-search-forward "^['`‘]n['’]")) + ((string= cmd "j") (re-search-forward "^['`‘]j['’]")) + ((string= cmd "gx") (re-search-forward "^['`‘]ga['’]")) + ((string= cmd "!") (re-search-forward "^['`‘]!['’]")) + ((string= cmd "*") (re-search-forward "^['`‘]\\*['’]")) + ((string= cmd "m") (re-search-forward "^['`‘]m['’]")) + ((string= cmd "|") (re-search-forward "^['`‘]|['’]")) + ((string= cmd "@") (re-search-forward "^['`‘]@['’]")) + ((string= cmd "h") (re-search-forward "^['`‘]h['’]")) + ((string= cmd "r") (re-search-forward "^['`‘]r['’]")) + ((string= cmd "rx") (re-search-forward "^['`‘]ra['’]")) + ((string= cmd "##") (re-search-forward "^['`‘]##['’]")) + ((string= cmd "#c") (re-search-forward "^['`‘]#c['’]")) + ((string= cmd "#f/#h") (re-search-forward "^['`‘]#f['’]")) + ((string= cmd "X") (re-search-forward "^['`‘]A['’]")) + ((string= cmd "v/V") (re-search-forward "^['`‘]v['’]")) + ((string= cmd "</>") (re-search-forward "^['`‘]<['’]")) + ((string= cmd "~") (re-search-forward "^['`‘]~['’]")) + ((string= cmd "i") (re-search-forward "^['`‘]i['’]")) + ((string= cmd "D") (re-search-forward "^['`‘]D['’]")) + ((string= cmd "R") (re-search-forward "^['`‘]R['’]")) + ((string= cmd "M") (re-search-forward "^['`‘]M['’]")) + ((string= cmd "z/q") (re-search-forward "^['`‘]z['’]")) + ((string= cmd "%") (re-search-forward "^['`‘]%['’]")) + ((string= cmd "C-l") (re-search-forward "^['`‘]C-l['’]")) + ((string= cmd "$$") (re-search-forward "^['`‘]\\$\\$['’]")) + ((string= cmd "$*") (re-search-forward "^['`‘]\\$\\*['’]")) + ((string= cmd "/") (re-search-forward "^['`‘]/['’]")) + ((string= cmd "&") (re-search-forward "^['`‘]&['’]")) + ((string= cmd "s") (re-search-forward "^['`‘]s['’]")) + ((string= cmd "+") (re-search-forward "^['`‘]\\+['’]")) + ((string= cmd "=") (re-search-forward "^['`‘]=['’]")) (t (error "Undocumented command! Type `G' in Ediff Control Panel to drop a note to the Ediff maintainer"))) ) ; let case-fold-search )) diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index 62a0d9da0ab..26bba40b4b4 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el @@ -2318,6 +2318,7 @@ the number seen by the user." (narrow-to-region (ediff-get-diff-posn 'B 'beg n ctl-buf) (ediff-get-diff-posn 'B 'end n ctl-buf)) + (goto-char (point-min)) (re-search-forward regex-B nil t)))) (reg-C-match (if ediff-3way-comparison-job (ediff-with-current-buffer ediff-buffer-C @@ -2325,6 +2326,7 @@ the number seen by the user." (narrow-to-region (ediff-get-diff-posn 'C 'beg n ctl-buf) (ediff-get-diff-posn 'C 'end n ctl-buf)) + (goto-char (point-min)) (re-search-forward regex-C nil t)))))) (not (eval (if ediff-3way-comparison-job (list ediff-focus-regexp-connective @@ -3986,7 +3988,7 @@ and mail it to the address above. Please read this first: ---------------------- -Some ``bugs'' may actually be no bugs at all. For instance, if you are +Some \"bugs\" may actually be no bugs at all. For instance, if you are reporting that certain difference regions are not matched as you think they should, this is most likely due to the way Unix diff program decides what constitutes a difference region. Ediff is an Emacs interface to diff, and diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index f82c7e9052e..d59549772c0 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el @@ -167,7 +167,7 @@ can be obtained from `log-edit-files'." (defvar log-edit-changelog-full-paragraphs t "If non-nil, include full ChangeLog paragraphs in the log. -This may be set in the ``local variables'' section of a ChangeLog, to +This may be set in the \"local variables\" section of a ChangeLog, to indicate the policy for that ChangeLog. A ChangeLog paragraph is a bunch of log text containing no blank lines; @@ -717,6 +717,9 @@ can thus take some time." (defvar log-edit-changelog-use-first nil) +(defvar log-edit-rewrite-tiny-change t + "Non-nil means rewrite (tiny change).") + (defvar log-edit-rewrite-fixes nil "Rule to rewrite bug numbers into Fixes: headers. The value should be of the form (REGEXP . REPLACEMENT) @@ -761,7 +764,7 @@ regardless of user name or time." (log-edit-insert-changelog-entries (log-edit-files))))) (log-edit-set-common-indentation) ;; Add an Author: field if appropriate. - (when author (log-edit-add-field "Author" author)) + (when author (log-edit-add-field "Author" (car author))) ;; Add a Fixes: field if applicable. (when (consp log-edit-rewrite-fixes) (rfc822-goto-eoh) @@ -782,7 +785,13 @@ regardless of user name or time." (goto-char start) (skip-chars-forward "^():") (skip-chars-forward ": ") - (delete-region start (point)))))))) + (delete-region start (point))))) + ;; FIXME also add "Co-authored-by" when appropriate. + ;; Bzr accepts multiple --author arguments, others (?) don't. + (and log-edit-rewrite-tiny-change + (eq 'tiny (cdr author)) + (goto-char (point-max)) + (insert "\nCopyright-paperwork-exempt: yes\n"))))) ;;;; ;;;; functions for getting commit message from ChangeLog a file... @@ -868,19 +877,26 @@ Return non-nil if it is." (if (null log-edit-changelog-use-first) (looking-at (regexp-quote (format "%s %s <%s>" time name mail))) ;; Check the author, to potentially add it as a "Author: " header. + ;; FIXME This accumulates multiple authors, but only when there + ;; are multiple ChangeLog files. It should also check for + ;; multiple authors in each individual entry. (when (looking-at "[^ \t]") (when (and (boundp 'log-edit-author) (not (looking-at (format ".+ .+ <%s>" (regexp-quote mail)))) - (looking-at ".+ \\(.+ <.+>\\)")) + (looking-at ".+ \\(.+ <.+>\\) *\\((tiny change)\\)?")) (let ((author (replace-regexp-in-string " " " " (match-string 1)))) (unless (and log-edit-author - (string-match (regexp-quote author) log-edit-author)) - (setq log-edit-author - (if log-edit-author - (concat log-edit-author ", " author) - author))))) + (string-match (regexp-quote author) + (car log-edit-author))) + (if (not log-edit-author) + (setq log-edit-author + (cons author (if (match-string 2) 'tiny))) + (setcar log-edit-author + (concat (car log-edit-author) ", " author)) + (and (match-string 2) (not (cdr log-edit-author)) + (setcdr log-edit-author 'tiny)))))) t)))) (defun log-edit-changelog-entries (file) diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index 98e93572206..19bbc45f927 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el @@ -404,7 +404,9 @@ This calls `log-view-expanded-log-entry-function' to do the work." (unless (and pos (log-view-inside-comment-p pos)) (error "Broken markup in `log-view-toggle-entry-display'")) (delete-region pos - (next-single-property-change pos 'log-view-comment)) + (or + (next-single-property-change pos 'log-view-comment) + (point-max))) (put-text-property beg (1+ beg) 'log-view-entry-expanded nil) (if (< opoint pos) (goto-char opoint))) @@ -466,9 +468,13 @@ It assumes that a log entry starts with a line matching (goto-char (match-beginning 0)))) ;; Don't advance past the end buttons inserted by ;; `vc-print-log-setup-buttons'. - ((looking-back "Show 2X entries Show unlimited entries") + ((looking-back "Show 2X entries Show unlimited entries" + (line-beginning-position)) (setq looping nil) - (forward-line -1)))))) + (forward-line -1)) + ;; There are no buttons if we've turned on unlimited entries. + ((eobp) + (setq looping nil)))))) (defun log-view-end-of-defun (&optional arg) "Move forward to the next Log View entry. diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el index 8bcea5f164d..3a50c9b6a2d 100644 --- a/lisp/vc/vc-annotate.el +++ b/lisp/vc/vc-annotate.el @@ -175,7 +175,6 @@ List of factors, used to expand/compress the time scale. See `vc-annotate'." (define-key m "p" 'vc-annotate-prev-revision) (define-key m "w" 'vc-annotate-working-revision) (define-key m "v" 'vc-annotate-toggle-annotation-visibility) - (define-key m "v" 'vc-annotate-toggle-annotation-visibility) (define-key m "\C-m" 'vc-annotate-goto-line) m) "Local keymap used for VC-Annotate mode.") @@ -583,17 +582,15 @@ the file in question, search for the log entry required and move point." (setq prev-rev (vc-call-backend vc-annotate-backend 'previous-revision (if filediff fname nil) rev)) - (if (not prev-rev) - (message "Cannot diff from any revision prior to %s" rev) - (vc-diff-internal - t - ;; The value passed here should follow what - ;; `vc-deduce-fileset' returns. - (list vc-annotate-backend - (if filediff - (list fname) - nil)) - prev-rev rev)))))) + (vc-diff-internal + t + ;; The value passed here should follow what + ;; `vc-deduce-fileset' returns. + (list vc-annotate-backend + (if filediff + (list fname) + nil)) + prev-rev rev))))) (defun vc-annotate-show-diff-revision-at-line () "Visit the diff of the revision at line from its previous revision." @@ -605,7 +602,10 @@ the file in question, search for the log entry required and move point." (interactive) (when (eq 'file (vc-call-backend vc-annotate-backend 'revision-granularity)) (error "The %s backend does not support changeset diffs" vc-annotate-backend)) - (vc-annotate-show-diff-revision-at-line-internal nil)) + ;; Make sure `diff-goto-source' will be able to find all files. + (let ((default-directory (vc-call-backend vc-annotate-backend + 'root default-directory))) + (vc-annotate-show-diff-revision-at-line-internal nil))) (defun vc-annotate-warp-revision (revspec &optional file) "Annotate the revision described by REVSPEC. diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index 811f9e80b0c..5f8dd0bf0e8 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el @@ -34,7 +34,7 @@ ;; ========== ;; When editing a symlink and *both* the symlink and its target -;; are bzr-versioned, `vc-bzr` presently runs `bzr status` on the +;; are bzr-versioned, `vc-bzr' presently runs `bzr status' on the ;; symlink, thereby not detecting whether the actual contents ;; (that is, the target contents) are changed. @@ -335,29 +335,31 @@ in the repository root directory of FILE." (declare-function vc-set-async-update "vc-dispatcher" (process-buffer)) (declare-function vc-compilation-mode "vc-dispatcher" (backend)) -(defun vc-bzr-pull (prompt) - "Pull changes into the current Bzr branch. -Normally, this runs \"bzr pull\". However, if the branch is a -bound branch, run \"bzr update\" instead. If there is no default -location from which to pull or update, or if PROMPT is non-nil, -prompt for the Bzr command to run." +(defun vc-bzr--pushpull (command prompt) + "Run COMMAND (a string; either push or pull) on the current Bzr branch. +If PROMPT is non-nil, prompt for the Bzr command to run." (let* ((vc-bzr-program vc-bzr-program) (branch-conf (vc-bzr-branch-conf default-directory)) ;; Check whether the branch is bound. (bound (assoc "bound" branch-conf)) (bound (and bound (equal "true" (downcase (cdr bound))))) - ;; If we need to do a "bzr pull", check for a parent. If it - ;; does not exist, bzr will need a pull location. - (has-parent (unless bound - (assoc "parent_location" branch-conf))) - (command (if bound "update" "pull")) + (has-loc (assoc (if (equal command "push") + "push_location" + "parent_location") + branch-conf)) args) + (when bound + (if (equal command "push") + (user-error "Cannot push a bound branch") + (setq command "update"))) ;; If necessary, prompt for the exact command. - (when (or prompt (not (or bound has-parent))) + (when (or prompt (if (equal command "push") + (not has-loc) + (not (or bound has-loc)))) (setq args (split-string (read-shell-command - "Bzr pull command: " - (concat vc-bzr-program " " command) + (format "Bzr %s command: " command) + (format "%s %s" vc-bzr-program command) 'vc-bzr-history) " " t)) (setq vc-bzr-program (car args) @@ -368,6 +370,20 @@ prompt for the Bzr command to run." (with-current-buffer buf (vc-run-delayed (vc-compilation-mode 'bzr))) (vc-set-async-update buf)))) +(defun vc-bzr-pull (prompt) + "Pull changes into the current Bzr branch. +Normally, this runs \"bzr pull\". However, if the branch is a +bound branch, run \"bzr update\" instead. If there is no default +location from which to pull or update, or if PROMPT is non-nil, +prompt for the Bzr command to run." + (vc-bzr--pushpull "pull" prompt)) + +(defun vc-bzr-push (prompt) + "Push changes from the current Bzr branch. +Normally, this runs \"bzr push\". If there is no push location, +or if PROMPT is non-nil, prompt for the Bzr command to run." + (vc-bzr--pushpull "push" prompt)) + (defun vc-bzr-merge-branch () "Merge another Bzr branch into the current one. Prompt for the Bzr command to run, providing a pre-defined merge @@ -873,7 +889,7 @@ property containing author and date information." (move-marker (process-mark proc) (point)))) (process-put proc :vc-left-over string))))))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) (defun vc-bzr-annotate-time () (when (re-search-forward "^ *[0-9.]+ +.+? +|" nil t) @@ -954,6 +970,12 @@ stream. Standard error output is discarded." (translated nil) (result nil)) (goto-char (point-min)) + ;; Skip a warning message that can occur in some bzr installations. + ;; vc-bzr-dir-extra-headers already reports it. + ;; Perhaps we should just discard stderr? + (and (looking-at "bzr: WARNING: bzrlib version doesn't match") + (re-search-forward "^bzr is version" nil t) + (forward-line 1)) (while (not (eobp)) ;; Bzr 2.3.0 added this if there are shelves. (Bug#8170) (unless (looking-at "[0-9]+ shel\\(f\\|ves\\) exists?\\.") diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el index 232dcc2185e..9a41905abd2 100644 --- a/lisp/vc/vc-cvs.el +++ b/lisp/vc/vc-cvs.el @@ -651,7 +651,7 @@ Optional arg REVISION is a revision to annotate from." (re-search-forward vc-cvs-annotate-first-line-re) (delete-region (point-min) (1- (point))))))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) (defun vc-cvs-annotate-current-time () "Return the current time, based at midnight of the current day, and diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index e050c947504..eb03a8b45a7 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -111,7 +111,7 @@ See `run-hooks'." (current-buffer))))) (defvar vc-dir-menu-map - (let ((map (make-sparse-keymap "VC-dir"))) + (let ((map (make-sparse-keymap "VC-Dir"))) (define-key map [quit] '(menu-item "Quit" quit-window :help "Quit")) @@ -204,6 +204,10 @@ See `run-hooks'." :help "List the change log for the current tree in a window")) ;; VC commands. (define-key map [sepvccmd] '("--")) + (define-key map [push] + '(menu-item "Push Changes" vc-push + :enable (vc-find-backend-function vc-dir-backend 'push) + :help "Push the current branch's changes")) (define-key map [update] '(menu-item "Update to Latest Version" vc-update :help "Update the current fileset's files to their tip revisions")) @@ -246,6 +250,8 @@ See `run-hooks'." (define-key map "D" 'vc-root-diff) ;; C-x v D (define-key map "i" 'vc-register) ;; C-x v i (define-key map "+" 'vc-update) ;; C-x v + + ;; I'd prefer some kind of symmetry with vc-update: + (define-key map "P" 'vc-push) ;; C-x v P (define-key map "l" 'vc-print-log) ;; C-x v l (define-key map "L" 'vc-print-root-log) ;; C-x v L (define-key map "I" 'vc-log-incoming) ;; C-x v I @@ -294,7 +300,7 @@ See `run-hooks'." `(menu-item ;; VC backends can use this to add mode-specific menu items to ;; vc-dir-menu-map. - "VC-dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter)) + "VC-Dir" ,vc-dir-menu-map :filter vc-dir-menu-map-filter)) map) "Keymap for directory buffer.") diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el index a2c1cba5fde..ec55867fcfe 100644 --- a/lisp/vc/vc-dispatcher.el +++ b/lisp/vc/vc-dispatcher.el @@ -171,6 +171,12 @@ Another is that undo information is not kept." (let ((camefrom (current-buffer)) (olddir default-directory)) (set-buffer (get-buffer-create buf)) + (let ((oldproc (get-buffer-process (current-buffer)))) + ;; If we wanted to wait for oldproc to finish before doing + ;; something, we'd have used vc-eval-after. + ;; Use `delete-process' rather than `kill-process' because we don't + ;; want any of its output to appear from now on. + (when oldproc (delete-process oldproc))) (kill-all-local-variables) (set (make-local-variable 'vc-parent-buffer) camefrom) (set (make-local-variable 'vc-parent-buffer-name) @@ -302,12 +308,6 @@ case, and the process object in the asynchronous case." (eq buffer (current-buffer))) (vc-setup-buffer buffer)) ;; If there's some previous async process still running, just kill it. - (let ((oldproc (get-buffer-process (current-buffer)))) - ;; If we wanted to wait for oldproc to finish before doing - ;; something, we'd have used vc-eval-after. - ;; Use `delete-process' rather than `kill-process' because we don't - ;; want any of its output to appear from now on. - (when oldproc (delete-process oldproc))) (let ((squeezed (remq nil flags)) (inhibit-read-only t) (status 0)) diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 48e22c82647..e3cd5d4e3dc 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -117,8 +117,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches." (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value ("") string)) - :version "23.1" - :group 'vc-git) + :version "23.1") (defcustom vc-git-annotate-switches nil "String or list of strings specifying switches for Git blame under VC. @@ -127,14 +126,24 @@ If nil, use the value of `vc-annotate-switches'. If t, use no switches." (const :tag "None" t) (string :tag "Argument String") (repeat :tag "Argument List" :value ("") string)) - :version "25.1" - :group 'vc-git) + :version "25.1") + +(defcustom vc-git-resolve-conflicts t + "When non-nil, mark conflicted file as resolved upon saving. +That is performed after all conflict markers in it have been +removed. If the value is `unstage-maybe', and no merge is in +progress, then after the last conflict is resolved, also clear +the staging area." + :type '(choice (const :tag "Don't resolve" nil) + (const :tag "Resolve" t) + (const :tag "Resolve and maybe unstage all files" + unstage-maybe)) + :version "25.1") (defcustom vc-git-program "git" "Name of the Git executable (excluding any arguments)." :version "24.1" - :type 'string - :group 'vc-git) + :type 'string) (defcustom vc-git-root-log-format '("%d%h..: %an %ad %s" @@ -154,7 +163,6 @@ format string (which is passed to \"git log\" via the argument matching the resulting Git log output, and KEYWORDS is a list of `font-lock-keywords' for highlighting the Log View buffer." :type '(list string string (repeat sexp)) - :group 'vc-git :version "24.1") (defvar vc-git-commits-coding-system 'utf-8 @@ -721,21 +729,21 @@ It is based on `log-edit-mode', and has Git-specific extensions.") ;; To be called via vc-pull from vc.el, which requires vc-dispatcher. (declare-function vc-compilation-mode "vc-dispatcher" (backend)) -(defun vc-git-pull (prompt) - "Pull changes into the current Git branch. -Normally, this runs \"git pull\". If PROMPT is non-nil, prompt -for the Git command to run." +(defun vc-git--pushpull (command prompt) + "Run COMMAND (a string; either push or pull) on the current Git branch. +If PROMPT is non-nil, prompt for the Git command to run." (let* ((root (vc-git-root default-directory)) (buffer (format "*vc-git : %s*" (expand-file-name root))) - (command "pull") (git-program vc-git-program) args) ;; If necessary, prompt for the exact command. + ;; TODO if pushing, prompt if no default push location - cf bzr. (when prompt (setq args (split-string - (read-shell-command "Git pull command: " - (format "%s pull" git-program) - 'vc-git-history) + (read-shell-command + (format "Git %s command: " command) + (format "%s %s" git-program command) + 'vc-git-history) " " t)) (setq git-program (car args) command (cadr args) @@ -745,6 +753,18 @@ for the Git command to run." (with-current-buffer buffer (vc-run-delayed (vc-compilation-mode 'git))) (vc-set-async-update buffer))) +(defun vc-git-pull (prompt) + "Pull changes into the current Git branch. +Normally, this runs \"git pull\". If PROMPT is non-nil, prompt +for the Git command to run." + (vc-git--pushpull "pull" prompt)) + +(defun vc-git-push (prompt) + "Push changes from the current Git branch. +Normally, this runs \"git push\". If PROMPT is non-nil, prompt +for the Git command to run." + (vc-git--pushpull "push" prompt)) + (defun vc-git-merge-branch () "Merge changes into the current Git branch. This prompts for a branch to merge from." @@ -771,6 +791,9 @@ This prompts for a branch to merge from." (vc-git--run-command-string directory "status" "--porcelain" "--")) (lines (when status (split-string status "\n" 'omit-nulls))) files) + ;; TODO: Look into reimplementing `vc-git-state', as well as + ;; `vc-git-dir-status-files', based on this output, thus making the + ;; extra process call in `vc-git-find-file-hook' unnecessary. (dolist (line lines files) (when (string-match "\\([ MADRCU?!][ MADRCU?!]\\) \\(.+\\)\\(?: -> \\(.+\\)\\)?" line) @@ -787,6 +810,13 @@ This prompts for a branch to merge from." (goto-char (point-min)) (unless (re-search-forward "^<<<<<<< " nil t) (vc-git-command nil 0 buffer-file-name "add") + (unless (or + (not (eq vc-git-resolve-conflicts 'unstage-maybe)) + ;; Doing a merge, so bug#20292 doesn't apply. + (file-exists-p (expand-file-name ".git/MERGE_HEAD" + (vc-git-root buffer-file-name))) + (vc-git-conflicted-files (vc-git-root buffer-file-name))) + (vc-git-command nil 0 nil "reset")) ;; Remove the hook so that it is not called multiple times. (remove-hook 'after-save-hook 'vc-git-resolve-when-done t)))) @@ -803,7 +833,8 @@ This prompts for a branch to merge from." (re-search-forward "^<<<<<<< " nil 'noerror))) (vc-file-setprop buffer-file-name 'vc-state 'conflict) (smerge-start-session) - (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local) + (when vc-git-resolve-conflicts + (add-hook 'after-save-hook 'vc-git-resolve-when-done nil 'local)) (message "There are unresolved conflicts in this file"))) ;;; HISTORY FUNCTIONS @@ -929,14 +960,13 @@ or BRANCH^ (where \"^\" can be repeated)." (defun vc-git-expanded-log-entry (revision) (with-temp-buffer - (apply 'vc-git-command t nil nil (list "log" revision "-1")) + (apply 'vc-git-command t nil nil (list "log" revision "-1" "--")) (goto-char (point-min)) (unless (eobp) ;; Indent the expanded log entry. (indent-region (point-min) (point-max) 2) (buffer-string)))) - (defun vc-git-region-history (file buffer lfrom lto) (vc-git-command buffer 'async nil "log" "-p" ;"--follow" ;FIXME: not supported? (format "-L%d,%d:%s" lfrom lto (file-relative-name file)))) @@ -988,12 +1018,18 @@ or BRANCH^ (where \"^\" can be repeated)." (defun vc-git-diff (files &optional rev1 rev2 buffer async) "Get a difference report using Git between two revisions of FILES." - (let (process-file-side-effects) + (let (process-file-side-effects + (command "diff-tree")) + (if rev2 + ;; Diffing against the empty tree. + (unless rev1 (setq rev1 "4b825dc642cb6eb9a060e54bf8d69288fbee4904")) + (setq command "diff-index") + (unless rev1 (setq rev1 "HEAD"))) (if vc-git-diff-switches (apply #'vc-git-command (or buffer "*vc-diff*") (if async 'async 1) files - (if (and rev1 rev2) "diff-tree" "diff-index") + command "--exit-code" (append (vc-switches 'git 'diff) (list "-p" (or rev1 "HEAD") rev2 "--"))) @@ -1002,7 +1038,7 @@ or BRANCH^ (where \"^\" can be repeated)." (concat "diff " (mapconcat 'identity (vc-switches nil 'diff) " ")) - (or rev1 "HEAD") rev2 "--")))) + rev1 rev2 "--")))) (defun vc-git-revision-table (_files) ;; What about `files'?!? --Stef @@ -1023,23 +1059,25 @@ or BRANCH^ (where \"^\" can be repeated)." (defun vc-git-annotate-command (file buf &optional rev) (let ((name (file-relative-name file))) - (apply #'vc-git-command buf 'async nil "blame" "--date=iso" + (apply #'vc-git-command buf 'async nil "blame" "--date=short" (append (vc-switches 'git 'annotate) (list rev "--" name))))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) (defun vc-git-annotate-time () - (and (re-search-forward "[0-9a-f]+[^()]+(.* \\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\) +[0-9]+) " nil t) + (and (re-search-forward "^[0-9a-f^]+[^()]+(.*?\\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\(:?\\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\)\\)? *[0-9]+) " nil t) (vc-annotate-convert-time (apply #'encode-time (mapcar (lambda (match) - (string-to-number (match-string match))) + (if (match-beginning match) + (string-to-number (match-string match)) + 0)) '(6 5 4 3 2 1 7)))))) (defun vc-git-annotate-extract-revision-at-line () (save-excursion (beginning-of-line) - (when (looking-at "\\([0-9a-f^][0-9a-f]+\\) \\(\\([^(]+\\) \\)?") + (when (looking-at "\\^?\\([0-9a-f]+\\) \\(\\([^(]+\\) \\)?") (let ((revision (match-string-no-properties 1))) (if (match-beginning 2) (let ((fname (match-string-no-properties 3))) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index c841dfcdf54..556174a3821 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -373,7 +373,7 @@ Optional arg REVISION is a revision to annotate from." (append (vc-switches 'hg 'annotate) (if revision (list (concat "-r" revision)))))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) ;; The format for one line output by "hg annotate -d -n" looks like this: ;;215 Wed Jun 20 21:22:58 2007 -0700: CONTENTS @@ -659,20 +659,6 @@ REV is the revision to check out into WORKFILE." (vc-hg-command buffer 1 nil "outgoing" "-n" (unless (string= remote-location "") remote-location))) -(declare-function log-view-get-marked "log-view" ()) - -;; XXX maybe also add key bindings for these functions. -(defun vc-hg-push () - (interactive) - (let ((marked-list (log-view-get-marked))) - (if marked-list - (apply #'vc-hg-command - nil 0 nil - "push" - (apply 'nconc - (mapcar (lambda (arg) (list "-r" arg)) marked-list))) - (error "No log entries selected for push")))) - (defvar vc-hg-error-regexp-alist nil ;; 'hg pull' does not list modified files, so, for now, the only ;; benefit of `vc-compilation-mode' is that one can get rid of @@ -682,51 +668,70 @@ REV is the revision to check out into WORKFILE." "Value of `compilation-error-regexp-alist' in *vc-hg* buffers.") (autoload 'vc-do-async-command "vc-dispatcher") +(autoload 'log-view-get-marked "log-view") -(defun vc-hg-pull (prompt) - "Issue a Mercurial pull command. -If called interactively with a set of marked Log View buffers, -call \"hg pull -r REVS\" to pull in the specified revisions REVS. - -With a prefix argument or if PROMPT is non-nil, prompt for a -specific Mercurial pull command. The default is \"hg pull -u\", -which fetches changesets from the default remote repository and -then attempts to update the working directory." - (interactive "P") +(defun vc-hg--pushpull (command prompt &optional obsolete) + "Run COMMAND (a string; either push or pull) on the current Hg branch. +If PROMPT is non-nil, prompt for the Hg command to run. +If OBSOLETE is non-nil, behave like the old versions of the Hg push/pull +commands, which only operated on marked files." (let (marked-list) - ;; The `vc-hg-pull' command existed before the `pull' VC action - ;; was implemented. Keep it for backward compatibility. - (if (and (called-interactively-p 'interactive) - (setq marked-list (log-view-get-marked))) + ;; The `vc-hg-pull' and `vc-hg-push' commands existed before the + ;; `pull'/`push' VC actions were implemented. + ;; The following is for backwards compatibility. + (if (and obsolete (setq marked-list (log-view-get-marked))) (apply #'vc-hg-command nil 0 nil - "pull" + command (apply 'nconc - (mapcar (lambda (arg) (list "-r" arg)) - marked-list))) + (mapcar (lambda (arg) (list "-r" arg)) marked-list))) (let* ((root (vc-hg-root default-directory)) (buffer (format "*vc-hg : %s*" (expand-file-name root))) - (command "pull") (hg-program vc-hg-program) ;; Fixme: before updating the working copy to the latest ;; state, should check if it's visiting an old revision. - (args '("-u"))) + (args (if (equal command "pull") '("-u")))) ;; If necessary, prompt for the exact command. + ;; TODO if pushing, prompt if no default push location - cf bzr. (when prompt (setq args (split-string - (read-shell-command "Run Hg (like this): " - (format "%s pull -u" hg-program) - 'vc-hg-history) + (read-shell-command + (format "Hg %s command: " command) + (format "%s %s%s" hg-program command + (if (not args) "" + (concat " " (mapconcat 'identity args " ")))) + 'vc-hg-history) " " t)) (setq hg-program (car args) command (cadr args) args (cddr args))) - (apply 'vc-do-async-command buffer root hg-program - command args) + (apply 'vc-do-async-command buffer root hg-program command args) (with-current-buffer buffer (vc-run-delayed (vc-compilation-mode 'hg))) (vc-set-async-update buffer))))) +(defun vc-hg-pull (prompt) + "Issue a Mercurial pull command. +If called interactively with a set of marked Log View buffers, +call \"hg pull -r REVS\" to pull in the specified revisions REVS. + +With a prefix argument or if PROMPT is non-nil, prompt for a +specific Mercurial pull command. The default is \"hg pull -u\", +which fetches changesets from the default remote repository and +then attempts to update the working directory." + (interactive "P") + (vc-hg--pushpull "pull" prompt (called-interactively-p 'interactive))) + +(defun vc-hg-push (prompt) + "Push changes from the current Mercurial branch. +Normally, this runs \"hg push\". If PROMPT is non-nil, prompt +for the Hg command to run. + +If called interactively with a set of marked Log View buffers, +call \"hg push -r REVS\" to push the specified revisions REVS." + (interactive "P") + (vc-hg--pushpull "push" prompt (called-interactively-p 'interactive))) + (defun vc-hg-merge-branch () "Merge incoming changes into the current working directory. This runs the command \"hg merge\"." diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index 251fecb49c0..bae991936b5 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -883,6 +883,8 @@ current, and kill the buffer that visits the link." (define-key map "u" 'vc-revert) (define-key map "v" 'vc-next-action) (define-key map "+" 'vc-update) + ;; I'd prefer some kind of symmetry with vc-update: + (define-key map "P" 'vc-push) (define-key map "=" 'vc-diff) (define-key map "D" 'vc-root-diff) (define-key map "~" 'vc-revision-other-window) @@ -940,6 +942,10 @@ current, and kill the buffer that visits the link." (bindings--define-key map [vc-revert] '(menu-item "Revert to Base Version" vc-revert :help "Revert working copies of the selected file set to their repository contents")) + ;; TODO Only :enable if (vc-find-backend-function backend 'push) + (bindings--define-key map [vc-push] + '(menu-item "Push Changes" vc-push + :help "Push the current branch's changes")) (bindings--define-key map [vc-update] '(menu-item "Update to Latest Version" vc-update :help "Update the current fileset's files to their tip revisions")) diff --git a/lisp/vc/vc-mtn.el b/lisp/vc/vc-mtn.el index cd84ebe7afa..93bd1f6a83f 100644 --- a/lisp/vc/vc-mtn.el +++ b/lisp/vc/vc-mtn.el @@ -261,7 +261,7 @@ If LIMIT is non-nil, show no more than this many entries." (append (vc-switches 'mtn 'annotate) (if rev (list "-r" rev))))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) (defconst vc-mtn-annotate-full-re "^ *\\([0-9a-f]+\\)\\.* by [^ ]+ \\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\): ") diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el index 8aedc00269d..1e1990890a2 100644 --- a/lisp/vc/vc-rcs.el +++ b/lisp/vc/vc-rcs.el @@ -758,7 +758,7 @@ Optional arg REVISION is a revision to annotate from." (insert (gethash (get-text-property (point) :vc-rcs-r/d/a) ht)) (forward-line 1)))) -(declare-function vc-annotate-convert-time "vc-annotate" (time)) +(declare-function vc-annotate-convert-time "vc-annotate" (&optional time)) (defun vc-rcs-annotate-current-time () "Return the current time, based at midnight of the current day, and diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index bb4dd607bdd..1bd04e13430 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -367,7 +367,8 @@ ;; BUFFER is nil. If ASYNC is non-nil, run asynchronously. If REV1 ;; and REV2 are non-nil, report differences from REV1 to REV2. If ;; REV1 is nil, use the working revision (as found in the -;; repository) as the older revision; if REV2 is nil, use the +;; repository) as the older revision if REV2 is nil as well; +;; otherwise, diff against an empty tree. If REV2 is nil, use the ;; current working-copy contents as the newer revision. This ;; function should pass the value of (vc-switches BACKEND 'diff) to ;; the backend command. It should return a status of either 0 (no @@ -2224,8 +2225,10 @@ earlier revisions. Show up to LIMIT entries (non-nil means unlimited)." (lambda (_bk _files-arg ret) (vc-print-log-setup-buttons working-revision is-start-revision limit ret)) - (lambda (bk) - (vc-call-backend bk 'show-log-entry working-revision)) + ;; When it's nil, point really shouldn't move (bug#15322). + (when working-revision + (lambda (bk) + (vc-call-backend bk 'show-log-entry working-revision))) (lambda (_ignore-auto _noconfirm) (vc-print-log-internal backend files working-revision is-start-revision limit))))) @@ -2263,8 +2266,9 @@ earlier revisions. Show up to LIMIT entries (non-nil means unlimited)." (let ((inhibit-read-only t)) (funcall setup-buttons-func backend files retval) (shrink-window-if-larger-than-buffer) - (funcall goto-location-func backend) - (setq vc-sentinel-movepoint (point)) + (when goto-location-func + (funcall goto-location-func backend) + (setq vc-sentinel-movepoint (point))) (set-buffer-modified-p nil))))) (defun vc-incoming-outgoing-internal (backend remote-location buffer-name type) @@ -2273,7 +2277,7 @@ earlier revisions. Show up to LIMIT entries (non-nil means unlimited)." (lambda (bk buf type-arg _files) (vc-call-backend bk type-arg buf remote-location)) (lambda (_bk _files-arg _ret) nil) - (lambda (_bk) (goto-char (point-min))) + nil ;; Don't move point. (lambda (_ignore-auto _noconfirm) (vc-incoming-outgoing-internal backend remote-location buffer-name type)))) @@ -2328,16 +2332,15 @@ When called interactively with a prefix argument, prompt for LIMIT." (list (when (> vc-log-show-limit 0) vc-log-show-limit))))) (let ((backend (vc-deduce-backend)) (default-directory default-directory) - rootdir working-revision) + rootdir) (if backend (setq rootdir (vc-call-backend backend 'root default-directory)) (setq rootdir (read-directory-name "Directory for VC root-log: ")) (setq backend (vc-responsible-backend rootdir)) (unless backend (error "Directory is not version controlled"))) - (setq working-revision (vc-working-revision rootdir) - default-directory rootdir) - (vc-print-log-internal backend (list rootdir) working-revision nil limit))) + (setq default-directory rootdir) + (vc-print-log-internal backend (list rootdir) nil nil limit))) ;;;###autoload (defun vc-log-incoming (&optional remote-location) @@ -2482,6 +2485,22 @@ tip revision are merged into the working file." ;;;###autoload (defalias 'vc-update 'vc-pull) +;;;###autoload +(defun vc-push (&optional arg) + "Push the current branch. +You must be visiting a version controlled file, or in a `vc-dir' buffer. +On a distributed version control system, this runs a \"push\" +operation on the current branch, prompting for the precise command +if required. Optional prefix ARG non-nil forces a prompt. +On a non-distributed version control system, this signals an error." + (interactive "P") + (let* ((vc-fileset (vc-deduce-fileset t)) + (backend (car vc-fileset))) +;;; (files (cadr vc-fileset))) + (if (vc-find-backend-function backend 'push) + (vc-call-backend backend 'push arg) + (user-error "VC push is unsupported for `%s'" backend)))) + (defun vc-version-backup-file (file &optional rev) "Return name of backup file for revision REV of FILE. If version backups should be used for FILE, and there exists diff --git a/lisp/version.el b/lisp/version.el index 1837cbf0a85..b8555cbb2f5 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -56,8 +56,8 @@ to the system configuration; look at `system-configuration' instead." (interactive "P") (let ((version-string (format (if (not (called-interactively-p 'interactive)) - "GNU Emacs %s (%s%s%s)\n of %s on %s" - "GNU Emacs %s (%s%s%s) of %s on %s") + "GNU Emacs %s (%s%s%s%s)\n of %s on %s" + "GNU Emacs %s (%s%s%s%s) of %s on %s") emacs-version system-configuration (cond ((featurep 'motif) @@ -68,6 +68,9 @@ to the system configuration; look at `system-configuration' instead." ((featurep 'ns) (format ", NS %s" ns-version-string)) (t "")) + (if (featurep 'cairo) + (format ", cairo version %s" cairo-version-string) + "") (if (and (boundp 'x-toolkit-scroll-bars) (memq x-toolkit-scroll-bars '(xaw xaw3d))) (format ", %s scroll bars" diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el index 876df875b1b..6f8fa840bd3 100644 --- a/lisp/w32-fns.el +++ b/lisp/w32-fns.el @@ -44,7 +44,7 @@ (or (bound-and-true-p shell-file-name) (getenv "ESHELL") (getenv "SHELL") - (and (w32-using-nt) "cmd.exe") + (and (fboundp 'w32-using-nt) (w32-using-nt) "cmd.exe") "command.com")) (defun w32-system-shell-p (shell-name) diff --git a/lisp/whitespace.el b/lisp/whitespace.el index b4cd67ff6b9..fad3e2f3ea6 100644 --- a/lisp/whitespace.el +++ b/lisp/whitespace.el @@ -538,31 +538,34 @@ cleaning up a buffer. See `whitespace-cleanup' and `whitespace-cleanup-region' for documentation. See also `whitespace-display-mappings' for documentation." - :type '(repeat :tag "Kind of Blank" - (choice :tag "Kind of Blank Face" - (const :tag "(Face) Face visualization" - face) - (const :tag "(Face) Trailing TABs, SPACEs and HARD SPACEs" - trailing) - (const :tag "(Face) SPACEs and HARD SPACEs" - spaces) - (const :tag "(Face) TABs" tabs) - (const :tag "(Face) Lines" lines) - (const :tag "(Face) SPACEs before TAB" - space-before-tab) - (const :tag "(Face) NEWLINEs" newline) - (const :tag "(Face) Indentation SPACEs" - indentation) - (const :tag "(Face) Too much line indentation" - big-indent) - (const :tag "(Face) Empty Lines At BOB And/Or EOB" - empty) - (const :tag "(Face) SPACEs after TAB" - space-after-tab) - (const :tag "(Mark) SPACEs and HARD SPACEs" - space-mark) - (const :tag "(Mark) TABs" tab-mark) - (const :tag "(Mark) NEWLINEs" newline-mark))) + :type '(set :tag "Kind of Blank" + (const :tag "(Face) Face visualization" face) + (const :tag "(Face) Trailing TABs, SPACEs and HARD SPACEs" + trailing) + (const :tag "(Face) TABs" tabs) + (const :tag "(Face) SPACEs and HARD SPACEs" spaces) + (const :tag "(Face) Lines" lines) + (const :tag "(Face) Lines, only overlong part" lines-tail) + (const :tag "(Face) NEWLINEs" newline) + (const :tag "(Face) Empty Lines At BOB And/Or EOB" empty) + (const :tag "(Face) Indentation SPACEs" indentation::tab) + (const :tag "(Face) Indentation TABs" + indentation::space) + (const :tag "(Face) Indentation TABs or SPACEs" indentation) + (const :tag "(Face) Too much line indentation" big-indent) + (const :tag "(Face) SPACEs after TAB: SPACEs" + space-after-tab::tab) + (const :tag "(Face) SPACEs after TAB: TABs" + space-after-tab::space) + (const :tag "(Face) SPACEs after TAB" space-after-tab) + (const :tag "(Face) SPACEs before TAB: SPACEs" + space-before-tab::tab) + (const :tag "(Face) SPACEs before TAB: TABs" + space-before-tab::space) + (const :tag "(Face) SPACEs before TAB" space-before-tab) + (const :tag "(Mark) SPACEs and HARD SPACEs" space-mark) + (const :tag "(Mark) TABs" tab-mark) + (const :tag "(Mark) NEWLINEs" newline-mark)) :group 'whitespace) (defvar whitespace-space 'whitespace-space diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index 04a900f23c0..295e2aada2a 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -2846,16 +2846,24 @@ The following properties have special meanings for this widget: (if (and (fboundp symbol) (boundp symbol)) ;; If there are two doc strings, give the user a way to pick one. (apropos (concat "\\`" (regexp-quote string) "\\'")) - (if (fboundp symbol) - (describe-function symbol) - (describe-variable symbol))))) + (cond + ((fboundp symbol) + (describe-function symbol)) + ((facep symbol) + (describe-face symbol)) + ((featurep symbol) + (describe-package symbol)) + ((or (boundp symbol) (get symbol 'variable-documentation)) + (describe-variable symbol)) + (t + (message "No documentation available for %s" symbol)))))) (defcustom widget-documentation-links t "Add hyperlinks to documentation strings when non-nil." :type 'boolean :group 'widget-documentation) -(defcustom widget-documentation-link-regexp "`\\([^\n`' ]+\\)'" +(defcustom widget-documentation-link-regexp "[`‘]\\([^\n `'‘’]+\\)['’]" "Regexp for matching potential links in documentation strings. The first group should be the link itself." :type 'regexp @@ -3311,7 +3319,7 @@ It reads a directory name from an editable text field." ;; Avoid a confusing end-of-file error. (skip-syntax-forward "\\s-") (if (eobp) - (setq err "Empty sexp -- use `nil'?") + (setq err "Empty sexp -- use nil?") (unless (widget-apply widget :match (read (current-buffer))) (setq err (widget-get widget :type-error)))) ;; Allow whitespace after expression. diff --git a/lisp/widget.el b/lisp/widget.el index 539f91e63a0..d62f7ffd8d1 100644 --- a/lisp/widget.el +++ b/lisp/widget.el @@ -85,7 +85,7 @@ create identical widgets: The third argument DOC is a documentation string for the widget." ;; (unless (or (null doc) (stringp doc)) - (error "widget documentation must be `nil' or a string.")) + (error "widget documentation must be nil or a string.")) (put name 'widget-type (cons class args)) (put name 'widget-documentation (purecopy doc)) name) diff --git a/lisp/windmove.el b/lisp/windmove.el index c461a00740a..1df74a2d271 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -488,8 +488,8 @@ If no window is at direction DIR, an error is signaled." ;;; end-user functions -;; these are all simple interactive wrappers to `windmove-do- -;; window-select', meant to be bound to keys. +;; these are all simple interactive wrappers to +;; `windmove-do-window-select', meant to be bound to keys. ;;;###autoload (defun windmove-left (&optional arg) diff --git a/lisp/window.el b/lisp/window.el index 46a7dd08275..fad9b2f69fa 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1835,6 +1835,8 @@ optional argument PIXELWISE is passed to the functions." (window-body-width window pixelwise) (window-body-height window pixelwise))) +(declare-function font-info "font.c" (name &optional frame)) + (defun window-font-width (&optional window face) "Return average character width for the font of FACE used in WINDOW. WINDOW must be a live window and defaults to the selected one. @@ -1866,6 +1868,8 @@ information for the remapped face." (aref info 3)) (frame-char-height)))) +(defvar overflow-newline-into-fringe) + (defun window-max-chars-per-line (&optional window face) "Return the number of characters that can be displayed on one line in WINDOW. WINDOW must be a live window and defaults to the selected one. @@ -4307,7 +4311,7 @@ one. If non-nil, reset `quit-restore' parameter to nil. Optional second argument BURY-OR-KILL tells how to proceed with the buffer of WINDOW. The following values are handled: -`nil' means to not handle the buffer in a particular way. This +nil means to not handle the buffer in a particular way. This means that if WINDOW is not deleted by this function, invoking `switch-to-prev-buffer' will usually show the buffer again. @@ -5474,10 +5478,16 @@ element is BUFFER." (cond ((eq type 'reuse) (if (eq (window-buffer window) buffer) - ;; WINDOW shows BUFFER already. - (when (consp (window-parameter window 'quit-restore)) - ;; If WINDOW has a quit-restore parameter, reset its car. - (setcar (window-parameter window 'quit-restore) 'same)) + ;; WINDOW shows BUFFER already. Update WINDOW's quit-restore + ;; parameter, if any. + (let ((quit-restore (window-parameter window 'quit-restore))) + (when (consp quit-restore) + (setcar quit-restore 'same) + ;; The selected-window might have changed in + ;; between (Bug#20353). + (unless (or (eq window (selected-window)) + (eq window (nth 2 quit-restore))) + (setcar (cddr quit-restore) (selected-window))))) ;; WINDOW shows another buffer. (with-current-buffer (window-buffer window) (set-window-parameter @@ -6874,6 +6884,33 @@ the selected window or never appeared in it before, or if :group 'windows :version "24.3") +(defcustom switch-to-buffer-in-dedicated-window nil + "Allow switching to buffer in strongly dedicated windows. +If non-nil, allow `switch-to-buffer' to proceed when called +interactively and the selected window is strongly dedicated to +its buffer. + +The following values are recognized: + +nil - disallow switching; signal an error + +prompt - prompt user whether to allow switching + +pop - perform `pop-to-buffer' instead + +t - undedicate selected window and switch + +When called non-interactively, `switch-to-buffer' always signals +an error when the selected window is dedicated to its buffer and +FORCE-SAME-WINDOW is non-nil." + :type '(choice + (const :tag "Disallow" nil) + (const :tag "Prompt" prompt) + (const :tag "Pop" pop) + (const :tag "Allow" t)) + :group 'windows + :version "25.1") + (defun switch-to-buffer (buffer-or-name &optional norecord force-same-window) "Display buffer BUFFER-OR-NAME in the selected window. @@ -6881,10 +6918,12 @@ WARNING: This is NOT the way to work on another buffer temporarily within a Lisp program! Use `set-buffer' instead. That avoids messing with the window-buffer correspondences. -If the selected window cannot display the specified -buffer (e.g. if it is a minibuffer window or strongly dedicated -to another buffer), call `pop-to-buffer' to select the buffer in -another window. +If the selected window cannot display the specified buffer +because it is a minibuffer window or strongly dedicated to +another buffer, call `pop-to-buffer' to select the buffer in +another window. In interactive use, if the selected window is +strongly dedicated to its buffer, the value of the option +`switch-to-buffer-in-dedicated-window' specifies how to proceed. If called interactively, read the buffer name using the minibuffer. The variable `confirm-nonexistent-file-or-buffer' @@ -6901,8 +6940,9 @@ at the front of the buffer list, and do not make the window displaying it the most recently selected one. If optional argument FORCE-SAME-WINDOW is non-nil, the buffer -must be displayed in the selected window; if that is impossible, -signal an error rather than calling `pop-to-buffer'. +must be displayed in the selected window when called +non-interactively; if that is impossible, signal an error rather +than calling `pop-to-buffer'. The option `switch-to-buffer-preserve-window-point' can be used to make the buffer appear at its last position in the selected @@ -6910,7 +6950,25 @@ window. Return the buffer switched to." (interactive - (list (read-buffer-to-switch "Switch to buffer: ") nil 'force-same-window)) + (let ((force-same-window + (cond + ((window-minibuffer-p) nil) + ((not (eq (window-dedicated-p) t)) 'force-same-window) + ((pcase switch-to-buffer-in-dedicated-window + (`nil (user-error + "Cannot switch buffers in a dedicated window")) + (`prompt + (if (y-or-n-p + (format "Window is dedicated to %s; undedicate it" + (window-buffer))) + (progn + (set-window-dedicated-p nil nil) + 'force-same-window) + (user-error + "Cannot switch buffers in a dedicated window"))) + (`pop nil) + (_ (set-window-dedicated-p nil nil) 'force-same-window)))))) + (list (read-buffer-to-switch "Switch to buffer: ") nil force-same-window))) (let ((buffer (window-normalize-buffer-to-switch-to buffer-or-name))) (cond ;; Don't call set-window-buffer if it's not needed since it @@ -7181,6 +7239,8 @@ See also `fit-frame-to-buffer-margins'." (<= left (- right margin)) (<= margin right)) margin)) +(declare-function tool-bar-height "xdisp.c" (&optional frame pixelwise)) + (defun fit-frame-to-buffer (&optional frame max-height min-height max-width min-width only) "Adjust size of FRAME to display the contents of its buffer exactly. FRAME can be any live frame and defaults to the selected one. @@ -7619,7 +7679,8 @@ Return non-nil if the window was shrunk, nil otherwise." (defvar recenter-last-op nil "Indicates the last recenter operation performed. -Possible values: `top', `middle', `bottom', integer or float numbers.") +Possible values: `top', `middle', `bottom', integer or float numbers. +It can also be nil, which means the first value in `recenter-positions'.") (defcustom recenter-positions '(middle top bottom) "Cycling order for `recenter-top-bottom'. @@ -8046,7 +8107,7 @@ This function is responsible for combining the sizes of the displayed windows and returning a cons (WIDTH . HEIGHT) describing the width and height with which Emacs will call `set-process-window-size' for that process. If the function -returns `nil', Emacs does not call `set-process-window-size'. +returns nil, Emacs does not call `set-process-window-size'. This function is called with the process buffer as the current buffer and with two arguments: the process and a list of windows diff --git a/lisp/woman.el b/lisp/woman.el index 611ba743652..75c3d2e3822 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -161,7 +161,7 @@ ;; The WoMan menu provides an option to make a contents menu for the ;; current man page (using imenu). Alternatively, if you set the -;; variable `woman-imenu' to `t' then WoMan will do it automatically +;; variable `woman-imenu' to t then WoMan will do it automatically ;; for every man page. The menu title is the value of the variable ;; `woman-imenu-title', which is "CONTENTS" by default. By default, ;; the menu shows manual sections and subsections, but you can change @@ -179,7 +179,7 @@ ;; Howard Melman made (essentially) the following suggestions, which ;; are slightly different from the expression that I currently use. ;; You may prefer one of Howard's suggestions, which I think assume -;; that `case-fold-search' is `t' (which it is by default): +;; that `case-fold-search' is t (which it is by default): ;; (setq woman-imenu-generic-expression ;; '((nil "^\\( \\)?\\([A-Z][A-Z ]+[A-Z]\\)[ \t]*$" 2))) @@ -217,7 +217,7 @@ ;; This is modeled on the byte-compiler. It logs all files formatted ;; by WoMan, and if WoMan finds anything that it cannot handle then it ;; writes a warning to this buffer. If the variable `woman-show-log' -;; is non-nil (by default it is `nil') then WoMan automatically +;; is non-nil (by default it is nil) then WoMan automatically ;; displays this buffer. Many WoMan warnings can be completely ;; ignored, because they are reporting the fact that WoMan has ignored ;; requests that it is correct to ignore. In some future version this @@ -228,8 +228,8 @@ ;; Uninterpreted ?roff requests can optionally be left in the ;; formatted buffer to indicate precisely where they occur by -;; resetting the variable `woman-ignore' to `nil' (by default it is -;; `t'). +;; resetting the variable `woman-ignore' to nil (by default it is +;; t). ;; Automatic initiation of woman decoding @@ -278,7 +278,7 @@ ;; CASE-DEPENDENCE OF FILENAMES. By default, WoMan ignores case in ;; file pathnames only when it seems appropriate. MS-Windows users ;; who want complete case independence should set the NTEmacs variable -;; `w32-downcase-file-names' to `t' and use all lower case when +;; `w32-downcase-file-names' to t and use all lower case when ;; setting WoMan file paths. ;; (1) INCOMPATIBLE CHANGE! WoMan no longer uses a persistent topic diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index f8ae73c7b75..2bb71549564 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -321,21 +321,21 @@ Enables basic mouse tracking, mouse motion events and finally extended tracking on terminals that support it. The following escape sequences are understood by modern xterms: -\"\\e[?1000h\" `Basic mouse mode´: Enables reports for mouse +\"\\e[?1000h\" \"Basic mouse mode\": Enables reports for mouse clicks. There is a limit to the maximum row/column position (<= 223), which can be reported in this basic mode. -\"\\e[?1002h\" `Mouse motion mode´: Enables reports for mouse +\"\\e[?1002h\" \"Mouse motion mode\": Enables reports for mouse motion events during dragging operations. -\"\\e[?1005h\" `UTF-8 coordinate extension`: Enables an extension +\"\\e[?1005h\" \"UTF-8 coordinate extension\": Enables an extension to the basic mouse mode, which uses UTF-8 characters to overcome the 223 row/column limit. This extension may conflict with non UTF-8 applications or non UTF-8 locales. -\"\\e[?1006h\" `SGR coordinate extension´: Enables a newer +\"\\e[?1006h\" \"SGR coordinate extension\": Enables a newer alternative extension to the basic mouse mode, which overcomes the 223 row/column limit without the drawbacks of the UTF-8 coordinate extension. |