commit ffeb1164d43c351786bc1e93e441fcbc29f5207b (HEAD, refs/remotes/origin/master) Author: Stefan Monnier Date: Thu Jan 18 23:01:35 2018 -0500 * lisp/calendar/calendar.el: Use lexical-binding (calendar-generate-window): Remove unused variable `day'. (calendar-generate-month): Use calendar-dlet* to provide the dynbind vars promised by the respective docstrings. (calendar-update-mode-line): Use calendar-dlet* to provide `date' to calendar-mode-line-format. Don't call `eval' here since it's called in calendar-string-spread anyway! (calendar-date-string): Use calendar-dlet* to provide the dynbind vars promised by the docstring of calendar-date-display-form. * lisp/calendar/diary-lib.el (diary--date-string): Rename from date-string. diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index bfe533fd60..4bf8b67ee5 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -1,4 +1,4 @@ -;;; calendar.el --- calendar functions +;;; calendar.el --- calendar functions -*- lexical-binding:t -*- ;; Copyright (C) 1988-1995, 1997, 2000-2018 Free Software Foundation, ;; Inc. @@ -403,7 +403,7 @@ redisplays the diary for whatever date the cursor is moved to." (defcustom calendar-date-echo-text "mouse-2: general menu\nmouse-3: menu for this date" "String displayed when the cursor is over a date in the calendar. -Can be either a fixed string, or a lisp expression that returns one. +Can be either a fixed string, or a Lisp expression that returns one. When this expression is evaluated, DAY, MONTH, and YEAR are integers appropriate to the relevant date. For example, to display the ISO date: @@ -497,8 +497,8 @@ Then redraw the calendar, if necessary." (defcustom calendar-left-margin 5 "Empty space to the left of the first month in the calendar." :group 'calendar - :initialize 'custom-initialize-default - :set 'calendar-set-layout-variable + :initialize #'custom-initialize-default + :set #'calendar-set-layout-variable :type 'integer :version "23.1") @@ -508,7 +508,7 @@ Then redraw the calendar, if necessary." (defcustom calendar-intermonth-spacing 4 "Space between months in the calendar. Minimum value is 1." :group 'calendar - :initialize 'custom-initialize-default + :initialize #'custom-initialize-default :set (lambda (sym val) (calendar-set-layout-variable sym val 1)) :type 'integer @@ -517,7 +517,7 @@ Then redraw the calendar, if necessary." ;; FIXME calendar-month-column-width? (defcustom calendar-column-width 3 "Width of each day column in the calendar. Minimum value is 3." - :initialize 'custom-initialize-default + :initialize #'custom-initialize-default :set (lambda (sym val) (calendar-set-layout-variable sym val 3)) :type 'integer @@ -537,7 +537,7 @@ WIDTH defaults to `calendar-day-header-width'." "Width of the day column headers in the calendar. Must be at least one less than `calendar-column-width'." :group 'calendar - :initialize 'custom-initialize-default + :initialize #'custom-initialize-default :set (lambda (sym val) (or (calendar-customized-p 'calendar-day-header-array) (setq calendar-day-header-array @@ -550,7 +550,7 @@ Must be at least one less than `calendar-column-width'." (defcustom calendar-day-digit-width 2 "Width of the day digits in the calendar. Minimum value is 2." :group 'calendar - :initialize 'custom-initialize-default + :initialize #'custom-initialize-default :set (lambda (sym val) (calendar-set-layout-variable sym val 2)) :type 'integer @@ -574,8 +574,8 @@ See `calendar-intermonth-text'." (defcustom calendar-intermonth-text nil "Text to display in the space to the left of each calendar month. -Can be nil, a fixed string, or a lisp expression that returns a string. -When the expression is evaluated, the variables DAY, MONTH and YEAR +Can be nil, a fixed string, or a Lisp expression that returns a string. +When the expression is evaluated, the variables `day', `month' and `year' are integers appropriate for the first day in each week. Will be truncated to the smaller of `calendar-left-margin' and `calendar-intermonth-spacing'. The last character is forced to be a space. @@ -746,7 +746,7 @@ calendar package is already loaded). Rather, use either (const european :tag "Day/Month/Year") (const iso :tag "Year/Month/Day")) :initialize 'custom-initialize-default - :set (lambda (symbol value) + :set (lambda (_symbol value) (calendar-set-date-style value)) :group 'calendar) @@ -971,7 +971,7 @@ Normally you should not customize this, but `calendar-month-header'." calendar-european-month-header) (t calendar-american-month-header)) "Expression to evaluate to return the calendar month headings. -When this expression is evaluated, the variables MONTH and YEAR are +When this expression is evaluated, the variables `month' and `year' are integers appropriate to the relevant month. The result is padded to the width of `calendar-month-digit-width'. @@ -1136,7 +1136,7 @@ MON defaults to `displayed-month'. YR defaults to `displayed-year'." (defmacro calendar-in-read-only-buffer (buffer &rest body) "Switch to BUFFER and execute the forms in BODY. First creates or erases BUFFER as needed. Leaves BUFFER read-only, -with disabled undo. Leaves point at point-min, displays BUFFER." +with disabled undo. Leaves point at `point-min', displays BUFFER." (declare (indent 1) (debug t)) `(progn (set-buffer (get-buffer-create ,buffer)) @@ -1388,7 +1388,7 @@ Optional integers MON and YR are used instead of today's date." (let* ((inhibit-read-only t) (today (calendar-current-date)) (month (calendar-extract-month today)) - (day (calendar-extract-day today)) + ;; (day (calendar-extract-day today)) (year (calendar-extract-year today)) (today-visible (or (not mon) (<= (abs (calendar-interval mon yr month year)) 1))) @@ -1490,8 +1490,9 @@ line." (goto-char (point-min)) (calendar-move-to-column indent) (insert - (calendar-string-spread (list calendar-month-header) - ?\s calendar-month-digit-width)) + (calendar-dlet* ((month month) (year year)) + (calendar-string-spread (list calendar-month-header) + ?\s calendar-month-digit-width))) (calendar-ensure-newline) (calendar-insert-at-column indent calendar-intermonth-header trunc) ;; Use the first N characters of each day to head the columns. @@ -1506,7 +1507,8 @@ line." calendar-day-header-width nil ?\s) (make-string (- calendar-column-width calendar-day-header-width) ?\s))) (calendar-ensure-newline) - (calendar-insert-at-column indent calendar-intermonth-text trunc) + (calendar-dlet* ((day day) (month month) (year year)) + (calendar-insert-at-column indent calendar-intermonth-text trunc)) ;; Add blank days before the first of the month. (insert (make-string (* blank-days calendar-column-width) ?\s)) ;; Put in the days of the month. @@ -1526,7 +1528,8 @@ line." (/= day last)) (calendar-ensure-newline) (setq day (1+ day)) ; first day of next week - (calendar-insert-at-column indent calendar-intermonth-text trunc))))) + (calendar-dlet* ((day day) (month month) (year year)) + (calendar-insert-at-column indent calendar-intermonth-text trunc)))))) (defun calendar-redraw () "Redraw the calendar display, if `calendar-buffer' is live." @@ -1790,18 +1793,18 @@ For a complete description, see the info node `Calendar/Diary'. (defun calendar-string-spread (strings char length) "Concatenate list of STRINGS separated with copies of CHAR to fill LENGTH. -The effect is like mapconcat but the separating pieces are as balanced as +The effect is like `mapconcat' but the separating pieces are as balanced as possible. Each item of STRINGS is evaluated before concatenation so it can actually be an expression that evaluates to a string. If LENGTH is too short, the STRINGS are just concatenated and the result truncated." -;; The algorithm is based on equation (3.25) on page 85 of Concrete -;; Mathematics by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik, -;; Addison-Wesley, Reading, MA, 1989. - (let* ((strings (mapcar 'eval + ;; The algorithm is based on equation (3.25) on page 85 of Concrete + ;; Mathematics by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik, + ;; Addison-Wesley, Reading, MA, 1989. + (let* ((strings (mapcar #'eval (if (< (length strings) 2) (append (list "") strings (list "")) strings))) - (n (- length (string-width (apply 'concat strings)))) + (n (- length (string-width (apply #'concat strings)))) (m (* (1- (length strings)) (char-width char))) (s (car strings)) (strings (cdr strings)) @@ -1818,17 +1821,18 @@ the STRINGS are just concatenated and the result truncated." (if (and calendar-mode-line-format (bufferp (get-buffer calendar-buffer))) (with-current-buffer calendar-buffer - (let ((start (- calendar-left-margin 2)) - (date (condition-case nil - (calendar-cursor-to-nearest-date) - (error (calendar-current-date))))) - (setq mode-line-format - (concat (make-string (max 0 (+ start - (- (car (window-inside-edges)) - (car (window-edges))))) ?\s) - (calendar-string-spread - (mapcar 'eval calendar-mode-line-format) - ?\s (- calendar-right-margin (1- start)))))) + (let ((start (- calendar-left-margin 2))) + (calendar-dlet* ((date (condition-case nil + (calendar-cursor-to-nearest-date) + (error (calendar-current-date))))) + (setq mode-line-format + (concat (make-string (max 0 (+ start + (- (car (window-inside-edges)) + (car (window-edges))))) + ?\s) + (calendar-string-spread + calendar-mode-line-format + ?\s (- calendar-right-margin (1- start))))))) (force-mode-line-update)))) (defun calendar-buffer-list () @@ -2060,11 +2064,11 @@ is a string to insert in the minibuffer before reading." Each abbreviation is no longer than MAXLEN (default `calendar-abbrev-length') characters." (or maxlen (setq maxlen calendar-abbrev-length)) - (apply 'vector (mapcar - (lambda (f) - ;; TODO? truncate-string-to-width? - (substring f 0 (min maxlen (length f)))) - full))) + (apply #'vector (mapcar + (lambda (f) + ;; TODO? truncate-string-to-width? + (substring f 0 (min maxlen (length f)))) + full))) (defcustom calendar-day-name-array ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday"] @@ -2282,7 +2286,7 @@ If optional NODAY is t, does not ask for day, but just returns (month (cdr (assoc-string (completing-read "Month name: " - (mapcar 'list (append month-array nil)) + (mapcar #'list (append month-array nil)) nil t) (calendar-make-alist month-array 1) t))) (last (calendar-last-day-of-month month year))) @@ -2343,7 +2347,7 @@ interpreted as BC; -1 being 1 BC, and so on." (setq calendar-mark-holidays-flag nil calendar-mark-diary-entries-flag nil) (with-current-buffer calendar-buffer - (mapc 'delete-overlay (overlays-in (point-min) (point-max))))) + (mapc #'delete-overlay (overlays-in (point-min) (point-max))))) (defun calendar-date-is-visible-p (date) "Return non-nil if DATE is valid and is visible in the calendar window." @@ -2446,7 +2450,7 @@ ATTRLIST is a list with elements of the form :face face :foreground color." (make-face temp-face) (copy-face face temp-face) ;; Apply the font aspects. - (apply 'set-face-attribute temp-face nil (nreverse faceinfo)) + (apply #'set-face-attribute temp-face nil (nreverse faceinfo)) temp-face))) (defun calendar-mark-visible-date (date &optional mark) @@ -2518,13 +2522,14 @@ and day names to be abbreviated as specified by `calendar-month-abbrev-array' and `calendar-day-abbrev-array', respectively. An optional parameter NODAYNAME, when t, omits the name of the day of the week." - (let* ((dayname (unless nodayname (calendar-day-name date abbreviate))) - (month (calendar-extract-month date)) + (let ((month (calendar-extract-month date))) + (calendar-dlet* + ((dayname (unless nodayname (calendar-day-name date abbreviate))) (monthname (calendar-month-name month abbreviate)) (day (number-to-string (calendar-extract-day date))) (month (number-to-string month)) (year (number-to-string (calendar-extract-year date)))) - (mapconcat 'eval calendar-date-display-form ""))) + (mapconcat #'eval calendar-date-display-form "")))) (defun calendar-dayname-on-or-before (dayname date) "Return the absolute date of the DAYNAME on or before absolute DATE. @@ -2627,11 +2632,11 @@ If called by a mouse-event, pops up a menu with the result." selection) (if (mouse-event-p event) (and (setq selection (cal-menu-x-popup-menu event title - (mapcar 'list others))) + (mapcar #'list others))) (call-interactively selection)) (calendar-in-read-only-buffer calendar-other-calendars-buffer (calendar-set-mode-line title) - (insert (mapconcat 'identity others "\n")))))) + (insert (mapconcat #'identity others "\n")))))) (defun calendar-print-day-of-year () "Show day number in year/days remaining in year for date under the cursor." diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index c327717c8a..181b1172fa 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -740,7 +740,7 @@ Or to `diary-mark-entries'.") (defvar diary-saved-point) ; bound in diary-list-entries (defvar diary-including) -(defvar date-string) ; bound in diary-list-entries +(defvar diary--date-string) ; bound in diary-list-entries (defun diary-list-entries (date number &optional list-only) "Create and display a buffer containing the relevant lines in `diary-file'. @@ -794,7 +794,7 @@ LIST-ONLY is non-nil, in which case it just returns the list." diary-number-of-entries))) (when (> number 0) (let* ((original-date date) ; save for possible use in the hooks - (date-string (calendar-date-string date)) + (diary--date-string (calendar-date-string date)) (diary-buffer (find-buffer-visiting diary-file)) ;; Dynamically bound in diary-include-files. (d-incp (and (boundp 'diary-including) diary-including)) @@ -952,7 +952,7 @@ Returns a cons (NOENTRIES . HOLIDAY-STRING)." (let* ((holiday-list (if diary-show-holidays-flag (calendar-check-holidays original-date))) (hol-string (format "%s%s%s" - date-string + diary--date-string (if holiday-list ": " "") (mapconcat #'identity holiday-list "; "))) (msg (format "No diary entries for %s" hol-string)) @@ -970,9 +970,10 @@ Returns a cons (NOENTRIES . HOLIDAY-STRING)." (message "%s" msg) ;; holiday-list which is too wide for a message gets a buffer. (calendar-in-read-only-buffer holiday-buffer - (calendar-set-mode-line (format "Holidays for %s" date-string)) + (calendar-set-mode-line (format "Holidays for %s" + diary--date-string)) (insert (mapconcat #'identity holiday-list "\n"))) - (message "No diary entries for %s" date-string))) + (message "No diary entries for %s" diary--date-string))) (cons noentries hol-string))) @@ -1126,7 +1127,7 @@ This is an option for `diary-display-function'." (if (eq major-mode 'diary-fancy-display-mode) (run-hooks 'diary-fancy-display-mode-hook) (diary-fancy-display-mode)) - (calendar-set-mode-line date-string)))) + (calendar-set-mode-line diary--date-string)))) ;; FIXME modernize? (defun diary-print-entries () @@ -1668,7 +1669,7 @@ Sexp diary entries must be prefaced by a `diary-sexp-entry-symbol' %%(SEXP) ENTRY -Both ENTRY and DATE are available when the SEXP is evaluated. If +Both `entry' and `date' are available when the SEXP is evaluated. If the SEXP returns nil, the diary entry does not apply. If it returns a non-nil value, ENTRY will be taken to apply to DATE; if the value is a string, that string will be the diary entry in the commit 47019a521f774fbd13441e178a6a82c9989b9912 Author: Noam Postavsky Date: Thu Jan 18 08:22:47 2018 -0500 Switch term.el to lexical binding, and clean up code a bit * lisp/term.el (term-terminal-state): Remove. (term-do-line-wrapping): New variable, equivalent to state 1. (term-terminal-previous-parameter, term-terminal-parameter) (term-terminal-more-parameters) (term-terminal-previous-parameter-2) (term-terminal-previous-parameter-3) (term-terminal-previous-parameter-4): Remove. (term-move-to-column): New function, for absolute column movement. (term-control-seq-regexp, term-control-seq-prefix-regexp): New constants. (term-emulate-terminal, term-pager-discard): Use them via string-match instead of implementing a state machine in elisp. Handle all unprocessed input via term-terminal-undecoded-bytes (this solves Bug#17231). (term-handle-ansi-escape): Take a list of escape sequence parameters as an argument, rather than via dynamic variables. (term-erase-in-display): Consult the argument, not the dynamically bound term-terminal-parameter (which happened to be the same as the argument up until now). diff --git a/lisp/term.el b/lisp/term.el index ca83b4f8dc..1a373935c9 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1,4 +1,4 @@ -;;; term.el --- general command interpreter in a window stuff +;;; term.el --- general command interpreter in a window stuff -*- lexical-binding: t -*- ;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2018 Free Software ;; Foundation, Inc. @@ -101,12 +101,8 @@ ;; ---------------------------------------- ;; ;; -;; ANSI colorization should work well, I've decided to limit the interpreter -;; to five outstanding commands (like ESC [ 01;04;32;41;07m. -;; You shouldn't need more, if you do, tell me and I'll increase it. It's -;; so easy you could do it yourself... -;; -;; Blink, is not supported. Currently it's mapped as bold. +;; ANSI colorization should work well. Blink, is not supported. +;; Currently it's mapped as bold. ;; ;; ---------------------------------------- ;; @@ -392,21 +388,14 @@ contains saved term-home-marker from original sub-buffer.") "Current vertical row (relative to home-marker) or nil if unknown.") (defvar term-insert-mode nil) (defvar term-vertical-motion) -(defvar term-terminal-state 0 - "State of the terminal emulator: -state 0: Normal state -state 1: Last character was a graphic in the last column. +(defvar term-do-line-wrapping nil + "Last character was a graphic in the last column. If next char is graphic, first move one column right \(and line warp) before displaying it. -This emulates (more or less) the behavior of xterm. -state 2: seen ESC -state 3: seen ESC [ (or ESC [ ?) -state 4: term-terminal-parameter contains pending output.") +This emulates (more or less) the behavior of xterm.") (defvar term-kill-echo-list nil "A queue of strings whose echo we want suppressed.") -(defvar term-terminal-parameter) (defvar term-terminal-undecoded-bytes nil) -(defvar term-terminal-previous-parameter) (defvar term-current-face 'term) (defvar term-scroll-start 0 "Top-most line (inclusive) of scrolling region.") (defvar term-scroll-end) ; Number of line (zero-based) after scrolling region. @@ -750,12 +739,6 @@ Buffer local variable.") (defvar term-ansi-current-reverse nil) (defvar term-ansi-current-invisible nil) -;; Four should be enough, if you want more, just add. -mm -(defvar term-terminal-more-parameters 0) -(defvar term-terminal-previous-parameter-2 -1) -(defvar term-terminal-previous-parameter-3 -1) -(defvar term-terminal-previous-parameter-4 -1) - ;;; Faces (defvar ansi-term-color-vector [term @@ -1089,15 +1072,9 @@ Entry to this mode runs the hooks on `term-mode-hook'." (make-local-variable 'term-ansi-current-reverse) (make-local-variable 'term-ansi-current-invisible) - (make-local-variable 'term-terminal-parameter) (make-local-variable 'term-terminal-undecoded-bytes) - (make-local-variable 'term-terminal-previous-parameter) - (make-local-variable 'term-terminal-previous-parameter-2) - (make-local-variable 'term-terminal-previous-parameter-3) - (make-local-variable 'term-terminal-previous-parameter-4) - (make-local-variable 'term-terminal-more-parameters) - (make-local-variable 'term-terminal-state) + (make-local-variable 'term-do-line-wrapping) (make-local-variable 'term-kill-echo-list) (make-local-variable 'term-start-line-column) (make-local-variable 'term-current-column) @@ -2658,10 +2635,8 @@ See `term-prompt-regexp'." (cond (term-current-column) ((setq term-current-column (current-column))))) -;; Move DELTA column right (or left if delta < 0 limiting at column 0). - -(defun term-move-columns (delta) - (setq term-current-column (max 0 (+ (term-current-column) delta))) +(defun term-move-to-column (column) + (setq term-current-column column) (let ((point-at-eol (line-end-position))) (move-to-column term-current-column t) ;; If move-to-column extends the current line it will use the face @@ -2670,6 +2645,11 @@ See `term-prompt-regexp'." (when (> (point) point-at-eol) (put-text-property point-at-eol (point) 'font-lock-face 'default)))) +;; Move DELTA column right (or left if delta < 0 limiting at column 0). +(defun term-move-columns (delta) + (term-move-to-column + (max 0 (+ (term-current-column) delta)))) + ;; Insert COUNT copies of CHAR in the default face. (defun term-insert-char (char count) (let ((old-point (point))) @@ -2761,27 +2741,42 @@ See `term-prompt-regexp'." ;; This is the standard process filter for term buffers. ;; It emulates (most of the features of) a VT100/ANSI-style terminal. +;; References: +;; [ctlseqs]: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html +;; [ECMA-48]: http://www.ecma-international.org/publications/standards/Ecma-048.htm +;; [vt100]: https://vt100.net/docs/vt100-ug/chapter3.html + +(defconst term-control-seq-regexp + (concat + ;; A control character, + "\\(?:[\r\n\000\007\t\b\016\017]\\|" + ;; some Emacs specific control sequences, implemented by + ;; `term-command-hook', + "\032[^\n]+\r?\n\\|" + ;; a C1 escape coded character (see [ECMA-48] section 5.3 "Elements + ;; of the C1 set"), + "\e\\(?:[DM78c]\\|" + ;; another Emacs specific control sequence, + "AnSiT[^\n]+\r?\n\\|" + ;; or an escape sequence (section 5.4 "Control Sequences"), + "\\[\\([\x30-\x3F]*\\)[\x20-\x2F]*[\x40-\x7E]\\)\\)") + "Regexp matching control sequences handled by term.el.") + +(defconst term-control-seq-prefix-regexp + "[\032\e]") + (defun term-emulate-terminal (proc str) (with-current-buffer (process-buffer proc) - (let* ((i 0) char funny - count ; number of decoded chars in substring - count-bytes ; number of bytes + (let* ((i 0) funny decoded-substring - save-point save-marker old-point temp win + save-point save-marker win (inhibit-read-only t) (buffer-undo-list t) (selected (selected-window)) last-win - handled-ansi-message (str-length (length str))) (save-selected-window - (let ((newstr (term-handle-ansi-terminal-messages str))) - (unless (eq str newstr) - (setq handled-ansi-message t - str newstr))) - (setq str-length (length str)) - (when (marker-buffer term-pending-delete-marker) ;; Delete text following term-pending-delete-marker. (delete-region term-pending-delete-marker (process-mark proc)) @@ -2811,298 +2806,214 @@ See `term-prompt-regexp'." (setq str (concat term-terminal-undecoded-bytes str)) (setq str-length (length str)) (setq term-terminal-undecoded-bytes nil)) - (cond ((eq term-terminal-state 4) ;; Have saved pending output. - (setq str (concat term-terminal-parameter str)) - (setq term-terminal-parameter nil) - (setq str-length (length str)) - (setq term-terminal-state 0))) - - (while (< i str-length) - (setq char (aref str i)) - (cond ((< term-terminal-state 2) - ;; Look for prefix of regular chars - (setq funny - (string-match "[\r\n\000\007\033\t\b\032\016\017]" - str i)) - (when (not funny) (setq funny str-length)) - (cond ((> funny i) - (cond ((eq term-terminal-state 1) - ;; We are in state 1, we need to wrap - ;; around. Go to the beginning of - ;; the next line and switch to state - ;; 0. - (term-down 1 t) - (term-move-columns (- (term-current-column))) - (setq term-terminal-state 0))) - ;; Decode the string before counting - ;; characters, to avoid garbling of certain - ;; multibyte characters (bug#1006). - (setq decoded-substring - (decode-coding-string - (substring str i funny) - locale-coding-system)) - (setq count (length decoded-substring)) - ;; Check for multibyte characters that ends - ;; before end of string, and save it for - ;; next time. - (when (= funny str-length) - (let ((partial 0)) - (while (eq (char-charset (aref decoded-substring - (- count 1 partial))) - 'eight-bit) - (cl-incf partial)) - (when (> partial 0) - (setq term-terminal-undecoded-bytes - (substring decoded-substring (- partial))) - (setq decoded-substring - (substring decoded-substring 0 (- partial))) - (cl-decf str-length partial) - (cl-decf count partial) - (cl-decf funny partial)))) - (setq temp (- (+ (term-horizontal-column) count) - term-width)) - (cond ((or term-suppress-hard-newline (<= temp 0))) - ;; All count chars fit in line. - ((> count temp) ;; Some chars fit. - ;; This iteration, handle only what fits. - (setq count (- count temp)) - (setq count-bytes - (length - (encode-coding-string - (substring decoded-substring 0 count) - 'binary))) - (setq temp 0) - (setq funny (+ count-bytes i))) - ((or (not (or term-pager-count - term-scroll-with-delete)) - (> (term-handle-scroll 1) 0)) - (term-adjust-current-row-cache 1) - (setq count (min count term-width)) - (setq count-bytes - (length - (encode-coding-string - (substring decoded-substring 0 count) - 'binary))) - (setq funny (+ count-bytes i)) - (setq term-start-line-column - term-current-column)) - (t ;; Doing PAGER processing. - (setq count 0 funny i) - (setq term-current-column nil) - (setq term-start-line-column nil))) - (setq old-point (point)) - - ;; Insert a string, check how many columns - ;; we moved, then delete that many columns - ;; following point if not eob nor insert-mode. - (let ((old-column (current-column)) - columns pos) - (insert (decode-coding-string (substring str i funny) locale-coding-system)) - (setq term-current-column (current-column) - columns (- term-current-column old-column)) - (when (not (or (eobp) term-insert-mode)) - (setq pos (point)) - (term-move-columns columns) - (delete-region pos (point))) - ;; In insert mode if the current line - ;; has become too long it needs to be - ;; chopped off. - (when term-insert-mode - (setq pos (point)) - (end-of-line) - (when (> (current-column) term-width) - (delete-region (- (point) (- (current-column) term-width)) - (point))) - (goto-char pos))) - (setq term-current-column nil) - - (put-text-property old-point (point) - 'font-lock-face term-current-face) - ;; If the last char was written in last column, - ;; back up one column, but remember we did so. - ;; Thus we emulate xterm/vt100-style line-wrapping. - (cond ((eq temp 0) - (term-move-columns -1) - (setq term-terminal-state 1))) - (setq i (1- funny))) - ((and (setq term-terminal-state 0) - (eq char ?\^I)) ; TAB (terminfo: ht) - (setq count (term-current-column)) - ;; The line cannot exceed term-width. TAB at - ;; the end of a line should not cause wrapping. - (setq count (min term-width - (+ count 8 (- (mod count 8))))) - (if (> term-width count) - (progn - (term-move-columns - (- count (term-current-column))) - (setq term-current-column count)) - (when (> term-width (term-current-column)) - (term-move-columns - (1- (- term-width (term-current-column))))) - (when (= term-width (term-current-column)) - (term-move-columns -1)))) - ((eq char ?\r) ;; (terminfo: cr) - (term-vertical-motion 0) - (setq term-current-column term-start-line-column)) - ((eq char ?\n) ;; (terminfo: cud1, ind) - (unless (and term-kill-echo-list - (term-check-kill-echo-list)) - (term-down 1 t))) - ((eq char ?\b) ;; (terminfo: cub1) - (term-move-columns -1)) - ((eq char ?\033) ; Escape - (setq term-terminal-state 2)) - ((eq char 0)) ; NUL: Do nothing - ((eq char ?\016)) ; Shift Out - ignored - ((eq char ?\017)) ; Shift In - ignored - ((eq char ?\^G) ;; (terminfo: bel) - (beep t)) - ((eq char ?\032) - (let ((end (string-match "\r?\n" str i))) - (if end - (progn - (unless handled-ansi-message - (funcall term-command-hook - (decode-coding-string - (substring str (1+ i) end) - locale-coding-system))) - (setq i (1- (match-end 0)))) - (setq term-terminal-parameter (substring str i)) - (setq term-terminal-state 4) - (setq i str-length)))) - (t ; insert char FIXME: Should never happen - (term-move-columns 1) - (backward-delete-char 1) - (insert char)))) - ((eq term-terminal-state 2) ; Seen Esc - (cond ((eq char ?\133) ;; ?\133 = ?[ - - ;; Some modifications to cope with multiple - ;; settings like ^[[01;32;43m -mm - ;; Note that now the init value of - ;; term-terminal-previous-parameter has been - ;; changed to -1 - - (setq term-terminal-parameter 0) - (setq term-terminal-previous-parameter -1) - (setq term-terminal-previous-parameter-2 -1) - (setq term-terminal-previous-parameter-3 -1) - (setq term-terminal-previous-parameter-4 -1) - (setq term-terminal-more-parameters 0) - (setq term-terminal-state 3)) - ((eq char ?D) ;; scroll forward - (term-handle-deferred-scroll) - (term-down 1 t) - (setq term-terminal-state 0)) - ;; ((eq char ?E) ;; (terminfo: nw), not used for - ;; ;; now, but this is a working - ;; ;; implementation - ;; (term-down 1) - ;; (term-goto term-current-row 0) - ;; (setq term-terminal-state 0)) - ((eq char ?M) ;; scroll reversed (terminfo: ri) - (if (or (< (term-current-row) term-scroll-start) - (>= (1- (term-current-row)) - term-scroll-start)) - ;; Scrolling up will not move outside - ;; the scroll region. - (term-down -1) - ;; Scrolling the scroll region is needed. - (term-down -1 t)) - (setq term-terminal-state 0)) - ((eq char ?7) ;; Save cursor (terminfo: sc) - (term-handle-deferred-scroll) - (setq term-saved-cursor - (list (term-current-row) - (term-horizontal-column) - term-ansi-current-bg-color - term-ansi-current-bold - term-ansi-current-color - term-ansi-current-invisible - term-ansi-current-reverse - term-ansi-current-underline - term-current-face) - ) - (setq term-terminal-state 0)) - ((eq char ?8) ;; Restore cursor (terminfo: rc) - (when term-saved-cursor - (term-goto (nth 0 term-saved-cursor) - (nth 1 term-saved-cursor)) - (setq term-ansi-current-bg-color - (nth 2 term-saved-cursor) - term-ansi-current-bold - (nth 3 term-saved-cursor) - term-ansi-current-color - (nth 4 term-saved-cursor) - term-ansi-current-invisible - (nth 5 term-saved-cursor) - term-ansi-current-reverse - (nth 6 term-saved-cursor) - term-ansi-current-underline - (nth 7 term-saved-cursor) - term-current-face - (nth 8 term-saved-cursor))) - (setq term-terminal-state 0)) - ((eq char ?c) ;; \Ec - Reset (terminfo: rs1) - ;; This is used by the "clear" program. - (setq term-terminal-state 0) - (term-reset-terminal)) - ;; The \E#8 reset sequence for xterm. We - ;; probably don't need to handle it, but this - ;; is the code to parse it. - ;; ((eq char ?#) - ;; (when (eq (aref str (1+ i)) ?8) - ;; (setq i (1+ i)) - ;; (setq term-scroll-start 0) - ;; (setq term-scroll-end term-height) - ;; (setq term-terminal-state 0))) - ((setq term-terminal-state 0)))) - ((eq term-terminal-state 3) ; Seen Esc [ - (cond ((and (>= char ?0) (<= char ?9)) - (setq term-terminal-parameter - (+ (* 10 term-terminal-parameter) (- char ?0)))) - ((eq char ?\;) - ;; Some modifications to cope with multiple - ;; settings like ^[[01;32;43m -mm - (setq term-terminal-more-parameters 1) - (setq term-terminal-previous-parameter-4 - term-terminal-previous-parameter-3) - (setq term-terminal-previous-parameter-3 - term-terminal-previous-parameter-2) - (setq term-terminal-previous-parameter-2 - term-terminal-previous-parameter) - (setq term-terminal-previous-parameter - term-terminal-parameter) - (setq term-terminal-parameter 0)) - ((eq char ??)) ; Ignore ? - (t - (term-handle-ansi-escape proc char) - (setq term-terminal-more-parameters 0) - (setq term-terminal-previous-parameter-4 -1) - (setq term-terminal-previous-parameter-3 -1) - (setq term-terminal-previous-parameter-2 -1) - (setq term-terminal-previous-parameter -1) - (setq term-terminal-state 0))))) - (when (term-handling-pager) - ;; Finish stuff to get ready to handle PAGER. - (if (> (% (current-column) term-width) 0) - (setq term-terminal-parameter - (substring str i)) - ;; We're at column 0. Goto end of buffer; to compensate, - ;; prepend a ?\r for later. This looks more consistent. - (if (zerop i) - (setq term-terminal-parameter - (concat "\r" (substring str i))) - (setq term-terminal-parameter (substring str (1- i))) - (aset term-terminal-parameter 0 ?\r)) - (goto-char (point-max))) - (setq term-terminal-state 4) - (make-local-variable 'term-pager-old-filter) - (setq term-pager-old-filter (process-filter proc)) - (set-process-filter proc term-pager-filter) - (setq i str-length)) - (setq i (1+ i)))) + + (while (< i str-length) + (setq funny (string-match term-control-seq-regexp str i)) + (let ((ctl-params (and funny (match-string 1 str))) + (ctl-params-end (and funny (match-end 1))) + (ctl-end (if funny (match-end 0) + (setq funny (string-match term-control-seq-prefix-regexp str i)) + (if funny + (setq term-terminal-undecoded-bytes + (substring str funny)) + (setq funny str-length)) + ;; The control sequence ends somewhere + ;; past the end of this string. + (1+ str-length)))) + (when (> funny i) + (when term-do-line-wrapping + (term-down 1 t) + (term-move-to-column 0) + (setq term-do-line-wrapping nil)) + ;; Handle non-control data. Decode the string before + ;; counting characters, to avoid garbling of certain + ;; multibyte characters (bug#1006). + (setq decoded-substring + (decode-coding-string + (substring str i funny) + locale-coding-system t)) + ;; Check for multibyte characters that ends + ;; before end of string, and save it for + ;; next time. + (when (= funny str-length) + (let ((partial 0) + (count (length decoded-substring))) + (while (eq (char-charset (aref decoded-substring + (- count 1 partial))) + 'eight-bit) + (cl-incf partial)) + (when (> partial 0) + (setq term-terminal-undecoded-bytes + (substring decoded-substring (- partial))) + (setq decoded-substring + (substring decoded-substring 0 (- partial))) + (cl-decf str-length partial) + (cl-decf funny partial)))) + + ;; Insert a string, check how many columns + ;; we moved, then delete that many columns + ;; following point if not eob nor insert-mode. + (let ((old-column (term-horizontal-column)) + (old-point (point)) + columns) + (unless term-suppress-hard-newline + (while (> (+ (length decoded-substring) old-column) + term-width) + (insert (substring decoded-substring 0 + (- term-width old-column))) + ;; Since we've enough text to fill the whole line, + ;; delete previous text regardless of + ;; `term-insert-mode's value. + (delete-region (point) (line-end-position)) + (term-down 1 t) + (term-move-columns (- (term-current-column))) + (setq decoded-substring + (substring decoded-substring (- term-width old-column))) + (setq old-column 0))) + (insert decoded-substring) + (setq term-current-column (current-column) + columns (- term-current-column old-column)) + (when (not (or (eobp) term-insert-mode)) + (let ((pos (point))) + (term-move-columns columns) + (delete-region pos (point)))) + ;; In insert mode if the current line + ;; has become too long it needs to be + ;; chopped off. + (when term-insert-mode + (let ((pos (point))) + (end-of-line) + (when (> (current-column) term-width) + (delete-region (- (point) (- (current-column) term-width)) + (point))) + (goto-char pos))) + + (put-text-property old-point (point) + 'font-lock-face term-current-face)) + ;; If the last char was written in last column, + ;; back up one column, but remember we did so. + ;; Thus we emulate xterm/vt100-style line-wrapping. + (cond ((eq (term-current-column) term-width) + (term-move-columns -1) + (setq term-do-line-wrapping t))) + (setq term-current-column nil) + (setq i funny)) + (pcase-exhaustive (and (<= ctl-end str-length) (aref str i)) + (?\t ;; TAB (terminfo: ht) + ;; The line cannot exceed term-width. TAB at + ;; the end of a line should not cause wrapping. + (let ((col (term-current-column))) + (term-move-to-column + (min (1- term-width) + (+ col 8 (- (mod col 8))))))) + (?\r ;; (terminfo: cr) + (term-vertical-motion 0) + (setq term-current-column term-start-line-column)) + (?\n ;; (terminfo: cud1, ind) + (unless (and term-kill-echo-list + (term-check-kill-echo-list)) + (term-down 1 t))) + (?\b ;; (terminfo: cub1) + (term-move-columns -1)) + (?\C-g ;; (terminfo: bel) + (beep t)) + (?\032 ; Emacs specific control sequence. + (funcall term-command-hook + (decode-coding-string + (substring str (1+ i) + (- ctl-end + (if (eq (aref str (- ctl-end 2)) ?\r) + 2 1))) + locale-coding-system t))) + (?\e + (pcase (aref str (1+ i)) + (?\[ + ;; We only handle control sequences with a single + ;; "Final" byte (see [ECMA-48] section 5.4). + (when (eq ctl-params-end (1- ctl-end)) + (term-handle-ansi-escape + proc + (mapcar ;; We don't distinguish empty params + ;; from 0 (according to [ECMA-48] we + ;; should, but all commands we support + ;; default to 0 values anyway). + #'string-to-number + (split-string ctl-params ";")) + (aref str (1- ctl-end))))) + (?D ;; Scroll forward (apparently not documented in + ;; [ECMA-48], [ctlseqs] mentions it as C1 + ;; character "Index" though). + (term-handle-deferred-scroll) + (term-down 1 t)) + (?M ;; Scroll reversed (terminfo: ri, ECMA-48 + ;; "Reverse Linefeed"). + (if (or (< (term-current-row) term-scroll-start) + (>= (1- (term-current-row)) + term-scroll-start)) + ;; Scrolling up will not move outside + ;; the scroll region. + (term-down -1) + ;; Scrolling the scroll region is needed. + (term-down -1 t))) + (?7 ;; Save cursor (terminfo: sc, not in [ECMA-48], + ;; [ctlseqs] has it as "DECSC"). + (term-handle-deferred-scroll) + (setq term-saved-cursor + (list (term-current-row) + (term-horizontal-column) + term-ansi-current-bg-color + term-ansi-current-bold + term-ansi-current-color + term-ansi-current-invisible + term-ansi-current-reverse + term-ansi-current-underline + term-current-face))) + (?8 ;; Restore cursor (terminfo: rc, [ctlseqs] + ;; "DECRC"). + (when term-saved-cursor + (term-goto (nth 0 term-saved-cursor) + (nth 1 term-saved-cursor)) + (setq term-ansi-current-bg-color + (nth 2 term-saved-cursor) + term-ansi-current-bold + (nth 3 term-saved-cursor) + term-ansi-current-color + (nth 4 term-saved-cursor) + term-ansi-current-invisible + (nth 5 term-saved-cursor) + term-ansi-current-reverse + (nth 6 term-saved-cursor) + term-ansi-current-underline + (nth 7 term-saved-cursor) + term-current-face + (nth 8 term-saved-cursor)))) + (?c ;; \Ec - Reset (terminfo: rs1, [ctlseqs] "RIS"). + ;; This is used by the "clear" program. + (term-reset-terminal)) + (?A ;; An \eAnSiT sequence (Emacs specific). + (term-handle-ansi-terminal-messages + (substring str i ctl-end))))) + ;; Ignore NUL, Shift Out, Shift In. + ((or ?\0 #xE #xF 'nil) nil)) + (if (term-handling-pager) + (progn + ;; Finish stuff to get ready to handle PAGER. + (if (> (% (current-column) term-width) 0) + (setq term-terminal-undecoded-bytes + (substring str i)) + ;; We're at column 0. Goto end of buffer; to compensate, + ;; prepend a ?\r for later. This looks more consistent. + (if (zerop i) + (setq term-terminal-undecoded-bytes + (concat "\r" (substring str i))) + (setq term-terminal-undecoded-bytes (substring str (1- i))) + (aset term-terminal-undecoded-bytes 0 ?\r)) + (goto-char (point-max))) + (make-local-variable 'term-pager-old-filter) + (setq term-pager-old-filter (process-filter proc)) + (set-process-filter proc term-pager-filter) + (setq i str-length)) + (setq i ctl-end))))) (when (>= (term-current-row) term-height) (term-handle-deferred-scroll)) @@ -3333,87 +3244,83 @@ option is enabled. See `term-set-goto-process-mark'." ;; Handle a character assuming (eq terminal-state 2) - ;; i.e. we have previously seen Escape followed by ?[. -(defun term-handle-ansi-escape (proc char) +(defun term-handle-ansi-escape (proc params char) (cond ((or (eq char ?H) ;; cursor motion (terminfo: cup,home) ;; (eq char ?f) ;; xterm seems to handle this sequence too, not ;; needed for now ) - (when (<= term-terminal-parameter 0) - (setq term-terminal-parameter 1)) - (when (<= term-terminal-previous-parameter 0) - (setq term-terminal-previous-parameter 1)) - (when (> term-terminal-previous-parameter term-height) - (setq term-terminal-previous-parameter term-height)) - (when (> term-terminal-parameter term-width) - (setq term-terminal-parameter term-width)) (term-goto - (1- term-terminal-previous-parameter) - (1- term-terminal-parameter))) + (1- (max 1 (min (or (nth 0 params) 0) term-height))) + (1- (max 1 (min (or (nth 1 params) 0) term-width))))) ;; \E[A - cursor up (terminfo: cuu, cuu1) ((eq char ?A) (term-handle-deferred-scroll) - (let ((tcr (term-current-row))) + (let ((tcr (term-current-row)) + (scroll-amount (car params))) (term-down - (if (< (- tcr term-terminal-parameter) term-scroll-start) + (if (< (- tcr scroll-amount) term-scroll-start) ;; If the amount to move is before scroll start, move ;; to scroll start. (- term-scroll-start tcr) - (if (>= term-terminal-parameter tcr) + (if (>= scroll-amount tcr) (- tcr) - (- (max 1 term-terminal-parameter)))) t))) + (- (max 1 scroll-amount)))) + t))) ;; \E[B - cursor down (terminfo: cud) ((eq char ?B) - (let ((tcr (term-current-row))) + (let ((tcr (term-current-row)) + (scroll-amount (car params))) (unless (= tcr (1- term-scroll-end)) (term-down - (if (> (+ tcr term-terminal-parameter) term-scroll-end) + (if (> (+ tcr scroll-amount) term-scroll-end) (- term-scroll-end 1 tcr) - (max 1 term-terminal-parameter)) t)))) + (max 1 scroll-amount)) + t)))) ;; \E[C - cursor right (terminfo: cuf, cuf1) ((eq char ?C) (term-move-columns (max 1 - (if (>= (+ term-terminal-parameter (term-current-column)) term-width) + (if (>= (+ (car params) (term-current-column)) term-width) (- term-width (term-current-column) 1) - term-terminal-parameter)))) + (car params))))) ;; \E[D - cursor left (terminfo: cub) ((eq char ?D) - (term-move-columns (- (max 1 term-terminal-parameter)))) + (term-move-columns (- (max 1 (car params))))) ;; \E[G - cursor motion to absolute column (terminfo: hpa) ((eq char ?G) - (term-move-columns (- (max 0 (min term-width term-terminal-parameter)) + (term-move-columns (- (max 0 (min term-width (car params))) (term-current-column)))) ;; \E[J - clear to end of screen (terminfo: ed, clear) ((eq char ?J) - (term-erase-in-display term-terminal-parameter)) + (term-erase-in-display (car params))) ;; \E[K - clear to end of line (terminfo: el, el1) ((eq char ?K) - (term-erase-in-line term-terminal-parameter)) + (term-erase-in-line (car params))) ;; \E[L - insert lines (terminfo: il, il1) ((eq char ?L) - (term-insert-lines (max 1 term-terminal-parameter))) + (term-insert-lines (max 1 (car params)))) ;; \E[M - delete lines (terminfo: dl, dl1) ((eq char ?M) - (term-delete-lines (max 1 term-terminal-parameter))) + (term-delete-lines (max 1 (car params)))) ;; \E[P - delete chars (terminfo: dch, dch1) ((eq char ?P) - (term-delete-chars (max 1 term-terminal-parameter))) + (term-delete-chars (max 1 (car params)))) ;; \E[@ - insert spaces (terminfo: ich) ((eq char ?@) - (term-insert-spaces (max 1 term-terminal-parameter))) + (term-insert-spaces (max 1 (car params)))) ;; \E[?h - DEC Private Mode Set ((eq char ?h) - (cond ((eq term-terminal-parameter 4) ;; (terminfo: smir) + (cond ((eq (car params) 4) ;; (terminfo: smir) (setq term-insert-mode t)) - ;; ((eq term-terminal-parameter 47) ;; (terminfo: smcup) + ;; ((eq (car params) 47) ;; (terminfo: smcup) ;; (term-switch-to-alternate-sub-buffer t)) )) ;; \E[?l - DEC Private Mode Reset ((eq char ?l) - (cond ((eq term-terminal-parameter 4) ;; (terminfo: rmir) + (cond ((eq (car params) 4) ;; (terminfo: rmir) (setq term-insert-mode nil)) - ;; ((eq term-terminal-parameter 47) ;; (terminfo: rmcup) + ;; ((eq (car params) 47) ;; (terminfo: rmcup) ;; (term-switch-to-alternate-sub-buffer nil)) )) @@ -3421,15 +3328,7 @@ option is enabled. See `term-set-goto-process-mark'." ;; \E[m - Set/reset modes, set bg/fg ;;(terminfo: smso,rmso,smul,rmul,rev,bold,sgr0,invis,op,setab,setaf) ((eq char ?m) - (when (= term-terminal-more-parameters 1) - (when (>= term-terminal-previous-parameter-4 0) - (term-handle-colors-array term-terminal-previous-parameter-4)) - (when (>= term-terminal-previous-parameter-3 0) - (term-handle-colors-array term-terminal-previous-parameter-3)) - (when (>= term-terminal-previous-parameter-2 0) - (term-handle-colors-array term-terminal-previous-parameter-2)) - (term-handle-colors-array term-terminal-previous-parameter)) - (term-handle-colors-array term-terminal-parameter)) + (mapc #'term-handle-colors-array params)) ;; \E[6n - Report cursor position (terminfo: u7) ((eq char ?n) @@ -3442,8 +3341,8 @@ option is enabled. See `term-set-goto-process-mark'." ;; \E[r - Set scrolling region (terminfo: csr) ((eq char ?r) (term-set-scroll-region - (1- term-terminal-previous-parameter) - (1- term-terminal-parameter))) + (1- (or (nth 0 params) 0)) + (1- (or (nth 1 params) 0)))) (t))) (defun term-set-scroll-region (top bottom) @@ -3631,7 +3530,7 @@ The top-most line is line 0." (defun term-pager-discard () (interactive) - (setq term-terminal-parameter "") + (setq term-terminal-undecoded-bytes "") (interrupt-process nil t) (term-pager-continue term-height)) @@ -3809,7 +3708,7 @@ all pending output has been dealt with.")) If KIND is 0, erase from (point) to (point-max); if KIND is 1, erase from home to point; else erase from home to point-max." (term-handle-deferred-scroll) - (cond ((eq term-terminal-parameter 0) + (cond ((eq kind 0) (let ((need-unwrap (bolp))) (delete-region (point) (point-max)) (when need-unwrap (term-unwrap-line)))) commit 256bd99a8bfae91a3c91ae20166af45918d1e986 Author: Glenn Morris Date: Thu Jan 18 20:22:53 2018 -0500 * admin/automerge: New script. diff --git a/admin/automerge b/admin/automerge new file mode 100755 index 0000000000..d96974ca56 --- /dev/null +++ b/admin/automerge @@ -0,0 +1,196 @@ +#!/bin/bash +### automerge - merge the Emacs release branch to master + +## Copyright (C) 2018 Free Software Foundation, Inc. + +## Author: Glenn Morris + +## This file is part of GNU Emacs. + +## GNU Emacs is free software: you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation, either version 3 of the License, or +## (at your option) any later version. + +## GNU Emacs is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with GNU Emacs. If not, see . + +### Commentary: + +## Automatically merge the Emacs release branch to master. +## No warranty, etc. + +die () # write error to stderr and exit +{ + [ $# -gt 0 ] && echo "$PN: $@" >&2 + exit 1 +} + +PN=${0##*/} # basename of script +PD=${0%/*} + +[ "$PD" = "$0" ] && PD=. # if PATH includes PWD + +## This should be the admin directory. +cd $PD +cd ../ +[ -d admin ] || die "Could not locate admin directory" + +[ -e .git ] || die "No .git" + +usage () +{ + cat 1>&2 < /dev/null + + +[ "$push" ] && test=1 +[ "$test" ] && build=1 + + +tempfile=/tmp/$PN.$$ + +trap "rm -f $tempfile 2> /dev/null" EXIT + + +[ -e Makefile ] && [ "$build" ] && { + echo "Cleaning..." + make maintainer-clean >& /dev/null +} + + +echo "Merging..." + +if $emacs --batch -Q -l ./admin/gitmerge.el \ + --eval "(setq gitmerge-minimum-missing $nmin)" -f gitmerge \ + >| $tempfile 2>&1; then + echo "merged ok" + +else + grep -qE "Nothing to merge|Number of missing commits" $tempfile && { + echo "Fewer than $nmin commits to merge" + exit 0 + } + + cat "$tempfile" 1>&2 + + die "merge error" +fi + + +[ "$build" ] || exit 0 + + +echo "Running autoreconf..." + +autoreconf -i -I m4 2>| $tempfile + +retval=$? + +## Annoyingly, autoreconf puts the "installing `./foo' messages on stderr. +if [ "$quiet" ]; then + grep -v 'installing `\.' $tempfile 1>&2 +else + cat "$tempfile" 1>&2 +fi + +[ $retval -ne 0 ] && die "autoreconf error" + + +echo "Running ./configure..." + +## Minimize required packages. +./configure --without-x || die "configure error" + + +echo "Building..." + +make "$@" || die "make error" + +echo "Build finished ok" + + +[ "$test" ] || exit 0 + + +echo "Testing..." + +make "$@" check || die "check error" + +echo "Tests finished ok" + + +[ "$push" ] || exit 0 + + +## In case someone else pushed while we were working. +echo "Checking for remote changes..." +git fetch || die "fetch error" +## git >= 1.8.5 has "pull --rebase=preserve" +git rebase --preserve-merges || die "rebase error" + + +echo "Pushing..." +git push || die "push error" + + +exit 0 + +### automerge ends here commit 6213ce554410213d5ffd3acb09ea2ebde8402281 Merge: 224fc14ab8 76040d1eae Author: Glenn Morris Date: Thu Jan 18 14:02:32 2018 -0800 Merge from origin/emacs-26 76040d1 (origin/emacs-26) Handle case-insensitive filenames for load-... 0c9b050 ; * test/file-organization.org: Fix typo. commit 224fc14ab8354a6b47bb15ec1c825edb71bc2500 Merge: d5b70d8330 36edb6cb97 Author: Glenn Morris Date: Thu Jan 18 14:02:32 2018 -0800 ; Merge from origin/emacs-26 The following commit was skipped: 36edb6c CC Mode: stop distinguishing brace blocks from defun blocks b... commit d5b70d8330b35d5a344d57dc98029c2786c10ce3 Merge: fa3934693e 779b2ac484 Author: Glenn Morris Date: Thu Jan 18 14:02:32 2018 -0800 Merge from origin/emacs-26 779b2ac Use recommended long options syntax in man page c433e87 An overdue update of GNUstep emacs.tiff 188a9d9 Add some test skip conditions commit fa3934693e786f979d1c6068ae2c0e300dd2c498 Merge: bb5aad717f 064395251f Author: Glenn Morris Date: Thu Jan 18 14:02:32 2018 -0800 ; Merge from origin/emacs-26 The following commit was skipped: 0643952 Add documentation to ecomplete.el commit bb5aad717f578f0c936b98d447ec41be57446d99 Merge: 97fc87a392 7efb366b20 Author: Glenn Morris Date: Thu Jan 18 14:02:32 2018 -0800 Merge from origin/emacs-26 7efb366 ; * etc/AUTHORS: Regenerate. 3dc7f68 * admin/authors.el (authors-aliases): Tighten more entries. 7428062 ; * lisp/vc/vc.el: Comment fixes. f4e6b6e Small startup fix for current-load-list 5b776bf ; * etc/AUTHORS: Regenerate. d80295c authors-aliases is based on regexps, not literals commit 97fc87a3924c8b51e90b7d359cc585cbfa972e58 Author: Stefan Monnier Date: Thu Jan 18 20:11:34 2018 -0500 * lisp/vc/vc-hg.el, lisp/vc/vc-git.el: Flush the 'vc-functions' cache. diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 626cf6165a..2d6ca1386a 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -183,6 +183,10 @@ Should be consistent with the Git config value i18n.logOutputEncoding." ;; History of Git commands. (defvar vc-git-history nil) +;; Clear up the cache to force vc-call to check again and discover +;; new functions when we reload this file. +(put 'Git 'vc-functions nil) + ;;; BACKEND PROPERTIES (defun vc-git-revision-granularity () 'repository) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 08b1be8f6d..ad817fd9b9 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -175,6 +175,10 @@ highlighting the Log View buffer." :version "24.5") +;; Clear up the cache to force vc-call to check again and discover +;; new functions when we reload this file. +(put 'Hg 'vc-functions nil) + ;;; Properties of the backend (defvar vc-hg-history nil) commit 5ec3853326933bef899de1a8fee66d902ea8f7c9 Author: Juri Linkov Date: Thu Jan 18 23:43:38 2018 +0200 Improve "*Process List*" and "*Local Variables*". (Bug#30016) * lisp/files.el (save-buffers-kill-emacs): Display "*Process List*" buffer at bottom. (hack-local-variables-confirm): Display "*Local Variables*" buffer at bottom. * lisp/simple.el (process-menu-mode): Increase buffer column width from 15 to 25. diff --git a/lisp/files.el b/lisp/files.el index 5b8dff7131..7194b56fef 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3315,7 +3315,15 @@ n -- to ignore the local variables list.") ;; Display the buffer and read a choice. (save-window-excursion - (pop-to-buffer buf) + (pop-to-buffer buf `((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-at-bottom) + ,(if temp-buffer-resize-mode + '(window-height . resize-temp-buffer-window) + '(window-height . fit-window-to-buffer)) + ,(when temp-buffer-resize-mode + '(preserve-size . (nil . t))))) (let* ((exit-chars '(?y ?n ?\s ?\C-g ?\C-v)) (prompt (format "Please type %s%s: " (if offer-save "y, n, or !" "y or n") @@ -6917,8 +6925,17 @@ if any returns nil. If `confirm-kill-emacs' is non-nil, calls it." (setq active t)) (setq processes (cdr processes))) (or (not active) - (with-current-buffer-window - (get-buffer-create "*Process List*") nil + (with-displayed-buffer-window + (get-buffer-create "*Process List*") + `((display-buffer--maybe-same-window + display-buffer-reuse-window + display-buffer--maybe-pop-up-frame-or-window + display-buffer-at-bottom) + ,(if temp-buffer-resize-mode + '(window-height . resize-temp-buffer-window) + '(window-height . fit-window-to-buffer)) + ,(when temp-buffer-resize-mode + '(preserve-size . (nil . t)))) #'(lambda (window _value) (with-selected-window window (unwind-protect diff --git a/lisp/simple.el b/lisp/simple.el index 87e0b23377..e51bc132a6 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3927,7 +3927,9 @@ support pty association, if PROGRAM is nil." (setq tabulated-list-format [("Process" 15 t) ("PID" 7 t) ("Status" 7 t) - ("Buffer" 15 t) + ;; 25 is the length of the long standard buffer + ;; name "*Async Shell Command*<10>" (bug#30016) + ("Buffer" 25 t) ("TTY" 12 t) ("Command" 0 t)]) (make-local-variable 'process-menu-query-only) commit 76040d1eae4464b468481231c15e7fb86f4b11d8 Author: Noam Postavsky Date: Tue Jan 16 16:26:56 2018 -0500 Handle case-insensitive filenames for load-path shadows (Bug#5845) * lisp/emacs-lisp/shadow.el (load-path-shadows-find): Check for shadowing with case-insensitive matching for files of case-insensitive directories (as determined by `file-name-case-insensitive-p'). * test/lisp/emacs-lisp/shadow-tests.el: New test. * test/lisp/emacs-lisp/shadow-resources/p1/foo.el: * test/lisp/emacs-lisp/shadow-resources/p2/FOO.el: New test files. diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el index 88a494fdd4..1788f0d71f 100644 --- a/lisp/emacs-lisp/shadow.el +++ b/lisp/emacs-lisp/shadow.el @@ -78,6 +78,7 @@ See the documentation for `list-load-path-shadows' for further information." shadows ; List of shadowings, to be returned. files ; File names ever seen, with dirs. dir ; The dir being currently scanned. + dir-case-insensitive ; `file-name-case-insentive-p' for dir. curr-files ; This dir's Emacs Lisp files. orig-dir ; Where the file was first seen. files-seen-this-dir ; Files seen so far in this dir. @@ -104,6 +105,9 @@ See the documentation for `list-load-path-shadows' for further information." (message "Checking %d files in %s..." (length curr-files) dir)) (setq files-seen-this-dir nil) + ;; We assume that case sensitivity of a directory applies to + ;; its files. + (setq dir-case-insensitive (file-name-case-insensitive-p dir)) (dolist (file curr-files) @@ -123,10 +127,12 @@ See the documentation for `list-load-path-shadows' for further information." ;; XXX.elc (or vice-versa) when they are in the same directory. (setq files-seen-this-dir (cons file files-seen-this-dir)) - (if (setq orig-dir (assoc file files)) + (if (setq orig-dir (assoc file files + (when dir-case-insensitive + (lambda (f1 f2) (eq (compare-strings f1 nil nil f2 nil nil t) t))))) ;; This file was seen before, we have a shadowing. ;; Report it unless the files are identical. - (let ((base1 (concat (cdr orig-dir) "/" file)) + (let ((base1 (concat (cdr orig-dir) "/" (car orig-dir))) (base2 (concat dir "/" file))) (if (not (and load-path-shadows-compare-text (load-path-shadows-same-file-or-nonexistent diff --git a/test/lisp/emacs-lisp/shadow-resources/p1/foo.el b/test/lisp/emacs-lisp/shadow-resources/p1/foo.el new file mode 100644 index 0000000000..465038bee5 --- /dev/null +++ b/test/lisp/emacs-lisp/shadow-resources/p1/foo.el @@ -0,0 +1 @@ +;;; This file intentionally left blank. diff --git a/test/lisp/emacs-lisp/shadow-resources/p2/FOO.el b/test/lisp/emacs-lisp/shadow-resources/p2/FOO.el new file mode 100644 index 0000000000..465038bee5 --- /dev/null +++ b/test/lisp/emacs-lisp/shadow-resources/p2/FOO.el @@ -0,0 +1 @@ +;;; This file intentionally left blank. diff --git a/test/lisp/emacs-lisp/shadow-tests.el b/test/lisp/emacs-lisp/shadow-tests.el new file mode 100644 index 0000000000..9d4969fe8b --- /dev/null +++ b/test/lisp/emacs-lisp/shadow-tests.el @@ -0,0 +1,49 @@ +;;; shadow-tests.el --- Test suite for shadow. -*- lexical-binding: t -*- + +;; Copyright (C) 2018 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Code: + +(require 'ert) +(require 'shadow) +(eval-when-compile (require 'cl-lib)) + +(defconst shadow-tests-data-directory + (expand-file-name "lisp/emacs-lisp/shadow-resources" + (or (getenv "EMACS_TEST_DIRECTORY") + (expand-file-name "../../.." + (or load-file-name + buffer-file-name)))) + "Directory for shadow test files.") + +(ert-deftest shadow-case-insensitive () + "Test shadowing for case insensitive filenames." + ;; Override `file-name-case-insentive-p' so we test the same thing + ;; regardless of what file system we're running on. + (cl-letf (((symbol-function 'file-name-case-insensitive-p) (lambda (_f) t))) + (should (equal (list (expand-file-name "p1/foo" shadow-tests-data-directory) + (expand-file-name "p2/FOO" shadow-tests-data-directory)) + (load-path-shadows-find + (list (expand-file-name "p1/" shadow-tests-data-directory) + (expand-file-name "p2/" shadow-tests-data-directory)))))) + (cl-letf (((symbol-function 'file-name-case-insensitive-p) (lambda (_f) nil))) + (should-not (load-path-shadows-find + (list (expand-file-name "p1/" shadow-tests-data-directory) + (expand-file-name "p2/" shadow-tests-data-directory)))))) + +;;; shadow-tests.el ends here. commit 0c9b05003f40566145aa2070f07c70e70f36e8a0 Author: Noam Postavsky Date: Thu Jan 18 15:54:21 2018 -0500 ; * test/file-organization.org: Fix typo. diff --git a/test/file-organization.org b/test/file-organization.org index 6c93c28c8e..34bd0b90e0 100644 --- a/test/file-organization.org +++ b/test/file-organization.org @@ -55,5 +55,5 @@ located in the same directory as the feature. Hence, the lisp file directory called ~test/lisp/progmodes/flymake-resources~. No guidance is given for the organization of resource files inside the -~-resource~ directory; files can be organized at the author's +~-resources~ directory; files can be organized at the author's discretion. commit 694ee38f8b7bd10f1d0eae8cb251daea70b5c820 Author: Philipp Stephani Date: Wed Jan 17 23:28:46 2018 +0100 Fix module support if threads are disabled (Bug#30106) * src/systhread.c (sys_thread_equal): New function. * src/thread.c (in_current_thread): Move from emacs-module.c; use sys_thread_equal. diff --git a/src/emacs-module.c b/src/emacs-module.c index 4ee4014b4e..3a85421e83 100644 --- a/src/emacs-module.c +++ b/src/emacs-module.c @@ -805,18 +805,6 @@ module_function_arity (const struct Lisp_Module_Function *const function) /* Helper functions. */ -static bool -in_current_thread (void) -{ - if (current_thread == NULL) - return false; -#ifdef HAVE_PTHREAD - return pthread_equal (pthread_self (), current_thread->thread_id); -#elif defined WINDOWSNT - return GetCurrentThreadId () == current_thread->thread_id; -#endif -} - static void module_assert_thread (void) { diff --git a/src/systhread.c b/src/systhread.c index 4ffb7db143..3f162a2bcb 100644 --- a/src/systhread.c +++ b/src/systhread.c @@ -74,6 +74,12 @@ sys_thread_self (void) return 0; } +bool +sys_thread_equal (sys_thread_t t, sys_thread_t u) +{ + return t == u; +} + int sys_thread_create (sys_thread_t *t, const char *name, thread_creation_function *func, void *datum) @@ -155,6 +161,12 @@ sys_thread_self (void) return pthread_self (); } +bool +sys_thread_equal (sys_thread_t t, sys_thread_t u) +{ + return pthread_equal (t, u); +} + int sys_thread_create (sys_thread_t *thread_ptr, const char *name, thread_creation_function *func, void *arg) @@ -323,6 +335,12 @@ sys_thread_self (void) return (sys_thread_t) GetCurrentThreadId (); } +bool +sys_thread_equal (sys_thread_t t, sys_thread_t u) +{ + return t == u; +} + static thread_creation_function *thread_start_address; /* _beginthread wants a void function, while we are passed a function diff --git a/src/systhread.h b/src/systhread.h index 4745d22065..5dbb12dffb 100644 --- a/src/systhread.h +++ b/src/systhread.h @@ -100,6 +100,7 @@ extern void sys_cond_broadcast (sys_cond_t *); extern void sys_cond_destroy (sys_cond_t *); extern sys_thread_t sys_thread_self (void); +extern bool sys_thread_equal (sys_thread_t, sys_thread_t); extern int sys_thread_create (sys_thread_t *, const char *, thread_creation_function *, diff --git a/src/thread.c b/src/thread.c index 60902b252b..f11e3e5add 100644 --- a/src/thread.c +++ b/src/thread.c @@ -1022,6 +1022,14 @@ main_thread_p (void *ptr) return ptr == &main_thread; } +bool +in_current_thread (void) +{ + if (current_thread == NULL) + return false; + return sys_thread_equal (sys_thread_self (), current_thread->thread_id); +} + void init_threads_once (void) { diff --git a/src/thread.h b/src/thread.h index 5746512b79..5ab5e90c70 100644 --- a/src/thread.h +++ b/src/thread.h @@ -303,6 +303,7 @@ extern void init_threads_once (void); extern void init_threads (void); extern void syms_of_threads (void); extern bool main_thread_p (void *); +extern bool in_current_thread (void); typedef int select_func (int, fd_set *, fd_set *, fd_set *, const struct timespec *, const sigset_t *); commit 36edb6cb97ce3d53543c87643077d270bb5bdfd1 Author: Alan Mackenzie Date: Thu Jan 18 17:54:02 2018 +0000 CC Mode: stop distinguishing brace blocks from defun blocks by content. Don't merge to master; this is a quick fix for the emacs-26 branch. This is essentially a reversion of the patch from 2017-11-10 which attempted to handle C99's compound literals. The bug here was triggered when a defun block contained a declaration ending in a comma, yet without a semicolon. * lisp/progmodes/cc-engine.el (c-guess-basic-syntax): At the CASE 9 test, remove from the `or' form the test of a block's contents. diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index e997260281..ed8dc6de23 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -12554,11 +12554,7 @@ comment at the start of cc-engine.el for more info." (save-excursion (goto-char containing-sexp) (c-looking-at-special-brace-list))) - (c-inside-bracelist-p containing-sexp paren-state t) - (save-excursion - (goto-char containing-sexp) - (and (eq (char-after) ?{) - (not (c-looking-at-statement-block))))))) + (c-inside-bracelist-p containing-sexp paren-state t)))) (cond ;; CASE 9A: In the middle of a special brace list opener. commit ebc1eea87b1309544ccb1a8a3ce53698cc2355d6 Author: Michael Albinus Date: Thu Jan 18 15:19:47 2018 +0100 * doc/misc/message.texi (Mail Aliases): Mention also down and up keys. diff --git a/doc/misc/message.texi b/doc/misc/message.texi index 0d5f85f3dc..1ef67fe0cb 100644 --- a/doc/misc/message.texi +++ b/doc/misc/message.texi @@ -1482,8 +1482,9 @@ If you're using @code{ecomplete}, all addresses from @code{To} and @code{Cc} headers, @code{ecomplete} will check out the values stored there and ``electrically'' say what completions are possible. To choose one of these completions, use the @kbd{M-n} command to move -down to the list. Use @kbd{M-n} and @kbd{M-p} to move down and up the -list, and @kbd{RET} to choose a completion. +down to the list. Use @kbd{@key{DOWN}} or @kbd{M-n} and +@kbd{@key{UP}} or @kbd{M-p} to move down and up the list, and +@kbd{@key{RET}} to choose a completion. The @code{ecomplete-sort-predicate} variable controls how @code{ecomplete} matches are sorted. commit 70a4f9ee21820381ead2bfe5f68e6cbf1e1e2dfe Author: Lars Ingebrigtsen Date: Thu Jan 18 12:16:23 2018 +0100 Bind up/down in ecomplete * lisp/ecomplete.el (ecomplete-display-matches): Allow using up/down in addition to M-p/M-n. diff --git a/lisp/ecomplete.el b/lisp/ecomplete.el index 2197d9512d..3f0d21c230 100644 --- a/lisp/ecomplete.el +++ b/lisp/ecomplete.el @@ -168,13 +168,15 @@ matches." nil) (setq highlight (ecomplete-highlight-match-line matches line)) (let ((local-map (make-sparse-keymap)) + (prev-func (lambda () (setq line (max (1- line) 0)))) + (next-func (lambda () (setq line (min (1+ line) max-lines)))) selected) (define-key local-map (kbd "RET") (lambda () (setq selected (nth line (split-string matches "\n"))))) - (define-key local-map (kbd "M-n") - (lambda () (setq line (min (1+ line) max-lines)))) - (define-key local-map (kbd "M-p") - (lambda () (setq line (max (1- line) 0)))) + (define-key local-map (kbd "M-n") next-func) + (define-key local-map (kbd "") next-func) + (define-key local-map (kbd "M-p") prev-func) + (define-key local-map (kbd "") prev-func) (let ((overriding-local-map local-map)) (while (and (null selected) (setq command (read-key-sequence highlight)) commit 779b2ac48423ae72a8cb5cd789a2a25302d857d9 Author: Philipp Stephani Date: Mon Jan 8 00:11:16 2018 +0100 Use recommended long options syntax in man page * doc/man/emacs.1.in: Specify equals sign for long options, as recommended in the manual. diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index 7654c9610d..5116953041 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -61,7 +61,7 @@ The following options are of general interest: Edit .IR file . .TP -.BI \-\-file " file\fR,\fP " \-\-find-file " file\fR,\fP " \-\-visit " file" +.BI \-\-file= "file\fR,\fP " \-\-find-file= "file\fR,\fP " \-\-visit= "file" The same as specifying .I file directly as an argument. @@ -79,7 +79,7 @@ Go to the specified and .IR column . .TP -.BI \-\-chdir " directory" +.BI \-\-chdir= "directory" Change to .IR directory . .TP @@ -112,12 +112,12 @@ Lisp debugger during the processing of the user init file .BR ~/.emacs . This is useful for debugging problems in the init file. .TP -.BI \-u " user\fR,\fP " \-\-user " user" +.BI \-u " user\fR,\fP " \-\-user= "user" Load .IR user 's init file. .TP -.BI \-t " file\fR,\fP " \-\-terminal " file" +.BI \-t " file\fR,\fP " \-\-terminal= "file" Use specified .I file as the terminal instead of using stdin/stdout. @@ -144,15 +144,15 @@ The following options are Lisp-oriented (these options are processed in the order encountered): .RS .TP 8 -.BI \-f " function\fR,\fP " \-\-funcall " function" +.BI \-f " function\fR,\fP " \-\-funcall= "function" Execute the lisp function .IR function . .TP -.BI \-l " file\fR,\fP " \-\-load " file" +.BI \-l " file\fR,\fP " \-\-load= "file" Load the lisp code in the file .IR file . .TP -.BI \-\-eval " expr\fR,\fP " \-\-execute " expr" +.BI \-\-eval= "expr\fR,\fP " \-\-execute= "expr" Evaluate the Lisp expression .IR expr . .RE @@ -168,12 +168,12 @@ The editor will send messages to stderr. You must use \-l and \-f options to specify files to execute and functions to call. .TP -.BI \-\-script " file" +.BI \-\-script= "file" Run .I file as an Emacs Lisp script. .TP -.BI \-\-insert " file" +.BI \-\-insert= "file" Insert contents of .I file into the current buffer. @@ -183,7 +183,7 @@ Exit .I Emacs while in batch mode. .TP -.BI \-L " dir\fR,\fP " \-\-directory " dir" +.BI \-L " dir\fR,\fP " \-\-directory= "dir" Add .I dir to the list of directories @@ -206,13 +206,13 @@ process so that you can continue using your original window. can be started with the following X switches: .RS .TP 8 -.BI \-\-name " name" +.BI \-\-name= "name" Specify the name which should be assigned to the initial .I Emacs window. This controls looking up X resources as well as the window title. .TP -.BI \-T " name\fR,\fP " \-\-title " name" +.BI \-T " name\fR,\fP " \-\-title= "name" Specify the title for the initial X window. .TP .BR \-r ", " \-rv ", " \-\-reverse\-video @@ -220,7 +220,7 @@ Display the .I Emacs window in reverse video. .TP -.BI \-fn " font\fR,\fP " \-\-font " font" +.BI \-fn " font\fR,\fP " \-\-font= "font" Set the .I Emacs window's font to that specified by @@ -247,7 +247,7 @@ for more information. When you specify a font, be sure to put a space between the switch and the font name. .TP -.BI \-\-xrm " resources" +.BI \-\-xrm= "resources" Set additional X resources. .TP .BI "\-\-color\fR,\fP \-\-color=" mode @@ -256,20 +256,20 @@ Override color mode for character terminals; defaults to "auto", and can also be "never", "auto", "always", or a mode name like "ansi8". .TP -.BI \-bw " pixels\fR,\fP " \-\-border\-width " pixels" +.BI \-bw " pixels\fR,\fP " \-\-border\-width= "pixels" Set the .I Emacs window's border width to the number of pixels specified by .IR pixels . Defaults to one pixel on each side of the window. .TP -.BI \-ib " pixels\fR,\fP " \-\-internal\-border " pixels" +.BI \-ib " pixels\fR,\fP " \-\-internal\-border= "pixels" Set the window's internal border width to the number of pixels specified by .IR pixels . Defaults to one pixel of padding on each side of the window. .TP -.BI \-g " geometry\fR,\fP " \-\-geometry " geometry" +.BI \-g " geometry\fR,\fP " \-\-geometry= "geometry" Set the .I Emacs window's width, height, and position as specified. @@ -282,7 +282,7 @@ See the Emacs manual, section "Options for Window Size and Position", for information on how window sizes interact with selecting or deselecting the tool bar and menu bar. .TP -.BI \-lsp " pixels\fR,\fP " \-\-line\-spacing " pixels" +.BI \-lsp " pixels\fR,\fP " \-\-line\-spacing= "pixels" Additional space to put between lines. .TP .BR \-vb ", " \-\-vertical\-scroll\-bars @@ -300,26 +300,26 @@ Make the first frame as wide as the screen. .BR \-mm ", " \-\-maximized Maximize the first frame, like "\-fw \-fh". .TP -.BI \-fg " color\fR,\fP " \-\-foreground\-color " color" +.BI \-fg " color\fR,\fP " \-\-foreground\-color= "color" On color displays, set the color of the text. Use the command .I M\-x list\-colors\-display for a list of valid color names. .TP -.BI \-bg " color\fR,\fP " \-\-background\-color " color" +.BI \-bg " color\fR,\fP " \-\-background\-color= "color" On color displays, set the color of the window's background. .TP -.BI \-bd " color\fR,\fP " \-\-border\-color " color" +.BI \-bd " color\fR,\fP " \-\-border\-color= "color" On color displays, set the color of the window's border. .TP -.BI \-cr " color\fR,\fP " \-\-cursor\-color " color" +.BI \-cr " color\fR,\fP " \-\-cursor\-color= "color" On color displays, set the color of the window's text cursor. .TP -.BI \-ms " color\fR,\fP " \-\-mouse\-color " color" +.BI \-ms " color\fR,\fP " \-\-mouse\-color= "color" On color displays, set the color of the window's mouse cursor. .TP -.BI \-d " displayname\fR,\fP " \-\-display " displayname" +.BI \-d " displayname\fR,\fP " \-\-display= "displayname" Create the .I Emacs window on the display specified by @@ -337,7 +337,7 @@ in iconified state. .BR \-nbc ", " \-\-no\-blinking\-cursor Disable blinking cursor. .TP -.BI \-\-parent-id " xid" +.BI \-\-parent-id= "xid" Set parent window. .TP .BR \-nw ", " \-\-no\-window\-system commit c433e873cfc9e064cfe1088c2e7b2a2a39d4bd46 Author: Glenn Morris Date: Wed Jan 17 15:13:40 2018 -0500 An overdue update of GNUstep emacs.tiff * nextstep/GNUstep/Emacs.base/Resources/emacs.tiff: Update to the Emacs 25 icon. Converted from hicolor/scalable/apps/emacs.svg using Gimp. * nextstep/GNUstep/Emacs.base/Resources/README: Update. diff --git a/nextstep/GNUstep/Emacs.base/Resources/README b/nextstep/GNUstep/Emacs.base/Resources/README index 6b1e94bde6..4f80e00ace 100644 --- a/nextstep/GNUstep/Emacs.base/Resources/README +++ b/nextstep/GNUstep/Emacs.base/Resources/README @@ -1,5 +1,6 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: emacs.tiff - This is a version of the Emacs 23 icon (see etc/images/icons/README) - by Kentaro Ohkouchi . + Automatically converted from the Emacs 25 icon + etc/images/icons/hicolor/scalable/apps/emacs.svg + and subject to the same conditions. diff --git a/nextstep/GNUstep/Emacs.base/Resources/emacs.tiff b/nextstep/GNUstep/Emacs.base/Resources/emacs.tiff index 42e89cedc0..29381adbde 100644 Binary files a/nextstep/GNUstep/Emacs.base/Resources/emacs.tiff and b/nextstep/GNUstep/Emacs.base/Resources/emacs.tiff differ commit 188a9d99b8246e756aa2701bfdc9a8db57ce64c6 Author: Glenn Morris Date: Wed Jan 17 13:41:07 2018 -0500 Add some test skip conditions * test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-bug9726) (vc-bzr-test-bug9781): Skip if bzr is faulty. * test/src/thread-tests.el: Skip if not compiled with threads. diff --git a/test/lisp/vc/vc-bzr-tests.el b/test/lisp/vc/vc-bzr-tests.el index b3fbf33df6..6b96f3b928 100644 --- a/test/lisp/vc/vc-bzr-tests.el +++ b/test/lisp/vc/vc-bzr-tests.el @@ -53,7 +53,8 @@ (insert (file-name-nondirectory ignored-dir)) (write-region nil nil (expand-file-name ".bzrignore" bzrdir) nil 'silent)) - (call-process vc-bzr-program nil nil nil "init") + (skip-unless (eq 0 ; some internal bzr error + (call-process vc-bzr-program nil nil nil "init"))) (call-process vc-bzr-program nil nil nil "add") (call-process vc-bzr-program nil nil nil "commit" "-m" "Commit 1") (with-temp-buffer @@ -84,7 +85,8 @@ process-environment))) (unwind-protect (progn - (call-process vc-bzr-program nil nil nil "init") + (skip-unless (eq 0 ; some internal bzr error + (call-process vc-bzr-program nil nil nil "init"))) (make-directory subdir) (with-temp-buffer (insert "text") diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index 244a51621b..0e909d3e51 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el @@ -20,29 +20,35 @@ ;;; Code: (ert-deftest threads-is-one () - "test for existence of a thread" + "Test for existence of a thread." + (skip-unless (fboundp 'make-thread)) (should (current-thread))) (ert-deftest threads-threadp () - "test of threadp" + "Test of threadp." + (skip-unless (fboundp 'make-thread)) (should (threadp (current-thread)))) (ert-deftest threads-type () - "test of thread type" + "Test of thread type." + (skip-unless (fboundp 'make-thread)) (should (eq (type-of (current-thread)) 'thread))) (ert-deftest threads-name () - "test for name of a thread" + "Test for name of a thread." + (skip-unless (fboundp 'make-thread)) (should (string= "hi bob" (thread-name (make-thread #'ignore "hi bob"))))) (ert-deftest threads-alive () - "test for thread liveness" + "Test for thread liveness." + (skip-unless (fboundp 'make-thread)) (should (thread-alive-p (make-thread #'ignore)))) (ert-deftest threads-all-threads () - "simple test for all-threads" + "Simple test for all-threads." + (skip-unless (fboundp 'make-thread)) (should (listp (all-threads)))) (defvar threads-test-global nil) @@ -51,7 +57,8 @@ (setq threads-test-global 23)) (ert-deftest threads-basic () - "basic thread test" + "Basic thread test." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-test-global nil) @@ -61,7 +68,8 @@ threads-test-global))) (ert-deftest threads-join () - "test of thread-join" + "Test of `thread-join'." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-test-global nil) @@ -71,7 +79,8 @@ (not (thread-alive-p thread))))))) (ert-deftest threads-join-self () - "cannot thread-join the current thread" + "Cannot `thread-join' the current thread." + (skip-unless (fboundp 'make-thread)) (should-error (thread-join (current-thread)))) (defvar threads-test-binding nil) @@ -82,7 +91,8 @@ (setq threads-test-global 23)) (ert-deftest threads-let-binding () - "simple test of threads and let bindings" + "Simple test of threads and let bindings." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-test-global nil) @@ -93,19 +103,23 @@ threads-test-global)))) (ert-deftest threads-mutexp () - "simple test of mutexp" + "Simple test of `mutexp'." + (skip-unless (fboundp 'make-thread)) (should-not (mutexp 'hi))) (ert-deftest threads-mutexp-2 () - "another simple test of mutexp" + "Another simple test of `mutexp'." + (skip-unless (fboundp 'make-thread)) (should (mutexp (make-mutex)))) (ert-deftest threads-mutex-type () - "type-of mutex" + "type-of mutex." + (skip-unless (fboundp 'make-thread)) (should (eq (type-of (make-mutex)) 'mutex))) (ert-deftest threads-mutex-lock-unlock () - "test mutex-lock and unlock" + "Test mutex-lock and unlock." + (skip-unless (fboundp 'make-thread)) (should (let ((mx (make-mutex))) (mutex-lock mx) @@ -113,7 +127,8 @@ t))) (ert-deftest threads-mutex-recursive () - "test mutex-lock and unlock" + "Test mutex recursion." + (skip-unless (fboundp 'make-thread)) (should (let ((mx (make-mutex))) (mutex-lock mx) @@ -133,7 +148,8 @@ (mutex-unlock threads-mutex)) (ert-deftest threads-mutex-contention () - "test of mutex contention" + "Test of mutex contention." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-mutex (make-mutex)) @@ -153,7 +169,8 @@ (mutex-lock threads-mutex)) (ert-deftest threads-mutex-signal () - "test signaling a blocked thread" + "Test signaling a blocked thread." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-mutex (make-mutex)) @@ -170,7 +187,8 @@ (setq threads-test-global 23)) (ert-deftest threads-io-switch () - "test that accept-process-output causes thread switch" + "Test that `accept-process-output' causes thread switch." + (skip-unless (fboundp 'make-thread)) (should (progn (setq threads-test-global nil) @@ -180,31 +198,37 @@ threads-test-global))) (ert-deftest threads-condvarp () - "simple test of condition-variable-p" + "Simple test of `condition-variable-p'." + (skip-unless (fboundp 'make-thread)) (should-not (condition-variable-p 'hi))) (ert-deftest threads-condvarp-2 () - "another simple test of condition-variable-p" + "Another simple test of `condition-variable-p'." + (skip-unless (fboundp 'make-thread)) (should (condition-variable-p (make-condition-variable (make-mutex))))) (ert-deftest threads-condvar-type () "type-of condvar" + (skip-unless (fboundp 'make-thread)) (should (eq (type-of (make-condition-variable (make-mutex))) 'condition-variable))) (ert-deftest threads-condvar-mutex () - "simple test of condition-mutex" + "Simple test of `condition-mutex'." + (skip-unless (fboundp 'make-thread)) (should (let ((m (make-mutex))) (eq m (condition-mutex (make-condition-variable m)))))) (ert-deftest threads-condvar-name () - "simple test of condition-name" + "Simple test of `condition-name'." + (skip-unless (fboundp 'make-thread)) (should (eq nil (condition-name (make-condition-variable (make-mutex)))))) (ert-deftest threads-condvar-name-2 () - "another simple test of condition-name" + "Another simple test of `condition-name'." + (skip-unless (fboundp 'make-thread)) (should (string= "hi bob" (condition-name (make-condition-variable (make-mutex) @@ -222,6 +246,7 @@ (ert-deftest thread-errors () "Test what happens when a thread signals an error." + (skip-unless (fboundp 'make-thread)) (let (th1 th2) (setq th1 (make-thread #'call-error "call-error")) (should (threadp th1)) @@ -234,6 +259,7 @@ (ert-deftest thread-sticky-point () "Test bug #25165 with point movement in cloned buffer." + (skip-unless (fboundp 'make-thread)) (with-temp-buffer (insert "Lorem ipsum dolor sit amet, consectetur adipiscing elit.") (goto-char (point-min)) @@ -244,6 +270,7 @@ (ert-deftest thread-signal-early () "Test signaling a thread as soon as it is started by the OS." + (skip-unless (fboundp 'make-thread)) (let ((thread (make-thread #'(lambda () (while t (thread-yield)))))) @@ -263,7 +290,8 @@ (condition-wait threads-condvar))) (ert-deftest threads-condvar-wait () - "test waiting on conditional variable" + "Test waiting on conditional variable." + (skip-unless (fboundp 'make-thread)) (let ((cv-mutex (make-mutex)) new-thread) ;; We could have spurious threads from the previous tests still commit 064395251f99eb85161ca7c8e36665e2bd0453f5 Author: Lars Ingebrigtsen Date: Tue Jan 16 14:53:11 2018 +0100 Add documentation to ecomplete.el * lisp/ecomplete.el: Add doc strings and document the format. diff --git a/lisp/ecomplete.el b/lisp/ecomplete.el index 87052e34e8..43ab8e691e 100644 --- a/lisp/ecomplete.el +++ b/lisp/ecomplete.el @@ -22,6 +22,35 @@ ;;; Commentary: +;; ecomplete stores matches in a file that looks like this: +;; +;; ((mail +;; ("larsi@gnus.org" 38154 1516109510 "Lars Ingebrigtsen ") +;; ("kfogel@red-bean.com" 10 1516065455 "Karl Fogel ") +;; ... +;; )) +;; +;; That is, it's an alist map where the key is the "type" of match (so +;; that you can have one list of things for `mail' and one for, say, +;; `twitter'). In each of these sections you then have a list where +;; each item is on the form +;; +;; (KEY TIMES-USED LAST-TIME-USED STRING) +;; +;; If you call `ecomplete-display-matches', it will then display all +;; items that match STRING. KEY is unique and is used to identify the +;; item, and is used for updates. For instance, if given the above +;; data, you call +;; +;; (ecomplete-add-item "larsi@gnus.org" 'mail "Lars Magne Ingebrigtsen ") +;; +;; the "larsi@gnus.org" entry will then be updated with that new STRING. + +;; The interface functions are `ecomplete-add-item' and +;; `ecomplete-display-matches', while `ecomplete-setup' should be +;; called to read the .ecompleterc file, and `ecomplete-save' are +;; called to save the file. + ;;; Code: (eval-when-compile @@ -47,6 +76,7 @@ ;;;###autoload (defun ecomplete-setup () + "Read the .ecompleterc file." (when (file-exists-p ecomplete-database-file) (with-temp-buffer (let ((coding-system-for-read ecomplete-database-file-coding-system)) @@ -54,6 +84,7 @@ (setq ecomplete-database (read (current-buffer))))))) (defun ecomplete-add-item (type key text) + "Add item TEXT of TYPE to the database, using KEY as the identifier." (let ((elems (assq type ecomplete-database)) (now (string-to-number (format-time-string "%s"))) entry) @@ -64,9 +95,11 @@ (nconc elems (list (list key 1 now text)))))) (defun ecomplete-get-item (type key) + "Return the text for the item identified by KEY of the required TYPE." (assoc key (cdr (assq type ecomplete-database)))) (defun ecomplete-save () + "Write the .ecompleterc file." (with-temp-buffer (let ((coding-system-for-write ecomplete-database-file-coding-system)) (insert "(") @@ -105,6 +138,9 @@ (buffer-string))))) (defun ecomplete-display-matches (type word &optional choose) + "Display the top-rated elements TYPE that match WORD. +If CHOOSE, allow the user to choose interactively between the +matches." (let* ((matches (ecomplete-get-matches type word)) (line 0) (max-lines (when matches (- (length (split-string matches "\n")) 2))) commit 7efb366b20715682efe72dd35fb05a6338a0ddc1 Author: Glenn Morris Date: Tue Jan 16 21:34:23 2018 -0500 ; * etc/AUTHORS: Regenerate. diff --git a/etc/AUTHORS b/etc/AUTHORS index 317f21e37f..9d238fb807 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -2816,6 +2816,8 @@ Lambda Coder: changed tramp.texi Lara Rios: co-wrote cal-menu.el +Lars Balker Rasmussen: changed gnus-art.el gnus-agent.el message.el + Lars Brinkhoff: changed records.texi fns.c lread.c data.c elisp.texi lisp.h objects.texi print.c alloc-colors.c alloc-tests.el alloc.c building.texi chartab.c cl-extra.el cl-generic.el cl-lib-tests.el @@ -2855,6 +2857,8 @@ and changed gnus.texi process.c gnus-ems.el subr.el gnutls.c gnus-cite.el simple.el auth-source.el image.c proto-stream.el gnutls.el dired.el image.el text.texi nnrss.el and 322 other files +Lars Rasmusson: changed ebrowse.c + Lasse Rasinen: changed gnus-start.el Laurent Martelli: changed mm-decode.el @@ -3991,9 +3995,8 @@ Randal Schwartz: wrote pp.el Ransom Williams: changed files.el -Rasmus Pank Roulund: changed ox-latex.el gnus-art.el - gnus-notifications.el org.el ange-ftp.el ebrowse.c gnus-agent.el - gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el message.el +Rasmus Pank Roulund: changed ox-latex.el gnus-notifications.el org.el + ange-ftp.el gnus-fun.el gnus-icalendar.el gnus-sum.el gnus.texi ido.el message.texi ob-C.el org-entities.el org-src.el org.texi ox-html.el ox.el vc-git.el commit 3dc7f684c694e1fdcb509e1181537b6a4f0a4f2f Author: Glenn Morris Date: Tue Jan 16 21:32:13 2018 -0500 * admin/authors.el (authors-aliases): Tighten more entries. diff --git a/admin/authors.el b/admin/authors.el index 95fde33c29..25871abe95 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -155,10 +155,10 @@ files.") ("Philipp Stephani" "Philipp .*phst@google") ("Piotr Zieliński" "Piotr Zielinski") ("Przemysław Wojnowski" "Przemyslaw Wojnowski") - ("R. Bernstein" "rocky") + ("R. Bernstein" "rb@dustyfeet.com") ("Rainer Schöpf" "Rainer Schoepf") ("Raja R. Harinath" "Raja R Harinath") - ("Rasmus Pank Roulund" "Rasmus") + ("Rasmus Pank Roulund" "Rasmus .*rasmus@gmx") ("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski") ("Richard King" "Dick King") ("Richard M. Stallman" "Richard Stallman" "rms@gnu.org") @@ -175,7 +175,7 @@ files.") ("Satyaki Das" "Indexed search by Satyaki Das") ("Sébastien Vauban" "Sebastien Vauban") ("Sergey Litvinov" "Litvinov Sergey") - ("Simen Heggestøyl" "Simen") + ("Simen Heggestøyl" "simenheg@gmail.com") (nil "prime.wizard") ("Shun-ichi Goto" "Shun-ichi GOTO") ;; There are other Stefans. commit 74280624b9b2b964f2b98a00af7aa6a55e7cdf9f Author: Glenn Morris Date: Tue Jan 16 20:56:28 2018 -0500 ; * lisp/vc/vc.el: Comment fixes. diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index f8d63d1498..6516c91de3 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -63,15 +63,15 @@ ;; ;; When using SCCS, RCS, CVS: be careful not to do repo surgery, or ;; operations like registrations and deletions and renames, outside VC -;; while VC is running. The support for these systems was designed +;; while VC is running. The support for these systems was designed ;; when disks were much slower, and the code maintains a lot of ;; internal state in order to reduce expensive operations to a -;; minimum. Thus, if you mess with the repo while VC's back is turned, +;; minimum. Thus, if you mess with the repo while VC's back is turned, ;; VC may get seriously confused. ;; ;; When using Subversion or a later system, anything you do outside VC ;; *through the VCS tools* should safely interlock with VC -;; operations. Under these VC does little state caching, because local +;; operations. Under these VC does little state caching, because local ;; operations are assumed to be fast. ;; ;; The 'assumed to be fast' category includes SRC, even though it's @@ -235,7 +235,7 @@ ;; ;; * checkin (files comment &optional rev) ;; -;; Commit changes in FILES to this backend. COMMENT is used as a +;; Commit changes in FILES to this backend. COMMENT is used as a ;; check-in comment. The implementation should pass the value of ;; vc-checkin-switches to the backend command. The optional REV ;; revision argument is only supported with some older VCSes, like @@ -257,7 +257,7 @@ ;; that means to check out the head of the current branch; if it is ;; the empty string, check out the head of the trunk. The ;; implementation should pass the value of vc-checkout-switches to -;; the backend command. The 'editable' argument of older VC versions +;; the backend command. The 'editable' argument of older VC versions ;; is gone; all files are checked out editable. ;; ;; * revert (file &optional contents-done) @@ -543,8 +543,8 @@ ;;; Changes from the pre-25.1 API: ;; ;; - INCOMPATIBLE CHANGE: The 'editable' optional argument of -;; vc-checkout is gone. The upper level assumes that all files are -;; checked out editable. This moves closer to emulating modern +;; vc-checkout is gone. The upper level assumes that all files are +;; checked out editable. This moves closer to emulating modern ;; non-locking behavior even on very old VCSes. ;; ;; - INCOMPATIBLE CHANGE: The vc-register function and its backend @@ -577,11 +577,11 @@ ;; only affected back ends were SCCS and RCS. ;; ;; - vc-stay-local-p and repository-hostname are no longer part -;; of the public API. The vc-cvs-stay-local configuration variable +;; of the public API. The vc-cvs-stay-local configuration variable ;; remains and only affects the CVS back end. ;; ;; - The init-revision function and the default-initial-revision -;; variable are gone. These have't made sense on anything shipped +;; variable are gone. These haven't made sense on anything shipped ;; since RCS, and using them was a dumb stunt even on RCS. ;; ;; - workfile-unchanged-p is no longer a public back-end method. It @@ -596,11 +596,11 @@ ;; when set to the (non-default) value nil. The original justification ;; for it (saving disk space) is long obsolete. ;; -;; - The rollback method (implemented by RCS and SCCS only) is gone. See +;; - The rollback method (implemented by RCS and SCCS only) is gone. See ;; the to-do note on uncommit. ;; -;; - latest-on-branch-p is no longer a public method. It was to be used -;; for implementing rollback. RCS keeps its implementation (the only one) +;; - latest-on-branch-p is no longer a public method. It was to be used +;; for implementing rollback. RCS keeps its implementation (the only one) ;; for internal use. @@ -627,7 +627,7 @@ ;; - Make sure the *vc-dir* buffer is updated after merge-branch operations. ;; ;; - add a generic mechanism for remembering the current branch names, -;; display the branch name in the mode-line. Replace +;; display the branch name in the mode-line. Replace ;; vc-cvs-sticky-tag with that. ;; ;; - Add a primitives for switching to a branch (creating it if required. @@ -644,7 +644,7 @@ ;; ;; - Second, `log-view-modify-change-comment' doesn't seem to support ;; modern backends at all because `log-view-extract-comment' -;; unconditionally calls `log-view-current-file'. This should be easy to +;; unconditionally calls `log-view-current-file'. This should be easy to ;; fix. ;; ;; - Third, doing message editing in log-view might be a natural way to go @@ -687,7 +687,7 @@ ;; - add a function that calls vc-dir to `find-directory-functions'. ;; ;; - vc-diff, vc-annotate, etc. need to deal better with unregistered -;; files. Now that unregistered and ignored files are shown in +;; files. Now that unregistered and ignored files are shown in ;; vc-dir, it is possible that these commands are called ;; for unregistered/ignored files. ;; commit f4e6b6e0771b03855b0772bcbd55a22e8cdda2fe Author: Glenn Morris Date: Tue Jan 16 20:55:20 2018 -0500 Small startup fix for current-load-list * lisp/startup.el (command-line): Avoid current-load-list being non-nil after startup ends. diff --git a/lisp/startup.el b/lisp/startup.el index 6001dc9a07..9d16b59def 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1090,11 +1090,12 @@ please check its value") ;; Re-evaluate predefined variables whose initial value depends on ;; the runtime context. - (mapc 'custom-reevaluate-setting - ;; Initialize them in the same order they were loaded, in case there - ;; are dependencies between them. - (prog1 (nreverse custom-delayed-init-variables) - (setq custom-delayed-init-variables nil))) + (let (current-load-list) ; c-r-s may call defvar, and hence LOADHIST_ATTACH + (mapc 'custom-reevaluate-setting + ;; Initialize them in the same order they were loaded, in case there + ;; are dependencies between them. + (prog1 (nreverse custom-delayed-init-variables) + (setq custom-delayed-init-variables nil)))) (normal-erase-is-backspace-setup-frame) commit 5b776bfd644e779f65d631eea5b5017cb97af1a9 Author: Glenn Morris Date: Tue Jan 16 20:53:36 2018 -0500 ; * etc/AUTHORS: Regenerate. diff --git a/etc/AUTHORS b/etc/AUTHORS index fbf3c0e48a..317f21e37f 100644 --- a/etc/AUTHORS +++ b/etc/AUTHORS @@ -36,6 +36,12 @@ Adam Gołębiowski: changed lib-src/Makefile.in Adam Hupp: changed emacs.py emacs2.py emacs3.py gud.el progmodes/python.el +Adam Sjøgren: changed mml2015.el shr.el spam.el xterm.c blink.xpm + braindamaged.xpm cry.xpm dead.xpm evil.xpm forced.xpm frown.xpm + gnus-sum.el grin.xpm gtkutil.c indifferent.xpm message.el + reverse-smile.xpm sad.xpm smile.xpm wry.xpm gnus-html.el + and 7 other files + Adam Sokolnicki: changed ruby-mode.el Adam Spiers: changed org.texi calendar.el cus-edit.el org-clock.el @@ -383,7 +389,7 @@ Artem Chuprina: changed message.el Artur Malabarba: wrote char-fold-tests.el faces-tests.el isearch-tests.el let-alist.el simple-tests.el sort-tests.el tabulated-list-test.el and changed package.el isearch.el lisp/char-fold.el files.el - tabulated-list.el package-tests.el menu-bar.el replace.el bytecomp.el + tabulated-list.el package-test.el menu-bar.el replace.el bytecomp.el faces.el files-x.el custom.el custom.texi help-fns.el let-alist-tests.el simple.el subr-tests.el align.el bindings.el cl-lib-tests.el cl-macs.el and 42 other files @@ -441,10 +447,10 @@ Bastian Beischer: changed include.el mru-bookmark.el refs.el Bastien Guerry: wrote gnus-bookmark.el and co-wrote org-bibtex.el org-list.el org-protocol.el org-src.el and changed org.el org-agenda.el org.texi ox-html.el org-clock.el - org-capture.el ox-latex.el org-table.el ox.el ox-odt.el org-compat.el + org-capture.el org-table.el ox-latex.el ox.el ox-odt.el org-compat.el ox-publish.el ob.el org-mobile.el org-colview.el org-macs.el - org-pcomplete.el org-timer.el org-faces.el ox-ascii.el ob-core.el - and 120 other files + org-pcomplete.el org-timer.el org-faces.el ox-ascii.el org-archive.el + and 118 other files Ben A. Mesander: co-wrote erc-dcc.el @@ -602,6 +608,8 @@ Brian Sniffen: changed gnus-draft.el imap.el mm-decode.el Brian van den Broek: changed org.texi +Bruno Félix Rezende Ribeiro: changed functions.texi + Bruno Haible: co-wrote po.el and changed INSTALL emacs.1 epaths.in info.el paths.el @@ -622,6 +630,8 @@ Carl Edman: co-wrote ns-win.el Carl Henrik Lunde: changed format-spec.el +Carlos Pita: changed erc-pcomplete.el sh-script.el + Carsten Bormann: changed ibmrs6000.h latin-post.el Carsten Dominik: wrote idlw-complete-structtag.el idlw-toolbar.el @@ -655,9 +665,9 @@ Changwoo Ryu: changed files.el Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh Charles A. Roelli: changed nsterm.m nsfns.m nsterm.h org-clock.el DEBUG - INSTALL data.c diff-mode.el eldoc.el fill.el find-func.el flymake.el - frame.el macfont.m mouse-tests.el mouse.el nsmenu.m progmodes/python.el - simple.el speedbar.texi subr.el symref/grep.el + INSTALL comint.el data.c diff-mode.el eldoc.el fill.el find-func.el + flymake.el frame.el macfont.m mouse-tests.el mouse.el nsmenu.m + progmodes/python.el simple.el speedbar.texi and 3 other files Charles Hannum: changed aix3-1.h aix3-2.h configure ibmrs6000.h keyboard.c netbsd.h pop.c sysdep.c systime.h systty.h xrdb.c @@ -673,6 +683,8 @@ Charlie Martin: wrote autoinsert.el Cheng Gao: changed MORE.STUFF Makefile.in flymake.el frame.c tips.texi url-dired.el url-file.el url-handlers.el url-http.el url-nfs.el +Chetan Pandya: changed font.c + Chip Coldwell: changed font.c Chong Yidong: wrote compile-tests.el dichromacy-theme.el font-tests.el @@ -681,7 +693,7 @@ and co-wrote longlines.el tango-dark-theme.el tango-theme.el and changed simple.el display.texi xdisp.c files.el frames.texi cus-edit.el files.texi custom.el subr.el text.texi faces.el keyboard.c startup.el package.el misc.texi emacs.texi modes.texi mouse.el - custom.texi image.c window.el and 935 other files + custom.texi image.c window.el and 936 other files Chris Chase: co-wrote idlw-shell.el idlwave.el @@ -721,6 +733,8 @@ Christian Egli: changed org-taskjuggler.el org.texi Christian Faulhammer: changed configure configure.ac src/Makefile.in vc-bzr.el +Christian Garbs: wrote ob-vala.el + Christian Limpach: co-wrote ns-win.el and changed configure.ac @@ -902,11 +916,11 @@ Daniel Engeler: changed sysdep.c elisp.texi emacs.texi internals.texi Daniel Hackney: wrote package-tests.el and co-wrote package.el -and changed package-x.el ange-ftp.el automated/Makefile.in browse-url.el - dbus.el dired-x.el ediff-diff.el ediff-init.el ediff-merg.el - ediff-mult.el ediff-util.el ediff-wind.el ediff.el emacsclient.c - emerge.el eudc.el eudcb-ldap.el eww.el finder.el imap.el pcvs.el - and 5 other files +and changed package-test.el package-x.el ange-ftp.el + automated/Makefile.in browse-url.el dbus.el dired-x.el ediff-diff.el + ediff-init.el ediff-merg.el ediff-mult.el ediff-util.el ediff-wind.el + ediff.el emacsclient.c emerge.el eudc.el eudcb-ldap.el eww.el finder.el + imap.el and 6 other files Daniel Jensen: changed apropos.el @@ -1241,9 +1255,9 @@ Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el vc-hg-tests.el xref-tests.el and changed ruby-mode.el xref.el vc-git.el elisp-mode.el etags.el ruby-mode-tests.el project.el js.el package.el vc-hg.el vc.el - symref/grep.el package-tests.el log-edit.el menu-bar.el + symref/grep.el log-edit.el menu-bar.el package-test.el progmodes/grep.el simple.el vc-svn.el eldoc.el find-func.el lisp.el - and 88 other files + and 89 other files Dmitry Kurochkin: changed isearch.el @@ -1327,7 +1341,7 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c] and changed xdisp.c msdos.c w32.c w32fns.c display.texi simple.el files.el fileio.c w32proc.c keyboard.c w32term.c dispnew.c emacs.c lisp.h dispextern.h files.texi process.c term.c window.c text.texi - INSTALL and 1102 other files + INSTALL and 1103 other files Emanuele Giaquinta: changed configure.ac rxvt.el charset.c etags.c fontset.c frame.el gnus-faq.texi loadup.el lread.c sh-script.el @@ -1412,7 +1426,7 @@ and changed c.srt ede.texi info.el rmail.el speedbspec.el cedet.el ede-autoconf.srt ede-make.srt eieio.texi gud.el sb-dir-minus.xpm sb-dir-plus.xpm sb-dir.xpm sb-mail.xpm sb-pg-minus.xpm sb-pg-plus.xpm sb-pg.xpm sb-tag-gt.xpm sb-tag-minus.xpm sb-tag-plus.xpm - sb-tag-type.xpm and 33 other files + sb-tag-type.xpm and 34 other files Eric Schulte: wrote ob-asymptote.el ob-awk.el ob-calc.el ob-comint.el ob-coq.el ob-css.el ob-ditaa.el ob-dot.el ob-emacs-lisp.el ob-eval.el @@ -1513,6 +1527,15 @@ Federico Beffa: changed xscheme.el Felipe Ochoa: changed faces.el paren.el +Felix H. Dahlke: changed js.el + +Felix Lee: changed flyspell.el outline.el cl.texi data.c gud.el nntp.el + process.c progmodes/compile.el vc.el xdisp.c + +Felix Mueller: changed nsterm.m + +Felix S. T. Wu: co-wrote vi.el (public domain) + Feng Li: changed calc-ext.el pascal.el which-func.el Feng Shu: changed org.el org.texi ox.el ox-html.el ox-latex.el ox-odt.el @@ -1562,6 +1585,8 @@ François Allisson: changed org.texi François-David Collin: changed message.el mm-decode.el +Francois Felix Ingrand: changed gnus-salt.el + Francois Fleuret: changed tex-mode.el François Pinard: co-wrote po.el @@ -1701,7 +1726,7 @@ and changed configure.ac Makefile.in src/Makefile.in calendar.el diary-lib.el lisp/Makefile.in files.el rmail.el make-dist progmodes/f90.el bytecomp.el simple.el authors.el emacs.texi misc/Makefile.in admin.el startup.el lib-src/Makefile.in ack.texi - display.texi cal-menu.el and 1671 other files + display.texi cal-menu.el and 1674 other files Glynn Clements: wrote gamegrid.el snake.el tetris.el @@ -1723,6 +1748,9 @@ Greg Hudson: changed configure.ac indent.c Greg Klanderman: co-wrote pcvs.el and changed messagexmas.el +Greg McGary: co-wrote po.el +and changed tar-mode.el + Gregoire Jadi: changed proced.el Grégoire Jadi: changed org.texi emacsgtkfixed.c keyboard.c rcirc.el @@ -2052,10 +2080,10 @@ Jarek Czekalski: changed keyboard.c callproc.c mini.texi minibuf.c Jari Aalto: co-wrote pcvs.el and changed add-log.el filecache.el progmodes/grep.el comint.el - gnus-art.el gnus-sum.el gnus.texi ispell.el man.el nnmail.el apropos.el - autorevert.el checkdoc.el cperl-mode.el css-mode.el desktop.el em-ls.el - emacs-lisp/debug.el emacsclient.1 executable.el files.el - and 23 other files + gnus-art.el gnus-sum.el gnus.texi ispell.el lisp-mnt.el man.el + nnmail.el apropos.el autorevert.el checkdoc.el cperl-mode.el + css-mode.el desktop.el em-ls.el emacs-lisp/debug.el emacsclient.1 + executable.el and 23 other files Jarmo Hurri: wrote ob-processing.el and changed org-gnus.el org-table.el org.texi @@ -2413,7 +2441,7 @@ Jorge A. Alfaro-Murillo: changed message.el Jorgen Schäfer: wrote erc-autoaway.el erc-goodies.el erc-spelling.el and changed erc.el erc-track.el erc-backend.el erc-match.el misc.el erc-stamp.el erc-button.el erc-fill.el erc-members.el erc-truncate.el - erc-compat.el package-tests.el progmodes/python.el Makefile erc-dcc.el + erc-compat.el package-test.el progmodes/python.el Makefile erc-dcc.el erc-ibuffer.el erc-macs.el erc-page.el erc-pcomplete.el erc-sound.el minibuffer.el and 15 other files @@ -2503,7 +2531,7 @@ Juri Linkov: wrote files-x.el misearch.el replace-tests.el and changed isearch.el info.el replace.el simple.el progmodes/grep.el dired-aux.el dired.el progmodes/compile.el startup.el faces.el files.el menu-bar.el bindings.el display.texi descr-text.el desktop.el comint.el - image-mode.el ispell.el man.el cus-edit.el and 357 other files + image-mode.el ispell.el man.el cus-edit.el and 358 other files Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h w32console.c w32heap.c w32inevt.c w32term.h @@ -2520,10 +2548,12 @@ Justus Piater: changed org-agenda.el smtpmail.el Kahlil Hodgson: changed timeclock.el -Kai Großjohann: co-wrote longlines.el -and changed tramp.el nntp.el message.el simple.el ange-ftp.el gnus-sum.el - diff-mode.el files.el files.texi mouse-sel.el processes.texi - tramp-smb.el tramp-vc.el vc.el +Kai Großjohann: wrote gnus-delay.el nnir.el tramp-uu.el trampver.el +and co-wrote longlines.el tramp-sh.el tramp.el +and changed message.el gnus-agent.el gnus-sum.el files.el nnmail.el + tramp.texi nntp.el gnus.el simple.el ange-ftp.el dired.el paragraphs.el + bindings.el files.texi gnus-art.el gnus-group.el man.el INSTALL + Makefile.in crisp.el fileio.c and 45 other files Kailash C. Chowksey: changed HELLO ind-util.el kannada.el knd-util.el lisp/Makefile.in loadup.el @@ -2782,6 +2812,8 @@ Kyotaro Horiguchi: changed coding.c indent.c Laimonas Vėbra: changed european.el ispell.el +Lambda Coder: changed tramp.texi + Lara Rios: co-wrote cal-menu.el Lars Brinkhoff: changed records.texi fns.c lread.c data.c elisp.texi @@ -2901,7 +2933,7 @@ Luc Teirlinck: wrote help-at-pt.el and changed files.el autorevert.el cus-edit.el subr.el simple.el frames.texi startup.el display.texi files.texi dired.el comint.el modes.texi custom.texi emacs.texi fns.c frame.el ielm.el minibuf.texi - variables.texi buffers.texi commands.texi and 212 other files + variables.texi buffers.texi commands.texi and 213 other files Ludovic Courtès: wrote nnregistry.el and changed configure.ac gnus.texi loadup.el @@ -3164,6 +3196,8 @@ Matthew Bauer: changed startup.el Matthew Carter: changed sql.el +Matthew Junker: changed cal-tex.el + Matthew Leach: changed configure.ac arc-mode.el battery.el emacs.c font-lock.el ispell.el lisp.h misc.texi process.c processes.texi server.el src/Makefile.in @@ -3226,7 +3260,7 @@ and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c file-notify-tests.el ange-ftp.el files.el dbus.texi files.texi autorevert.el tramp-fish.el kqueue.c tramp-gw.el tramp-imap.el os.texi configure.ac lisp.h gfilenotify.c inotify.c keyboard.c - and 142 other files + and 143 other files Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h unexec.c @@ -3292,7 +3326,7 @@ Michael Olson: changed erc.el erc-backend.el Makefile erc-track.el erc-log.el erc-stamp.el erc-autoaway.el erc-dcc.el erc-goodies.el erc-list.el erc-compat.el erc-identd.el erc.texi ERC-NEWS erc-bbdb.el erc-match.el erc-notify.el erc-ibuffer.el erc-services.el remember.el - erc-button.el and 55 other files + erc-button.el and 56 other files Michael Piotrowski: changed gnus-art.el gnus-sum.el ps-print.el @@ -3527,7 +3561,7 @@ Nicolas Graner: changed message.el Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el thunk-tests.el thunk.el and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el -and changed sequences.texi README configure.ac sed2v2.inp authors.el +and changed sequences.texi README authors.el configure.ac sed2v2.inp emacs.png README.W32 emacs23.png arc-mode.el cl-extra.el emacs.svg manoj-dark-theme.el Emacs.icns Makefile.in auth-source.el emacs.ico fns.c make-tarball.txt obarray-tests.el obarray.el HISTORY @@ -3867,7 +3901,7 @@ and changed lisp/Makefile.in undo.c simple.el test/Makefile.in Makefile Makefile.in viper-cmd.el elisp-mode-tests.el keyboard.c ldefs-clean.el loadup.el autoload.el automated/Makefile.in build-zips.sh cmds.c dired.el eieio-tests.el fileio.c htmlfontify.el - make-test-deps.emacs-lisp package-tests.el and 167 other files + make-test-deps.emacs-lisp reftex-tests.el and 168 other files Phil Sainty: changed derived.el easy-mmode.el lisp.el package.el progmodes/grep.el simple.el subword.el term.el @@ -4111,6 +4145,13 @@ Roland B. Roberts: changed buffer.h callproc.c dired.c files.el Roland Kaufmann: changed ox.el +Roland McGrath: wrote autoload.el etags.el map-ynp.el progmodes/grep.el +and co-wrote find-dired.el progmodes/compile.el +and changed compile.el add-log.el configure.ac files.el vc.el simple.el + mailabbrev.el comint.el Makefile.in buffer.c upd-copyr.el menu-bar.el + etags.c mem-limits.h ralloc.c src/Makefile.in fileio.c data.c process.c + rlogin.el rmail.el and 139 other files + Roland Winkler: wrote proced.el and changed bibtex.el faces.el crm.el process.c appt.el artist.el conf-mode.el cus-edit.el diary-lib.el flyspell.el hideshow.el @@ -4279,6 +4320,15 @@ Sebastian Tennant: changed desktop.el Sebastian Wiesner: changed bytecomp.el comint.el files.el replace.el simple.el +Sébastien Delafond: changed org.el + +Sébastien Gross: changed hideshow.el + +Sebastien Kirche: changed mail-extr.el + +Sébastien Vauban: changed org.el org-agenda.el ox-latex.el ob-core.el + org-clock.el ox-ascii.el ox-html.el + Seiji Zenitani: changed nsfns.m frame.c xterm.c PkgInfo document.icns find-func.el frame.h help-fns.el macfns.c nextstep/templates/Info.plist.in nsfont.m nsterm.m w32fns.c xdisp.c @@ -4333,6 +4383,8 @@ Shoji Nishimura: changed org.el Sho Nakatani: changed doc-view.el +Shuguang Sun: changed dired-aux.el + Shuhei Kobayashi: wrote hex-util.el hmac-def.el hmac-md5.el and changed gnus-group.el message.el nnmail.el @@ -4356,10 +4408,10 @@ Simon Josefsson: wrote dig.el dns-mode.el flow-fill.el fringe.el imap.el and co-wrote gnus-sieve.el gssapi.el mml1991.el nnfolder.el nnimap.el nnml.el sieve-manage.el and changed message.el gnus-sum.el net/imap.el gnus-art.el smtpmail.el - pgg-gpg.el pgg.el gnus-agent.el gnus-group.el mml.el mml2015.el - gnus-msg.el gnus.texi mail/sieve-manage.el pgg-pgp5.el browse-url.el - gnus-int.el gnus.el hashcash.el mail/flow-fill.el mm-view.el - and 101 other files + pgg-gpg.el pgg.el gnus-agent.el mml2015.el mml.el gnus-group.el + mm-decode.el gnus-msg.el gnus.texi mail/sieve-manage.el pgg-pgp5.el + browse-url.el gnus-int.el gnus.el hashcash.el mail/flow-fill.el + and 104 other files Simon Law: changed delsel.el electric.el @@ -4447,7 +4499,9 @@ and changed todo-mode.texi diary-lib.el dired-tests.el doc-view.el files.el minibuffer.el dired.el frames.texi hl-line.el info.el menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes allout.el artist.el compile.texi cus-start.el descr-text.el dframe.el - and 39 other files + and 40 other files + +Stephen C. Gilardi: changed configure.ac Stephen Compall: changed saveplace.el texinfo.el @@ -4611,7 +4665,7 @@ Teodor Zlatanov: wrote auth-source.el gnus-registry.el gnus-tests.el and changed spam.el gnus.el nnimap.el gnus.texi gnutls.c gnus-sum.el auth.texi cfengine.el gnus-sync.el gnus-util.el gnus-start.el netrc.el gnutls.h message.el spam-stat.el encrypt.el mail-source.el nnir.el - nnmail.el auth-source-tests.el configure.ac and 120 other files + nnmail.el auth-source-tests.el configure.ac and 121 other files Terje Rosten: changed xfns.c version.el xterm.c xterm.h @@ -4931,10 +4985,14 @@ Vincent Bernat: changed gnus-int.el nnimap.el Vincent Del Vecchio: changed info.el mh-utils.el -Vinicius Jose Latorre: changed ps-print.el ps-mule.el ps-prin1.ps - ebnf2ps.el ps-prin0.ps ps-prin3.ps printing.el ps-prin2.ps delim-col.el - ebnf-bnf.el ebnf-iso.el ebnf-yac.el ps-bdf.el ebnf-otz.el lpr.el - ps-print-def.el ps-vars.el whitespace.el +Vinicius Jose Latorre: wrote delim-col.el ebnf-abn.el ebnf-bnf.el + ebnf-dtd.el ebnf-ebx.el ebnf-iso.el ebnf-otz.el ebnf-yac.el ebnf2ps.el + printing.el whitespace.el +and co-wrote ps-def.el ps-mule.el ps-print.el ps-samp.el +and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps + ps-prin2.ps lpr.el subr.el diff-mode.el TUTORIAL.pt_BR compilation.txt + easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el + ps-print-def.el ps-vars.el Vitalie Spinu: changed comint.el message.el ob-R.el ob-core.el ob-tangle.el subr.el commit d80295c960803ee983d297f7fe66f606dbfe4c69 Author: Glenn Morris Date: Tue Jan 16 20:52:55 2018 -0500 authors-aliases is based on regexps, not literals * admin/authors.el (authors-aliases): Replace overly-broad entries. diff --git a/admin/authors.el b/admin/authors.el index 8c94014c57..95fde33c29 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -51,17 +51,17 @@ files.") ("Aurélien Aptel" "Aurelien Aptel") ("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc." "Barry A. Warsaw, ITB" "Barry Warsaw") - ("Bastien Guerry" "Bastien") + ("Bastien Guerry" "Bastien .*bzg") ("Bill Carpenter" "WJ Carpenter") ("Bill Mann" "William F. Mann") ("Bill Rozas" "Guillermo J. Rozas") - (nil "Binjo") + (nil "binjo.cn@gmail.com") ("Björn Torkelsson" "Bjorn Torkelsson") ("Brian Fox" "Brian J. Fox") ("Brian P Templeton" "BT Templeton") ("Brian Sniffen" "Brian T. Sniffen") - (nil "Castor") - (nil "cg") + (nil "castor@my-dejanews") + (nil "chengang31@gmail.com") ("David Abrahams" "Dave Abrahams") ("David J. Biesack" "David Biesack") ("David De La Harpe Golden" "David Golden") @@ -71,7 +71,7 @@ files.") ("David M. Koppelman" "David Koppelman") ("David M. Smith" "David Smith" "David M Smith") ("David O'Toole" "David T. O'Toole") - (nil "Deech") + (nil "deech@deech") ("Deepak Goel" "D. Goel") ("Ed L. Cashin" "Ed L Cashin") ("Edward M. Reingold" "Ed\\(ward\\( M\\)?\\)? Reingold" "Reingold Edward M") @@ -79,7 +79,7 @@ files.") ("Eric M. Ludlam" "Eric Ludlam") ("Eric S. Raymond" "Eric Raymond") ("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina") - (nil "felix") + (nil "felix.*EmacsWiki") (nil "foudfou") ("Francis Litterio" "Fran Litterio") ("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright") @@ -121,7 +121,7 @@ files.") ("Kim F. Storm" "Kim Storm") ("Kyle Jones" "Kyle E. Jones") ("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen") - (nil "LynX") + (nil "LynX@bk.ru") (nil "lu4nx") ("Marcus G. Daniels" "Marcus Daniels") ("Mark D. Baushke" "Mark D Baushke") @@ -143,7 +143,7 @@ files.") ("Noorul Islam" "Noorul Islam K M") ;;; ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME? ("Óscar Fuentes" "Oscar Fuentes") - (nil "oblique") + (nil "psyberbits@gmail.com") ("Paul Eggert" "Paul R\\. Eggert") ("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik") ("Pavel Kobiakov" "Pavel Kobyakov") @@ -176,7 +176,7 @@ files.") ("Sébastien Vauban" "Sebastien Vauban") ("Sergey Litvinov" "Litvinov Sergey") ("Simen Heggestøyl" "Simen") - (nil "sj") + (nil "prime.wizard") ("Shun-ichi Goto" "Shun-ichi GOTO") ;; There are other Stefans. ;;; ("Stefan Monnier" "Stefan")