From 4d225fb815fd0d43aa003bddf3b76e1fd1da434c Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 1 Jun 2014 17:22:41 -0700 Subject: [PATCH 01/26] * etc/NEWS: Add placeholders for undocumented package.el changes. --- etc/NEWS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index a353fdd9d8b..368f77bd0f9 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -816,6 +816,12 @@ Use `electric-indent-mode' instead. ** Package +FIXME +*** New option `package-pinned-packages'. + +FIXME +*** New options `package-check-signature' and `package-unsigned-archives'. + +++ *** In the `list-packages' buffer, you can use `f' (`package-menu-filter') to filter the list of packages by a keyword. From bf0b7b55381e9a0ea57ed2ca5e865be20d20aed0 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sun, 1 Jun 2014 18:14:08 -0700 Subject: [PATCH 02/26] * doc/emacs/misc.texi: Small updates (no need to merge to trunk) * doc/emacs/misc.texi [iftex]: Update chapter summary. (Emulation): Remove ludicrously outdated claim. --- doc/emacs/ChangeLog | 5 +++++ doc/emacs/misc.texi | 9 ++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index efb70f3b09b..9a332b260d4 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,8 @@ +2014-06-02 Glenn Morris + + * misc.texi [iftex]: Update chapter summary. + (Emulation): Remove ludicrously outdated claim. + 2014-05-29 Glenn Morris * macos.texi (Mac / GNUstep Customization): Mention ns custom group. diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index a2813f8b197..99bae873c2b 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -9,10 +9,9 @@ else: viewing ``document files'', reading Usenet news, running shell commands and shell subprocesses, using a single shared Emacs for utilities that expect to run an editor as a subprocess, printing -hardcopy, sorting text, narrowing display to part of the buffer, -editing binary files, saving an Emacs session for later resumption, -following hyperlinks, browsing images, emulating other editors, and -various diversions and amusements. +hardcopy, sorting text, editing binary files, saving an Emacs session +for later resumption, following hyperlinks, emulating other editors, +and various diversions and amusements. @end iftex @@ -2282,7 +2281,7 @@ the order you choose. @cindex Macintosh key bindings @cindex WordStar - GNU Emacs can be programmed to emulate (more or less) most other + GNU Emacs can be programmed to emulate (more or less) some other editors. Standard facilities can emulate these: @table @asis From 834dee2099cd30946753bd109f2f47d538575083 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 2 Jun 2014 19:53:02 +0300 Subject: [PATCH 03/26] src/dispnew.c (update_frame_with_menu): Set display_completed. --- src/ChangeLog | 4 ++++ src/dispnew.c | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 07d2b5bd643..2e3b465e96e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2014-06-02 Eli Zaretskii + + * dispnew.c (update_frame_with_menu): Set display_completed. + 2014-06-01 Paul Eggert * frame.c (x_set_frame_parameters): Don't read uninitialized storage. diff --git a/src/dispnew.c b/src/dispnew.c index 7833f8e8af5..1a9eefc5cfc 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -3132,12 +3132,11 @@ update_frame_with_menu (struct frame *f) check_window_matrix_pointers (root_window); #endif add_frame_display_history (f, paused_p); -#else - IF_LINT ((void) paused_p); #endif /* Reset flags indicating that a window should be updated. */ set_window_update_flags (root_window, false); + display_completed = !paused_p; } From c4e6b585bbdf26cfbb5b79da216e347e195dc38d Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 2 Jun 2014 14:42:07 -0400 Subject: [PATCH 04/26] * src/callproc.c (call_process): Don't check read-only if we don't insert anything. Fixes: debbugs:17666 --- src/ChangeLog | 5 +++++ src/callproc.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 2e3b465e96e..5759d155580 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-06-02 Stefan Monnier + + * callproc.c (call_process): Don't check read-only if we don't insert + anything (bug#17666). + 2014-06-02 Eli Zaretskii * dispnew.c (update_frame_with_menu): Set display_completed. diff --git a/src/callproc.c b/src/callproc.c index 9e60ba11bcf..7ba3e398b41 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -826,8 +826,10 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, /* Now NREAD is the total amount of data in the buffer. */ immediate_quit = 0; - if (NILP (BVAR (current_buffer, enable_multibyte_characters)) - && ! CODING_MAY_REQUIRE_DECODING (&process_coding)) + if (!nread) + ; + else if (NILP (BVAR (current_buffer, enable_multibyte_characters)) + && ! CODING_MAY_REQUIRE_DECODING (&process_coding)) insert_1_both (buf, nread, nread, 0, 1, 0); else { /* We have to decode the input. */ @@ -835,6 +837,7 @@ call_process (ptrdiff_t nargs, Lisp_Object *args, int filefd, ptrdiff_t count1 = SPECPDL_INDEX (); XSETBUFFER (curbuf, current_buffer); + /* FIXME: Call signal_after_change! */ prepare_to_modify_buffer (PT, PT, NULL); /* We cannot allow after-change-functions be run during decoding, because that might modify the From 335908691102a2aad107ce00046ee98e80509ff1 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 2 Jun 2014 21:58:36 +0300 Subject: [PATCH 05/26] Fix TTY menu invocation via M-x. lisp/menu-bar.el (menu-bar-open): Fix invocation via M-x by forcing the update of the menu bar. --- lisp/ChangeLog | 4 ++++ lisp/menu-bar.el | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8e3810f907b..8d4c8d91450 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-02 Eli Zaretskii + + * menu-bar.el (menu-bar-open): Fix invocation via M-x. + 2014-06-01 Eli Zaretskii * simple.el (keyboard-quit): Force update of mode lines, to remove diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index f9cbc62b464..8658a31cb58 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -2267,6 +2267,12 @@ If FRAME is nil or not given, use the selected frame." ((eq type 'w32) (w32-menu-bar-open frame)) ((and (null tty-menu-open-use-tmm) (not (zerop (or (frame-parameter nil 'menu-bar-lines) 0)))) + ;; Make sure the menu bar is up to date. One situation where + ;; this is important is when this function is invoked by name + ;; via M-x, in which case the menu bar includes the "Minibuf" + ;; menu item that should be removed when we exit the minibuffer. + (force-mode-line-update) + (sit-for 0) (let* ((x tty-menu--initial-menu-x) (menu (menu-bar-menu-at-x-y x 0 frame))) (popup-menu (or From 910dc8d31264e2105e876c686206521c5dc47c64 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 2 Jun 2014 21:41:20 -0700 Subject: [PATCH 06/26] * lisp/emacs-lisp/package.el (package-pinned-packages): Doc fix. * etc/NEWS: Related edit. --- etc/NEWS | 4 ++-- lisp/ChangeLog | 4 ++++ lisp/emacs-lisp/package.el | 23 +++++++++++++++-------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 368f77bd0f9..44bcb22e85e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -816,8 +816,8 @@ Use `electric-indent-mode' instead. ** Package -FIXME -*** New option `package-pinned-packages'. +*** New option `package-pinned-packages'. This is useful if you have multiple +archives enabled, with more than one offering a package that you want. FIXME *** New options `package-check-signature' and `package-unsigned-archives'. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8d4c8d91450..bc9703db3e0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-03 Glenn Morris + + * emacs-lisp/package.el (package-pinned-packages): Doc fix. + 2014-06-02 Eli Zaretskii * menu-bar.el (menu-bar-open): Fix invocation via M-x. diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 8c275c68884..028c57da19c 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -229,18 +229,25 @@ a package can run arbitrary code." :version "24.1") (defcustom package-pinned-packages nil - "An alist of packages that are pinned to a specific archive + "An alist of packages that are pinned to specific archives. +This can be useful if you have multiple package archives enabled, +and want to control which archive a given package gets installed from. -Each element has the form (SYM . ID). - SYM is a package, as a symbol. - ID is an archive name. This should correspond to an - entry in `package-archives'. +Each element of the alist has the form (PACKAGE . ARCHIVE), where: + PACKAGE is a symbol representing a package + ARCHIVE is a string representing an archive (it should be the car of +an element in `package-archives', e.g. \"gnu\"). -If the archive of name ID does not contain the package SYM, no -other location will be considered, which will make the -package unavailable." +Adding an entry to this variable means that only ARCHIVE will be +considered as a source for PACKAGE. If other archives provide PACKAGE, +they are ignored (for this package). If ARCHIVE does not contain PACKAGE, +the package will be unavailable." :type '(alist :key-type (symbol :tag "Package") :value-type (string :tag "Archive name")) + ;; I don't really see why this is risky... + ;; I suppose it could prevent you receiving updates for a package, + ;; via an entry (PACKAGE . NON-EXISTING). Which could be an issue + ;; if PACKAGE has a known vulnerability that is fixed in newer versions. :risky t :group 'package :version "24.4") From e7477c9f9e88fe764c29c7193614ed37ba69efa8 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 2 Jun 2014 21:45:56 -0700 Subject: [PATCH 07/26] * emacs/package.texi (Package Installation): Mention package-pinned-packages. * etc/NEWS: Related markup. --- doc/emacs/ChangeLog | 4 ++++ doc/emacs/package.texi | 7 +++++++ etc/NEWS | 1 + 3 files changed, 12 insertions(+) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 9a332b260d4..27168b00021 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,7 @@ +2014-06-03 Glenn Morris + + * package.texi (Package Installation): Mention package-pinned-packages. + 2014-06-02 Glenn Morris * misc.texi [iftex]: Update chapter summary. diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index dee1210086c..98e3c8ac706 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -167,6 +167,13 @@ directory name of the package archive. You can alter this list if you wish to use third party package archives---but do so at your own risk, and use only third parties that you think you can trust! +@vindex package-pinned-packages + If you have more than one package archive enabled, and some of them +offer different versions of the same package, you may find the option +@code{package-pinned-packages} useful. You can add package/archive +pairs to this list, to ensure that the specified package is only ever +downloaded from the specified archive. + Once a package is downloaded and installed, it is @dfn{loaded} into the current Emacs session. Loading a package is not quite the same as loading a Lisp library (@pxref{Lisp Libraries}); its effect varies diff --git a/etc/NEWS b/etc/NEWS index 44bcb22e85e..bb9784718fc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -816,6 +816,7 @@ Use `electric-indent-mode' instead. ** Package ++++ *** New option `package-pinned-packages'. This is useful if you have multiple archives enabled, with more than one offering a package that you want. From a336b2eae3b52f6fba5a19cc98e780feca618115 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Tue, 3 Jun 2014 09:43:24 +0200 Subject: [PATCH 08/26] Fix Bug#17653. * net/tramp.el (tramp-ssh-controlmaster-options): Improve search regexp. --- lisp/ChangeLog | 5 +++++ lisp/net/tramp.el | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bc9703db3e0..d73300523e9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-03 Michael Albinus + + * net/tramp.el (tramp-ssh-controlmaster-options): Improve search + regexp. (Bug#17653) + 2014-06-03 Glenn Morris * emacs-lisp/package.el (package-pinned-packages): Doc fix. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 6cc8275b327..9a97d824528 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -302,18 +302,19 @@ useful only in combination with `tramp-default-proxies-alist'.") ;;;###tramp-autoload (defconst tramp-ssh-controlmaster-options - (let ((result "")) + (let ((result "") + (case-fold-search t)) (ignore-errors (with-temp-buffer (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) - (when (search-forward-regexp "Missing ControlMaster argument" nil t) + (when (search-forward-regexp "missing.+argument" nil t) (setq result "-o ControlPath=%t.%%r@%%h:%%p -o ControlMaster=auto"))) - (when result + (unless (zerop (length result)) (with-temp-buffer (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) - (when (search-forward-regexp "Missing ControlPersist argument" nil t) + (when (search-forward-regexp "missing.+argument" nil t) (setq result (concat result " -o ControlPersist=no")))))) result) "Call ssh to detect whether it supports the Control* arguments. From 0016fa11a71bff9c8e70a98723cefc1582389dff Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 3 Jun 2014 12:50:04 +0300 Subject: [PATCH 09/26] Minor fix of the last commit in menu-bar-open. lisp/menu-bar.el (menu-bar-open): Fix last change: use the PC '(redisplay)' instead of '(sit-for 0)'. --- lisp/ChangeLog | 5 +++++ lisp/menu-bar.el | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d73300523e9..2ca78add203 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-03 Eli Zaretskii + + * menu-bar.el (menu-bar-open): Fix last change: use the PC + 'redisplay' instead of '(sit-for 0)'. + 2014-06-03 Michael Albinus * net/tramp.el (tramp-ssh-controlmaster-options): Improve search diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 8658a31cb58..19c8bdd4e24 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -2272,7 +2272,7 @@ If FRAME is nil or not given, use the selected frame." ;; via M-x, in which case the menu bar includes the "Minibuf" ;; menu item that should be removed when we exit the minibuffer. (force-mode-line-update) - (sit-for 0) + (redisplay) (let* ((x tty-menu--initial-menu-x) (menu (menu-bar-menu-at-x-y x 0 frame))) (popup-menu (or From 4a52a98a9a5a49719da0a44d5ab1ddfde9a2aedc Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 3 Jun 2014 14:38:17 +0200 Subject: [PATCH 10/26] In display-buffer-use-some-window don't shrink window used (Bug#17671). * window.el (display-buffer-use-some-window): Don't make window used smaller than it was before (Bug#17671). --- lisp/ChangeLog | 5 +++++ lisp/window.el | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2ca78add203..6bb2147595d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-03 Martin Rudalics + + * window.el (display-buffer-use-some-window): Don't make window + used smaller than it was before (Bug#17671). + 2014-06-03 Eli Zaretskii * menu-bar.el (menu-bar-open): Fix last change: use the PC diff --git a/lisp/window.el b/lisp/window.el index c5093ca51a5..e9f4fd0b1d2 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -6497,7 +6497,7 @@ that frame." ;; resize it to its old height but don't signal an error. (when (and (listp quad) (integerp (nth 3 quad)) - (/= (nth 3 quad) (window-total-height window))) + (> (nth 3 quad) (window-total-height window))) (condition-case nil (window-resize window (- (nth 3 quad) (window-total-height window))) (error nil))) From d13adf6ddc858a988f88233fe6d73a8ca4a87cf7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 4 Jun 2014 12:16:46 +0300 Subject: [PATCH 11/26] Attempt to solve bug #17497 by minimizing cursor motion during TTY menu updates. src/term.c (tty_menu_display): Don't position cursor here. Instead, pass the cursor coordinates to update_frame_with_menu. (tty_menu_activate): Send the hide cursor command only once in an iteration through the outer 'while' loop. src/dispnew.c (update_frame_1): Accept an additional argument SET_CURSOR_P, and position the cursor at the end of the frame update only if that argument is non-zero. All callers changed to provide the additional argument as non-zero, except for update_frame_with_menu. (update_frame_with_menu): Accept 2 additional arguments ROW and COL; if they are non-negative, instruct update_frame_1 not to position the cursor, and instead position it according to ROW and COL. src/dispextern.h (update_frame_with_menu): Update prototype. --- src/ChangeLog | 20 ++++++++++++++++++++ src/dispextern.h | 2 +- src/dispnew.c | 30 +++++++++++++++++++++--------- src/term.c | 16 ++++++++-------- 4 files changed, 50 insertions(+), 18 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5759d155580..16e3328a735 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,23 @@ +2014-06-04 Eli Zaretskii + + Minimize cursor motion during TTY menu updates. + * term.c (tty_menu_display): Don't position cursor here. Instead, + pass the cursor coordinates to update_frame_with_menu. + (tty_menu_activate): Send the hide cursor command only once in an + iteration through the outer 'while' loop. + + * dispnew.c (update_frame_1): Accept an additional argument + SET_CURSOR_P, and position the cursor at the end of the frame + update only if that argument is non-zero. All callers changed to + provide the additional argument as non-zero, except for + update_frame_with_menu. + (update_frame_with_menu): Accept 2 additional arguments ROW and + COL; if they are non-negative, instruct update_frame_1 not to + position the cursor, and instead position it according to ROW and + COL. + + * dispextern.h (update_frame_with_menu): Update prototype. + 2014-06-02 Stefan Monnier * callproc.c (call_process): Don't check read-only if we don't insert diff --git a/src/dispextern.h b/src/dispextern.h index 9ecd4ecdf7e..8ccc3d35d8c 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -3454,7 +3454,7 @@ extern Lisp_Object marginal_area_string (struct window *, enum window_part, int *, int *, int *, int *); extern void redraw_frame (struct frame *); extern bool update_frame (struct frame *, bool, bool); -extern void update_frame_with_menu (struct frame *); +extern void update_frame_with_menu (struct frame *, int, int); extern void bitch_at_user (void); extern void adjust_frame_glyphs (struct frame *); void free_glyphs (struct frame *); diff --git a/src/dispnew.c b/src/dispnew.c index 1a9eefc5cfc..163780952a6 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -92,7 +92,7 @@ static void check_matrix_pointers (struct glyph_matrix *, static void mirror_line_dance (struct window *, int, int, int *, char *); static bool update_window_tree (struct window *, bool); static bool update_window (struct window *, bool); -static bool update_frame_1 (struct frame *, bool, bool); +static bool update_frame_1 (struct frame *, bool, bool, bool); static bool scrolling (struct frame *); static void set_window_cursor_after_update (struct window *); static void adjust_frame_glyphs_for_window_redisplay (struct frame *); @@ -3070,7 +3070,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p) /* Update the display */ update_begin (f); - paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p); + paused_p = update_frame_1 (f, force_p, inhibit_hairy_id_p, 1); update_end (f); if (FRAME_TERMCAP_P (f) || FRAME_MSDOS_P (f)) @@ -3100,12 +3100,17 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p) glyphs. This is like the second part of update_frame, but it doesn't call build_frame_matrix, because we already have the desired matrix prepared, and don't want it to be overwritten by the - text of the normal display. */ + text of the normal display. + + ROW and COL, if non-negative, are the row and column of the TTY + frame where to position the cursor after the frame update is + complete. Negative values mean ask update_frame_1 to position the + cursor "normally", i.e. at point in the selected window. */ void -update_frame_with_menu (struct frame *f) +update_frame_with_menu (struct frame *f, int row, int col) { struct window *root_window = XWINDOW (f->root_window); - bool paused_p; + bool paused_p, cursor_at_point_p; eassert (FRAME_TERMCAP_P (f)); @@ -3115,9 +3120,14 @@ update_frame_with_menu (struct frame *f) /* Update the display. */ update_begin (f); + cursor_at_point_p = !(row >= 0 && col >= 0); /* Force update_frame_1 not to stop due to pending input, and not try scrolling. */ - paused_p = update_frame_1 (f, 1, 1); + paused_p = update_frame_1 (f, 1, 1, cursor_at_point_p); + /* ROW and COL tell us where in the menu to position the cursor, so + that screen readers know the active region on the screen. */ + if (!cursor_at_point_p) + cursor_to (f, row, col); update_end (f); if (FRAME_TTY (f)->termscript) @@ -4413,12 +4423,14 @@ scrolling_window (struct window *w, bool header_line_p) /* Update the desired frame matrix of frame F. FORCE_P means that the update should not be stopped by pending input. - INHIBIT_HAIRY_ID_P means that scrolling should not be tried. + INHIBIT_ID_P means that scrolling by insert/delete should not be tried. + SET_CURSOR_P false means do not set cursor at point in selected window. Value is true if update was stopped due to pending input. */ static bool -update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p) +update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p, + bool set_cursor_p) { /* Frame matrices to work on. */ struct glyph_matrix *current_matrix = f->current_matrix; @@ -4490,7 +4502,7 @@ update_frame_1 (struct frame *f, bool force_p, bool inhibit_id_p) pause_p = 0 < i && i < FRAME_LINES (f) - 1; /* Now just clean up termcap drivers and set cursor, etc. */ - if (!pause_p) + if (!pause_p && set_cursor_p) { if ((cursor_in_echo_area /* If we are showing a message instead of the mini-buffer, diff --git a/src/term.c b/src/term.c index 12cd2ce8508..8661cba1160 100644 --- a/src/term.c +++ b/src/term.c @@ -2907,8 +2907,7 @@ tty_menu_display (tty_menu *menu, int x, int y, int pn, int *faces, display_tty_menu_item (menu->text[j], max_width, face, x, y + i, menu->submenu[j] != NULL); } - update_frame_with_menu (sf); - cursor_to (sf, row, col); + update_frame_with_menu (sf, row, col); } /* --------------------------- X Menu emulation ---------------------- */ @@ -3079,7 +3078,7 @@ static void screen_update (struct frame *f, struct glyph_matrix *mtx) { restore_desired_matrix (f, mtx); - update_frame_with_menu (f); + update_frame_with_menu (f, -1, -1); } typedef enum { @@ -3228,7 +3227,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, /* Force update of the current frame, so that the desired and the current matrices are identical. */ - update_frame_with_menu (sf); + update_frame_with_menu (sf, -1, -1); state[0].menu = menu; state[0].screen_behind = save_and_enable_current_matrix (sf); @@ -3373,8 +3372,6 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, state[statecount - 1].y, state[statecount - 1].pane, faces, x, y, first_item, 1); - tty_hide_cursor (tty); - fflush (tty->output); /* The call to display help-echo below will move the cursor, so remember its current position as computed by tty_menu_display. */ @@ -3393,10 +3390,13 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx, item, so that screen readers and other accessibility aids know where the active region is. */ cursor_to (sf, row, col); - tty_hide_cursor (tty); - fflush (tty->output); prev_menu_help_message = menu_help_message; } + /* Both tty_menu_display and help_callback invoke update_end, + which calls tty_show_cursor. Re-hide it, so it doesn't show + through the menus. */ + tty_hide_cursor (tty); + fflush (tty->output); } sf->mouse_moved = 0; From 6032a3e83129a086629b96e67459083a223a1e03 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 4 Jun 2014 13:54:58 +0300 Subject: [PATCH 12/26] Fix infloop of -nw session at exit on MS-Windows under a debugger. src/sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter contains garbage on WINDOWSNT (which could potentially infloop at exit). --- src/ChangeLog | 4 ++++ src/sysdep.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 16e3328a735..c6a68f5b90c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,9 @@ 2014-06-04 Eli Zaretskii + * sysdep.c (reset_sys_modes): Use cursorX, not curX, as the latter + contains garbage on WINDOWSNT (which could potentially infloop at + exit). + Minimize cursor motion during TTY menu updates. * term.c (tty_menu_display): Don't position cursor here. Instead, pass the cursor coordinates to update_frame_with_menu. diff --git a/src/sysdep.c b/src/sysdep.c index 4e86dc903dc..e1fd86f5f3b 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1245,7 +1245,7 @@ reset_sys_modes (struct tty_display_info *tty_out) int i; tty_turn_off_insert (tty_out); - for (i = curX (tty_out); i < FrameCols (tty_out) - 1; i++) + for (i = cursorX (tty_out); i < FrameCols (tty_out) - 1; i++) { fputc (' ', tty_out->output); } From a56ae34d229242a065fc87d75d80d07ab14641fe Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Wed, 4 Jun 2014 19:44:04 +0300 Subject: [PATCH 13/26] nt/INSTALL: Instructions how to start Bash. --- nt/INSTALL | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/nt/INSTALL b/nt/INSTALL index 5abb4e491aa..f43912f6a1f 100644 --- a/nt/INSTALL +++ b/nt/INSTALL @@ -270,6 +270,19 @@ Windows 9X as well). Bash will find MSYS executables first, which is exactly what you need. +* Starting the MSYS Bash shell + + For most reliable and predictable results, we recommend to start + Bash by clicking the "MSYS" icon on your desktop. That icon is + created when you install MSYS, and using it is the official way of + running the MSYS tools. + + For other methods of starting the shell, make sure Bash is invoked + with the "--login" command-line switch. + + When the shell window opens and you get the shell prompt, change to + the directory where you intend to build Emacs. + At this point, you are ready to build Emacs in its basic configuration. If you want to build it with image support and other optional libraries, read about that near the end of this document. @@ -284,7 +297,7 @@ Windows 9X as well). auto-generated files. To generate the configure script, type this at the MSYS Bash prompt - from the top-level directory of the Emacs tree: + from the top-level directory of the Emacs source tree: ./autogen.sh From e1b3f35f9373d71f58638e9dcaffc2ff8c4ab3b6 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 4 Jun 2014 23:15:44 -0700 Subject: [PATCH 14/26] Some documentation for signing of packages * doc/emacs/package.texi (Package Menu, Package Installation): Mention signed packages. * doc/lispref/package.texi (Package Archives): Mention signing packages. * lisp/emacs-lisp/package.el (package-check-signature) (package-unsigned-archives): Doc fixes. * etc/NEWS: Related edits. --- doc/emacs/ChangeLog | 5 +++++ doc/emacs/package.texi | 40 ++++++++++++++++++++++++++++++++++++-- doc/lispref/ChangeLog | 4 ++++ doc/lispref/package.texi | 35 +++++++++++++++++++++++++++++++++ etc/NEWS | 17 +++++++++++++--- lisp/ChangeLog | 5 +++++ lisp/emacs-lisp/package.el | 9 +++++++-- 7 files changed, 108 insertions(+), 7 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 27168b00021..6ca98a3f24b 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,8 @@ +2014-06-05 Glenn Morris + + * package.texi (Package Menu, Package Installation): + Mention signed packages. + 2014-06-03 Glenn Morris * package.texi (Package Installation): Mention package-pinned-packages. diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 98e3c8ac706..9b7f541ac51 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -59,8 +59,9 @@ The package's version number (e.g., @samp{11.86}). @item The package's status---normally one of @samp{available} (can be -downloaded from the package archive), @samp{installed}, or -@samp{built-in} (included in Emacs by default). +downloaded from the package archive), @samp{installed}, +@samp{unsigned} (installed, but not signed; @pxref{Package Signing}), +or @samp{built-in} (included in Emacs by default). The status can also be @samp{new}. This is equivalent to @samp{available}, except that it means the package became newly @@ -167,6 +168,41 @@ directory name of the package archive. You can alter this list if you wish to use third party package archives---but do so at your own risk, and use only third parties that you think you can trust! +@anchor{Package Signing} +@cindex package security +@cindex package signing + The maintainers of package archives can increase the trust that you +can have in their packages by @dfn{signing} them. They generate a +private/public pair of crytopgraphic keys, and use the private key to +create a @dfn{signature file} for each package. With the public key, you +can use the signature files to verify who created the package, and +that it has not been modified. A valid signature is not a cast-iron +guarantee that a package is not malicious, so you should still +exercise caution. Package archives should provide instructions +on how you can obtain their public key. One way is to download the +key from a server such as @url{http://pgp.mit.edu/}. +Use @kbd{M-x package-import-keyring} to import the key into Emacs. +Emacs stores package keys in the @file{gnupg} subdirectory +of @code{package-user-dir}. +@c Uncomment this if it becomes true. +@ignore +The public key for the GNU package archive is distributed with Emacs, +in the @file{etc/package-keyring.gpg}. Emacs uses it automatically. +@end ignore + +@vindex package-check-signature +@vindex package-unsigned-archives + If the user option @code{package-check-signature} is non-@code{nil}, +Emacs attempts to verify signatures when you install packages. If the +option has the value @code{allow-unsigned}, you can still install a +package that is not signed. If you use some archives that do not sign +their packages, you can add them to the list @code{package-unsigned-archives}. + + For more information on crytopgraphic keys and signing, +@pxref{Top,, Top, gnupg, The GNU Privacy Guard Manual}. +Emacs comes with an interface to GNU Privacy Guard, +@pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}. + @vindex package-pinned-packages If you have more than one package archive enabled, and some of them offer different versions of the same package, you may find the option diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index e4f5c60c2d1..51f74f2eb12 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,7 @@ +2014-06-05 Glenn Morris + + * package.texi (Package Archives): Mention signing packages. + 2014-05-27 Glenn Morris * text.texi (Buffer Contents): diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index 4bc50b2358f..cac7519671a 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -342,3 +342,38 @@ otherwise, an error is raised. @noindent After you create an archive, remember that it is not accessible in the Package Menu interface unless it is in @code{package-archives}. + +@cindex package archive security +@cindex package signing +Maintaining a public package archive entails a degree of responsibility. +When Emacs users install packages from your archive, those packages +can cause Emacs to run arbitrary code with the permissions of the +installing user. (This is true for Emacs code in general, not just +for packages.) So you should ensure that your archive is +well-maintained and keep the hosting system secure. + + One way to increase the security of your packages is to @dfn{sign} +them using a crytopgraphic key. If you have generated a +private/public gpg key pair, you can use gpg to sign the package like +this: + +@c FIXME EasyPG / package-x way to do this. +@example +gpg -ba -o @var{file}.sig @var{file} +@end example + +@noindent +For a single-file package, @var{file} is the package Lisp file; +for a multi-file package, it is the package tar file. +You can also sign the archive's contents file in the same way. +Make the @file{.sig} files available in the same location as the packages. +You should also make your public key available for people to download; +e.g., by uploading it to a key server such as @url{http://pgp.mit.edu/}. +When people install packages from your archive, they can use +your public key to verify the signatures. + +A full explanation of these matters is outside the scope of this +manual. For more information on crytopgraphic keys and signing, +@pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}. Emacs comes +with an interface to GNU Privacy Guard, @pxref{Top,, EasyPG, epa, +Emacs EasyPG Assistant Manual}. diff --git a/etc/NEWS b/etc/NEWS index bb9784718fc..fce36903c2b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -816,13 +816,24 @@ Use `electric-indent-mode' instead. ** Package ++++ +*** The package library now supports digital signing of packages. +Maintainers of package archives should consider signing their packages +to enhance security. + ++++ +**** If the user option `package-check-signature' is non-nil, +Emacs tries to check package signatures at install time. +The value `allow-unsigned' allows installation of unsigned packages. + ++++ +**** The user option `package-unsigned-archives' lists archives where +Emacs will not try to check signatures. + +++ *** New option `package-pinned-packages'. This is useful if you have multiple archives enabled, with more than one offering a package that you want. -FIXME -*** New options `package-check-signature' and `package-unsigned-archives'. - +++ *** In the `list-packages' buffer, you can use `f' (`package-menu-filter') to filter the list of packages by a keyword. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6bb2147595d..1280e39ec27 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-05 Glenn Morris + + * emacs-lisp/package.el (package-check-signature) + (package-unsigned-archives): Doc fixes. + 2014-06-03 Martin Rudalics * window.el (display-buffer-use-some-window): Don't make window diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 028c57da19c..57a5429f0a1 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -292,7 +292,12 @@ contrast, `package-user-dir' contains packages for personal use." :version "24.1") (defcustom package-check-signature 'allow-unsigned - "Whether to check package signatures when installing." + "Non-nil means to check package signatures when installing. +The value `allow-unsigned' means to still install a package even if +it is unsigned. + +This also applies to the \"archive-contents\" file that lists the +contents of the archive." :type '(choice (const nil :tag "Never") (const allow-unsigned :tag "Allow unsigned") (const t :tag "Check always")) @@ -301,7 +306,7 @@ contrast, `package-user-dir' contains packages for personal use." :version "24.4") (defcustom package-unsigned-archives nil - "A list of archives which do not use package signature." + "List of archives where we do not check for package signatures." :type '(repeat (string :tag "Archive name")) :risky t :group 'package From 879f52734ce965beee611e78e5cfa132e9cbb024 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 5 Jun 2014 00:08:42 -0700 Subject: [PATCH 15/26] * lisp/emacs-lisp/package.el: Comment update --- lisp/emacs-lisp/package.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 57a5429f0a1..6985a2b58cc 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -113,8 +113,6 @@ ;;; ToDo: -;; - a trust mechanism, since compiling a package can run arbitrary code. -;; For example, download package signatures and check that they match. ;; - putting info dirs at the start of the info path means ;; users see a weird ordering of categories. OTOH we want to ;; override later entries. maybe emacs needs to enforce From 136c315e0be851b679a0ae0e8011ecc768e4b039 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 5 Jun 2014 01:14:36 -0700 Subject: [PATCH 16/26] Spelling fixes. --- doc/emacs/package.texi | 4 ++-- doc/lispref/package.texi | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index 9b7f541ac51..90bdafe456a 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -173,7 +173,7 @@ and use only third parties that you think you can trust! @cindex package signing The maintainers of package archives can increase the trust that you can have in their packages by @dfn{signing} them. They generate a -private/public pair of crytopgraphic keys, and use the private key to +private/public pair of cryptographic keys, and use the private key to create a @dfn{signature file} for each package. With the public key, you can use the signature files to verify who created the package, and that it has not been modified. A valid signature is not a cast-iron @@ -198,7 +198,7 @@ option has the value @code{allow-unsigned}, you can still install a package that is not signed. If you use some archives that do not sign their packages, you can add them to the list @code{package-unsigned-archives}. - For more information on crytopgraphic keys and signing, + For more information on cryptographic keys and signing, @pxref{Top,, Top, gnupg, The GNU Privacy Guard Manual}. Emacs comes with an interface to GNU Privacy Guard, @pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}. diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index cac7519671a..c92497a8ce3 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -353,7 +353,7 @@ for packages.) So you should ensure that your archive is well-maintained and keep the hosting system secure. One way to increase the security of your packages is to @dfn{sign} -them using a crytopgraphic key. If you have generated a +them using a cryptographic key. If you have generated a private/public gpg key pair, you can use gpg to sign the package like this: @@ -373,7 +373,7 @@ When people install packages from your archive, they can use your public key to verify the signatures. A full explanation of these matters is outside the scope of this -manual. For more information on crytopgraphic keys and signing, +manual. For more information on cryptographic keys and signing, @pxref{Top,, GnuPG, gnupg, The GNU Privacy Guard Manual}. Emacs comes with an interface to GNU Privacy Guard, @pxref{Top,, EasyPG, epa, Emacs EasyPG Assistant Manual}. From 9f7c9816f6e61841d47f221eaa27c2dc44e96dad Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 6 Jun 2014 02:31:46 +0300 Subject: [PATCH 17/26] * etc/themes/deeper-blue-theme.el (diff-added, diff-changed, diff-removed): Set face definitions explicitly. Inherit indicator faces from them. Fixes: debbugs:17695 --- etc/ChangeLog | 6 ++++++ etc/TODO | 2 +- etc/themes/deeper-blue-theme.el | 12 ++++++------ 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index dd703fc8f8e..9bc71271684 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-05 Juri Linkov + + * themes/deeper-blue-theme.el (diff-added, diff-changed, diff-removed): + Set face definitions explicitly. Inherit indicator faces from them. + (Bug#17695) + 2014-05-24 Paul Eggert Specify coding if Latin-1 Emacs would misinterpret (Bug#17575). diff --git a/etc/TODO b/etc/TODO index a0952e825e7..18dd54d4582 100644 --- a/etc/TODO +++ b/etc/TODO @@ -651,7 +651,7 @@ rather than interactively. This a trivial one-liner in easy-mode.el. [As of trunk r109635, 2012-08-15, the event loop no longer polls.] **** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back -up on top of all others +up on top of all others (probably fixed in bug#17439) **** free_frame_resources, face colors diff --git a/etc/themes/deeper-blue-theme.el b/etc/themes/deeper-blue-theme.el index 1e1a8b4cc98..95f9c260260 100644 --- a/etc/themes/deeper-blue-theme.el +++ b/etc/themes/deeper-blue-theme.el @@ -40,19 +40,19 @@ `(cperl-hash-face ((,class (:foreground "coral1")))) `(cursor ((,class (:background "green")))) `(default ((,class (:background "#181a26" :foreground "gray80")))) - `(diff-added ((,class (nil)))) - `(diff-changed ((,class (nil)))) + `(diff-added ((,class (:foreground "white" :background "darkolivegreen")))) + `(diff-changed ((,class (:foreground "white" :background "dodgerblue4")))) `(diff-context ((,class (:foreground "seashell4")))) `(diff-file-header ((,class (:background "grey60")))) `(diff-function ((,class (:inherit diff-header)))) `(diff-header ((,class (:background "grey45")))) `(diff-hunk-header ((,class (:inherit diff-header)))) `(diff-index ((,class (:inherit diff-file-header)))) - `(diff-indicator-added ((,class (:foreground "white" :background "darkolivegreen")))) - `(diff-indicator-changed ((,class (:foreground "white" :background "dodgerblue4")))) - `(diff-indicator-removed ((,class (:foreground "white" :background "indianred4")))) + `(diff-indicator-added ((,class (:inherit diff-added)))) + `(diff-indicator-changed ((,class (:inherit diff-changed)))) + `(diff-indicator-removed ((,class (:inherit diff-removed)))) `(diff-refine-change ((,class (:background "skyblue4")))) - `(diff-removed ((,class (nil)))) + `(diff-removed ((,class (:foreground "white" :background "indianred4")))) `(dired-marked ((,class (:background "dodgerblue3" :foreground "white")))) `(ediff-current-diff-A ((,class (:background "green4" :foreground "white")))) `(ediff-current-diff-B ((,class (:background "darkorange3" :foreground "white")))) From 137dcb47fb022fb99b62e3330915db80b018537e Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 5 Jun 2014 23:45:16 -0700 Subject: [PATCH 18/26] Document incompatible overlay priority change * doc/lispref/display.texi (Overlay Properties): Update re priority. * etc/NEWS: Related edit. Fixes: debbugs:17234 --- doc/lispref/ChangeLog | 4 ++++ doc/lispref/display.texi | 16 ++++++++++------ etc/NEWS | 8 ++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 51f74f2eb12..060dca1adcf 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,3 +1,7 @@ +2014-06-06 Glenn Morris + + * display.texi (Overlay Properties): Update re priority. (Bug#17234) + 2014-06-05 Glenn Morris * package.texi (Package Archives): Mention signing packages. diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index e93f9ab5a4d..35282138b1a 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1515,9 +1515,9 @@ of them: @table @code @item priority @kindex priority @r{(overlay property)} -This property's value determines the priority of the overlay. No priority, or -@code{nil}, means zero. A non-nil and non-integer value has -undefined behavior. +This property's value determines the priority of the overlay. +If you want to specify a priority value, use either @code{nil} +(or zero), or a positive integer. Any other value has undefined behavior. The priority matters when two or more overlays cover the same character and both specify the same property; the one whose @@ -1527,9 +1527,13 @@ completely override the other value; instead, its face attributes override the face attributes of the lower priority @code{face} property. -Currently, all overlays take priority over text properties. Please -avoid using negative priority values, as we have not yet decided just -what they should mean. +Currently, all overlays take priority over text properties. + +Note that Emacs sometimes uses non-numeric priority values for some of +its internal overlays, so do not try to do arithmetic on the +priority of an overlay (unless it is one that you created). If you +need to put overlays in priority order, use the @var{sorted} argument +of @code{overlays-at}. @xref{Finding Overlays}. @item window @kindex window @r{(overlay property)} diff --git a/etc/NEWS b/etc/NEWS index fce36903c2b..ebd816f5d65 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1149,6 +1149,12 @@ low-level libraries gfilenotify.c, inotify.c or w32notify.c. * Incompatible Lisp Changes in Emacs 24.4 ++++ +** Do not assume that the priority of all overlays will be numeric. +(You should still only specify integer priorities on overlays you create.) +If you need to sort arbitrary overlays into priority order, `overlays-at' +can now optionally do this. + --- ** `kill-region' has lost its `yank-handler' optional argument. @@ -1248,8 +1254,6 @@ the other. * Lisp Changes in Emacs 24.4 -** overlays-at can optionally sort its result by priority. - +++ ** The second argument of `eval' can now specify a lexical environment. From b4b5639746d502c97eb8a0d9cc3b4973ccf37665 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 5 Jun 2014 23:49:17 -0700 Subject: [PATCH 19/26] * admin/FOR-RELEASE: Mention ack.texi --- admin/FOR-RELEASE | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index e8a52fd23a1..b5bf6739a86 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -11,6 +11,10 @@ Check for node names using problematic characters: find doc -name '*.texi' -exec grep '^@node[^,]*[:.()]' {} + Sadly makeinfo does not warn about such characters. +Check for major new features added since the last release (e.g. new +lisp files), and add the relevant authors to the Acknowledgments in +doc/emacs/ack.texi and emacs.texi. + Check cross-references between the manuals (eg from emacs to elisp) are correct. You can use something like the following in the info directory in the Emacs build tree: From b83798031cae6d1297ae5746aebb34cca16c6ac9 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 6 Jun 2014 00:19:23 -0700 Subject: [PATCH 20/26] Doc updates re window-setup-hook * lisp/startup.el (window-setup-hook): Doc fix. * doc/lispref/display.texi (Window Systems): Remove window-setup-hook. * doc/lispref/os.texi (Startup Summary, Init File): Improve description of window-setup-hook. (Terminal-Specific): Update window-setup-hook cross-reference. * doc/lispref/hooks.texi (Standard Hooks): Update window-setup-hook cross-reference. --- doc/lispref/ChangeLog | 6 ++++++ doc/lispref/display.texi | 12 ------------ doc/lispref/hooks.texi | 4 +--- doc/lispref/os.texi | 12 ++++++++++-- lisp/ChangeLog | 4 ++++ lisp/startup.el | 9 ++++++--- 6 files changed, 27 insertions(+), 20 deletions(-) diff --git a/doc/lispref/ChangeLog b/doc/lispref/ChangeLog index 060dca1adcf..1e6b9f445c7 100644 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@ -1,5 +1,11 @@ 2014-06-06 Glenn Morris + * display.texi (Window Systems): Remove window-setup-hook. + * os.texi (Startup Summary, Init File): + Improve description of window-setup-hook. + (Terminal-Specific): Update window-setup-hook cross-reference. + * hooks.texi (Standard Hooks): Update window-setup-hook cross-reference. + * display.texi (Overlay Properties): Update re priority. (Bug#17234) 2014-06-05 Glenn Morris diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index 35282138b1a..b4f987bb2a8 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -6519,18 +6519,6 @@ indicator of Emacs capabilities on a given display type. Instead, use @code{display-graphic-p} or any of the other @code{display-*-p} predicates described in @ref{Display Feature Testing}. -@defvar window-setup-hook -This variable is a normal hook which Emacs runs after handling the -initialization files. Emacs runs this hook after it has completed -loading your init file, the default initialization file (if -any), and the terminal-specific Lisp code, and running the hook -@code{emacs-startup-hook}. - -This hook is used for internal purposes: setting up communication with -the window system, and creating the initial window. Users should not -interfere with it. -@end defvar - @node Bidirectional Display @section Bidirectional Display @cindex bidirectional display diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 9408174872d..547a2ffe442 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -55,6 +55,7 @@ not exactly a hook, but does a similar job. @item after-init-hook @itemx before-init-hook @itemx emacs-startup-hook +@itemx window-setup-hook @xref{Init File}. @item after-insert-file-functions @@ -220,9 +221,6 @@ Hook run when about to switch windows with a mouse command. @itemx window-size-change-functions @xref{Window Hooks}. -@item window-setup-hook -@xref{Window Systems}. - @item window-text-change-functions @vindex window-text-change-functions Functions to call in redisplay when text in the window might change. diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index c80dfda096c..272a356c7fe 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -218,7 +218,9 @@ parameters of the selected frame according to whatever the init files specify. @item -It runs @code{window-setup-hook}. @xref{Window Systems}. +It runs @code{window-setup-hook}. The only difference between this +hook and @code{emacs-startup-hook} is that this one runs after the +previously mentioned modifications to the frame parameters. @item @cindex startup screen @@ -411,6 +413,12 @@ This normal hook is run, once, just after handling the command line arguments. In batch mode, Emacs does not run this hook. @end defvar +@defvar window-setup-hook +This normal hook is very similar to @code{emacs-startup-hook}. +The only difference is that it runs slightly later, after setting +of the frame parameters. @xref{Startup Summary, window-setup-hook}. +@end defvar + @defvar user-init-file This variable holds the absolute file name of the user's init file. If the actual init file loaded is a compiled file, such as @file{.emacs.elc}, @@ -487,7 +495,7 @@ hook runs after loading your init file (if applicable) and the terminal-specific Lisp file, so you can use it to adjust the definitions made by that file. -For a related feature, @pxref{Window Systems, window-setup-hook}. +For a related feature, @pxref{Init File, window-setup-hook}. @end defvar @node Command-Line Arguments diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1280e39ec27..3b5df032e9c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2014-06-06 Glenn Morris + + * startup.el (window-setup-hook): Doc fix. + 2014-06-05 Glenn Morris * emacs-lisp/package.el (package-check-signature) diff --git a/lisp/startup.el b/lisp/startup.el index 129b54d974f..5f1bdeadbd3 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -302,9 +302,12 @@ keys for use under X. It is used in a fashion analogous to the environment variable TERM.") (defvar window-setup-hook nil - "Normal hook run to initialize window system display. -Emacs runs this hook after processing the command line arguments and loading -the user's init file.") + "Normal hook run after loading init files and handling the command line. +This is very similar to `emacs-startup-hook'. The only difference +is that this hook runs after frame parameters have been set up in +response to any settings from your init file. Unless this matters +to you, use `emacs-startup-hook' instead. (The name of this hook +is due to historical reasons, and does not reflect its purpose very well.)") (defcustom initial-major-mode 'lisp-interaction-mode "Major mode command symbol to use for the initial `*scratch*' buffer." From 28b83297264341b404856fd6e96dd366fa0c1fd0 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 6 Jun 2014 10:25:39 -0400 Subject: [PATCH 21/26] * lisp/international/mule-cmds.el (ucs-names): Add special entry for BEL. Fixes: debbugs:17702 --- lisp/ChangeLog | 5 +++++ lisp/international/mule-cmds.el | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3b5df032e9c..77b1585dcbe 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-06 Stefan Monnier + + * international/mule-cmds.el (ucs-names): Add special entry for BEL + (bug#17702). + 2014-06-06 Glenn Morris * startup.el (window-setup-hook): Doc fix. diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index f83e64e3921..0a2f09029da 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -2945,7 +2945,10 @@ on encoding." (if (setq name (get-char-code-property c 'name)) (push (cons name c) names)) (setq c (1+ c)))) - (setq ucs-names names)))) + ;; Special case for "BELL" which is apparently the only char which + ;; doesn't have a new name and whose old-name is shadowed by a newer + ;; char with that name. + (setq ucs-names `(("BELL (BEL)" . 7) ,@names))))) (defun read-char-by-name (prompt) "Read a character by its Unicode name or hex number string. From f4be80b783f23a54b18dfe43ca649a2f4f31b2a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Pay=C3=A0=20i=20Miralta?= Date: Fri, 6 Jun 2014 12:29:55 -0400 Subject: [PATCH 22/26] * lisp/vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and vc-hg-command. Fixes: debbugs:17570 --- lisp/ChangeLog | 5 +++++ lisp/vc/vc-hg.el | 13 +++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 77b1585dcbe..a3f061a7d93 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-06 Santiago Payà i Miralta + + * vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and + vc-hg-command (bug#17570). + 2014-06-06 Stefan Monnier * international/mule-cmds.el (ucs-names): Add special entry for BEL diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 05b53a3eeb6..b800c64c869 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -227,14 +227,11 @@ highlighting the Log View buffer." (defun vc-hg-working-revision (file) "Hg-specific version of `vc-working-revision'." - (let ((default-directory (if (file-directory-p file) - (file-name-as-directory file) - (file-name-directory file)))) - (ignore-errors - (with-output-to-string - (process-file vc-hg-program nil standard-output nil - "log" "-l" "1" "--template" "{rev}" - (file-relative-name file)))))) + (or (ignore-errors + (with-output-to-string + (vc-hg-command standard-output 0 file + "parent" "--template" "{rev}"))) + "0")) ;;; History functions From 7f11800984ed1805caaba36cd67d5dcc7c394d1d Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Sat, 7 Jun 2014 02:38:40 +0300 Subject: [PATCH 23/26] * lisp/desktop.el: Activate auto-saving on window configuration changes. (desktop-save-mode, desktop-auto-save-timeout): Add/remove `desktop-auto-save-set-timer' to/from `window-configuration-change-hook'. (desktop-auto-save-set-timer): Change REPEAT arg of `run-with-idle-timer' from t to nil. http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html --- lisp/ChangeLog | 9 +++++++++ lisp/desktop.el | 14 +++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index a3f061a7d93..6e89afc6715 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2014-06-06 Juri Linkov + + * desktop.el: Activate auto-saving on window configuration changes. + (desktop-save-mode, desktop-auto-save-timeout): Add/remove + `desktop-auto-save-set-timer' to/from `window-configuration-change-hook'. + (desktop-auto-save-set-timer): Change REPEAT arg of + `run-with-idle-timer' from t to nil. + http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00147.html + 2014-06-06 Santiago Payà i Miralta * vc/vc-hg.el (vc-hg-working-revision): Use "hg parent" and diff --git a/lisp/desktop.el b/lisp/desktop.el index ded73c065f0..d420a6416a9 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -174,7 +174,10 @@ For further details, see info node `(emacs)Saving Emacs Sessions'." :global t :group 'desktop (if desktop-save-mode - (desktop-auto-save-set-timer) + (when (and (integerp desktop-auto-save-timeout) + (> desktop-auto-save-timeout 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer)) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) (desktop-auto-save-cancel-timer))) (defun desktop-save-mode-off () @@ -207,13 +210,18 @@ determine where the desktop is saved." (defcustom desktop-auto-save-timeout auto-save-timeout "Number of seconds idle time before auto-save of the desktop. +The idle timer activates auto-saving only when window configuration changes. This applies to an existing desktop file when `desktop-save-mode' is enabled. Zero or nil means disable auto-saving due to idleness." :type '(choice (const :tag "Off" nil) (integer :tag "Seconds")) :set (lambda (symbol value) (set-default symbol value) - (ignore-errors (desktop-auto-save-set-timer))) + (ignore-errors + (if (and (integerp value) (> value 0)) + (add-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (remove-hook 'window-configuration-change-hook 'desktop-auto-save-set-timer) + (desktop-auto-save-cancel-timer)))) :group 'desktop :version "24.4") @@ -1244,7 +1252,7 @@ after that many seconds of idle time." (when (and (integerp desktop-auto-save-timeout) (> desktop-auto-save-timeout 0)) (setq desktop-auto-save-timer - (run-with-idle-timer desktop-auto-save-timeout t + (run-with-idle-timer desktop-auto-save-timeout nil 'desktop-auto-save)))) (defun desktop-auto-save-cancel-timer () From a0e26ff003c14925278c5bf5939615a4ccd0ac29 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 6 Jun 2014 23:10:39 -0700 Subject: [PATCH 24/26] Port better to AIX. * configure.ac (with_xpm_set): New shell var. (_THREAD_SAFE): Define on AIX if HAVE_PTHREAD. (with_xpm): Default to 'no' on AIX. (LIBXPM): Append -lXpm if -lXaw is also used, as the latter requires the former on AIX. Fixes: debbugs:17598 --- ChangeLog | 9 +++++++++ configure.ac | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ChangeLog b/ChangeLog index 30561d6ac13..77e54096116 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-06-07 Paul Eggert + + Port better to AIX (Bug#17598). + * configure.ac (with_xpm_set): New shell var. + (_THREAD_SAFE): Define on AIX if HAVE_PTHREAD. + (with_xpm): Default to 'no' on AIX. + (LIBXPM): Append -lXpm if -lXaw is also used, as the latter + requires the former on AIX. + 2014-05-30 Paul Eggert Fix port to 32-bit AIX with xlc (Bug#17598). diff --git a/configure.ac b/configure.ac index 3de3cb97c04..600271d1119 100644 --- a/configure.ac +++ b/configure.ac @@ -242,6 +242,7 @@ fi dnl _ON results in a '--without' option in the --help output, so dnl the help text should refer to "don't compile", etc. +with_xpm_set=${with_xpm+set} OPTION_DEFAULT_ON([xpm],[don't compile with XPM image support]) OPTION_DEFAULT_ON([jpeg],[don't compile with JPEG image support]) OPTION_DEFAULT_ON([tiff],[don't compile with TIFF image support]) @@ -2074,6 +2075,14 @@ if test "$HAVE_PTHREAD" = yes; then LIBS="$LIB_PTHREAD $LIBS" ;; esac AC_DEFINE(HAVE_PTHREAD, 1, [Define to 1 if you have pthread (-lpthread).]) + + # Some systems optimize for single-threaded programs by default, and + # need special flags to disable these optimizations. For example, the + # definition of 'errno' in . + if test "$opsys" = aix4-2; then + AC_DEFINE([_THREAD_SAFE], [1], + [Define to 1 if your system requires this in multithreaded code.]) + fi fi AC_SUBST([LIB_PTHREAD]) @@ -2984,6 +2993,9 @@ no_return_alloc_pixels fi if test "${HAVE_X11}" = "yes"; then + dnl Avoid Xpm on AIX unless requested, as it crashes; see Bug#17598. + test "$opsys$with_xpm_set" = aix4-2 && with_xpm=no + if test "${with_xpm}" != "no"; then AC_CHECK_HEADER(X11/xpm.h, [AC_CHECK_LIB(Xpm, XpmReadFileToPixmap, HAVE_XPM=yes, , -lX11)]) @@ -3007,6 +3019,9 @@ no_return_alloc_pixels if test "${HAVE_XPM}" = "yes"; then AC_DEFINE(HAVE_XPM, 1, [Define to 1 if you have the Xpm library (-lXpm).]) LIBXPM=-lXpm + elif test "$opsys,$LUCID_LIBW" = aix4-2,-lXaw; then + dnl AIX -lXaw needs -lXpm linked too; see Bug#17598 Message#152. + LIBXPM=-lXpm fi fi From bc257cae1cf60239ff79bc052483542d267d1cf5 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 7 Jun 2014 16:39:40 -0700 Subject: [PATCH 25/26] Doc tweaks re prettify-symbols-mode * doc/emacs/programs.texi (Prettifying Symbols): Remove node. (Misc for Programs): Mention more briefly here. * doc/emacs emacs.texi (Top): Update menu. --- doc/emacs/ChangeLog | 6 ++++++ doc/emacs/emacs.texi | 1 - doc/emacs/programs.texi | 43 +++++++++++------------------------------ 3 files changed, 17 insertions(+), 33 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 6ca98a3f24b..1b3e82d4a1f 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,9 @@ +2014-06-07 Glenn Morris + + * programs.texi (Prettifying Symbols): Remove node. + (Misc for Programs): Mention more briefly here. + * emacs.texi (Top): Update menu. + 2014-06-05 Glenn Morris * package.texi (Package Menu, Package Installation): diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index d665a9dedaf..7785d74c14b 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -670,7 +670,6 @@ Editing Programs * Symbol Completion:: Completion on symbol names of your program or language. * MixedCase Words:: Dealing with identifiersLikeThis. * Semantic:: Suite of editing tools based on source code parsing. -* Prettifying Symbols:: Display symbols as composed characters. * Misc for Programs:: Other Emacs features useful for editing programs. * C Modes:: Special commands of C, C++, Objective-C, Java, IDL, Pike and AWK modes. diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 82bde754909..05008790b4f 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -38,7 +38,6 @@ Highlight program syntax (@pxref{Font Lock}). * Symbol Completion:: Completion on symbol names of your program or language. * MixedCase Words:: Dealing with identifiersLikeThis. * Semantic:: Suite of editing tools based on source code parsing. -* Prettifying Symbols:: Display symbols as composed characters. * Misc for Programs:: Other Emacs features useful for editing programs. * C Modes:: Special commands of C, C++, Objective-C, Java, IDL, Pike and AWK modes. @@ -1434,37 +1433,6 @@ is idle. @xref{Top, Semantic,, semantic, Semantic}, for details. @end ifnottex -@node Prettifying Symbols -@section Prettifying Symbols -@cindex prettifying symbols -@cindex symbol, prettifying - -@code{prettify-symbols-mode} and @code{global-prettify-symbols-mode} -are two minor modes (@pxref{Minor Modes}) that can display specified -symbols as composed characters. For instance, in Emacs Lisp mode -(@pxref{Lisp Eval}), this mode will replace the string ``lambda'' with -the Greek lambda character. - -@findex prettify-symbols-mode -@vindex prettify-symbols-alist -When Prettify Symbols mode and Font Lock mode (@pxref{Font Lock}) are -enabled, symbols are prettified (displayed as composed characters) -according to the rules in @code{prettify-symbols-alist}, which are -locally defined by major modes (@pxref{Major Modes}) supporting -prettifying. To add further customizations for a given major mode, -you can modify @code{prettify-symbols-alist}. For example: - -@example -(add-hook 'emacs-lisp-mode-hook - (lambda () - (push '("<=" . ?≤) prettify-symbols-alist))) -@end example - -@findex global-prettify-symbols-mode -You can enable this mode locally in desired buffers, or use -@code{global-prettify-symbols-mode} to enable it for all modes that -support it. - @node Misc for Programs @section Other Features Useful for Editing Programs @@ -1512,6 +1480,17 @@ with the Foldout package (@pxref{Foldout}). @xref{Top,,Autotyping, autotype, Autotyping}. @end ifinfo +@findex prettify-symbols-mode + Prettify Symbols mode is a buffer-local minor mode that replaces +certain strings with more ``attractive'' versions for display +purposes. For example, in Emacs Lisp mode, it replaces the string +``lambda'' with the Greek lambda character. You may wish to use this +in non-programming modes as well. You can customize the mode by +adding more entries to @code{prettify-symbols-alist}. There is also a +global version, @code{global-prettify-symbols-mode}, which enables the +mode in all buffers that support it. + + @node C Modes @section C and Related Modes @cindex C mode From da8de2908c35ad1fd5c437486d2ea5f6ebb75ca3 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 7 Jun 2014 17:19:17 -0700 Subject: [PATCH 26/26] Some Acknowledgments updates for the manual * doc/emacs/ack.texi (Acknowledgments): Updates. * doc/emacs/emacs.texi (Acknowledgments): Updates. --- doc/emacs/ChangeLog | 5 +++++ doc/emacs/ack.texi | 46 +++++++++++++++++++++++++++++--------------- doc/emacs/emacs.texi | 14 ++++++++------ 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog index 1b3e82d4a1f..c168c51127a 100644 --- a/doc/emacs/ChangeLog +++ b/doc/emacs/ChangeLog @@ -1,3 +1,8 @@ +2014-06-08 Glenn Morris + + * ack.texi (Acknowledgments): + * emacs.texi (Acknowledgments): Updates. + 2014-06-07 Glenn Morris * programs.texi (Prettifying Symbols): Remove node. diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index 0ec2cf8624a..ccd58b7aece 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -15,7 +15,7 @@ We thank them for their generosity as well. This list is intended to mention every contributor of a major package or feature we currently distribute; if you know of someone we have omitted, -please report that as a manual bug. More comprehensive information is +please make a bug report. More comprehensive information is available in the @file{ChangeLog} files, summarized in the file @file{etc/AUTHORS} in the distribution. @@ -51,12 +51,12 @@ files. @item Michael Albinus wrote @file{dbus.el}, a package that implements the D-Bus message bus protocol; @file{zeroconf.el}, a mode for browsing -Avahi services; -and @file{secrets.el}, an interface to keyring daemons for -storing confidential data. He and Kai Großjohann wrote the Tramp package, which -provides transparent remote file editing using rcp, ssh, ftp, and -other network protocols. He and Daniel Pittman wrote -@file{tramp-cache.el}. +Avahi services; @file{secrets.el}, an interface to keyring daemons for +storing confidential data; and @file{filenotify.el} and the associated +low-level interface routines, for watching file status changes. +He and Kai Großjohann wrote the Tramp package, which provides +transparent remote file editing using ssh, ftp, and other network +protocols. He and Daniel Pittman wrote @file{tramp-cache.el}. @item Ralf Angeli wrote @file{scroll-lock.el}, a minor mode which keeps the @@ -88,7 +88,8 @@ moving the mouse in particular patterns. @item Juanma Barranquero wrote @file{emacs-lock.el} (based on the original version by Tom Wurgler), which makes it harder to exit with valuable -buffers unsaved. He also made many other contributions to other +buffers unsaved; and @file{frameset.el}, for saving and restoring the +frame/window setup. He also made many other contributions to other areas, including MS Windows support. @item @@ -203,7 +204,9 @@ for Korean Hanja. @item Andrew Choi and Yamamoto Mitsuharu wrote the Carbon support, used -prior to Emacs 23 for Mac OS. +prior to Emacs 23 for Mac OS. Yamamoto Mitsuharu continued to +contribute to Mac OS support in the newer Nextstep port; and also +improved support for multi-monitor displays. @item Chong Yidong was the Emacs co-maintainer from Emacs 23 to 24.3. He made many @@ -350,6 +353,10 @@ Gary Foster wrote @file{crisp.el}, the emulation for CRiSP and Brief editors; and @file{scroll-all.el}, a mode for scrolling several buffers together. +@item +Romain Francoise contributed ACL (Access Control List) support, +for preserving extended file attributes on backup and copy. + @item Noah Friedman wrote @file{rlogin.el}, an interface to Rlogin, @file{type-break.el}, which reminds you to take periodic breaks from @@ -511,13 +518,14 @@ Emacs, including: @file{dns.el} for Domain Name Service lookups; @file{time-date.el} for general date and time handling. He also wrote @file{network-stream.el}, for opening network processes; @file{url-queue.el}, for controlling parallel downloads of URLs; -and implemented libxml2 support. +and implemented libxml2 support. He also wrote @file{eww.el}, +an Emacs Lisp web browser; and implemented native zlib decompression. Components of Gnus have also been written by: Nagy Andras, David Blacka, Scott Byer, Ludovic Courtès, Julien Danjou, Kevin Greiner, Kai Großjohann, Joe Hildebrand, Paul Jarc, Simon Josefsson, Sascha Lüdecke, David Moore, Jim Radford, Benjamin Rutt, Raymond Scholz, -Thomas Steffen, Reiner Steib, Didier Verna, Ilja Weis, Katsumi -Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the +Thomas Steffen, Reiner Steib, Jan Tatarik, Didier Verna, Ilja Weis, +Katsumi Yamaoka, Teodor Zlatanov, and others (@pxref{Contributors,,,gnus, the Gnus Manual}). @item @@ -696,6 +704,10 @@ searches; the code in @file{files-x.el} for handling file- and directory-local variables; and the @code{info-finder} feature that creates a virtual Info manual of package keywords. +@item +Leo Liu wrote @file{pcmpl-x.el}, providing completion for +miscellaneous external tools; and revamped support for Octave in Emacs 24.4. + @item Károly Lőrentey wrote the ``multi-terminal'' code, which allows Emacs to run on graphical and text terminals simultaneously. @@ -841,8 +853,8 @@ client for the ``Music Player Daemon''; @file{smie.el}, a generic indentation engine; and @file{pcase.el}, implementing ML-style pattern matching. In Emacs 24, he integrated the lexical binding code, cleaned up the CL namespace (making it acceptable to use CL -functions at runtime), and added generalized variables to core Emacs -Lisp. +functions at runtime), added generalized variables to core Emacs +Lisp, and implemented a new lightweight advice mechanism. @item Morioka Tomohiko wrote several packages for MIME support in Gnus and @@ -1048,7 +1060,8 @@ Guillermo J. Rozas wrote @file{scheme.el}, a mode for editing Scheme and DSSSL code. @item -Martin Rudalics implemented improved display-buffer handling in Emacs 24. +Martin Rudalics implemented improved display-buffer handling in Emacs 24; +and implemented ``pixel-wise'' resizing of windows and frames. @item Ivar Rummelhoff wrote @file{winner.el}, which records recent window @@ -1400,7 +1413,8 @@ zone out in front of Emacs. Eli Zaretskii made many standard Emacs features work on MS-DOS and Microsoft Windows. He also wrote @file{tty-colors.el}, which implements transparent mapping of X colors to tty colors; and -@file{rxvt.el}. He implemented support for bidirectional text. +@file{rxvt.el}. He implemented support for bidirectional text, +and also menus on text-mode terminals. @item Jamie Zawinski wrote much of the support for faces and X selections. diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 7785d74c14b..023974fec84 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -1366,12 +1366,14 @@ USA @node Acknowledgments @unnumberedsec Acknowledgments +@c It's hard to update this fairly. +@c I wonder if it would be better to drop it in favor of AUTHORS? Contributors to GNU Emacs include Jari Aalto, Per Abrahamsen, Tomas Abrahamsson, Jay K. Adams, Alon Albert, Michael Albinus, Nagy Andras, Benjamin Andresen, Ralf Angeli, Dmitry Antipov, Joe Arceneaux, Emil Åström, Miles Bader, David Bakhash, Juanma Barranquero, Eli Barzilay, Thomas Baumann, Steven L. Baur, Jay Belanger, Alexander L. Belikoff, -Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Karl +Thomas Bellman, Scott Bender, Boaz Ben-Zvi, Sergey Berezin, Stephen Berman, Karl Berry, Anna M. Bigatti, Ray Blaak, Martin Blais, Jim Blandy, Johan Bockgård, Jan Böcker, Joel Boehland, Lennart Borgman, Per Bothner, Terrence Brannon, Frank Bresz, Peter Breton, Emmanuel Briot, Kevin @@ -1391,13 +1393,13 @@ Eglen, Christian Egli, Torbjörn Einarsson, Tsugutomo Enami, David Engster, Hans Henrik Eriksen, Michael Ernst, Ata Etemadi, Frederick Farnbach, Oscar Figueiredo, Fred Fish, Steve Fisk, Karl Fogel, Gary Foster, Eric S. Fraga, Romain Francoise, Noah Friedman, Andreas -Fuchs, Shigeru Fukaya, Hallvard Furuseth, Keith Gabryelski, Peter S. +Fuchs, Shigeru Fukaya, Xue Fuqiao, Hallvard Furuseth, Keith Gabryelski, Peter S. Galbraith, Kevin Gallagher, Fabián E. Gallina, Kevin Gallo, Juan León Lahoz García, Howard Gayle, Daniel German, Stephen Gildea, Julien Gilles, David Gillespie, Bob Glickstein, Deepak Goel, David De La Harpe Golden, Boris Goldowsky, David Goodger, Chris Gray, Kevin Greiner, Michelangelo Grigni, Odd Gripenstam, Kai Großjohann, Michael Gschwind, Bastien Guerry, Henry -Guillaume, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris +Guillaume, Dmitry Gutov, Doug Gwyn, Bruno Haible, Ken'ichi Handa, Lars Hansen, Chris Hanson, Jesper Harder, Alexandru Harsanyi, K. Shane Hartman, John Heidemann, Jon K. Hellan, Magnus Henoch, Markus Heritsch, Dirk Herrmann, Karl Heuer, Manabu Higashida, Konrad Hinsen, Anders Holst, @@ -1415,14 +1417,14 @@ Ryszard Kubiak, Igor Kuzmin, David Kågedal, Daniel LaLiberte, Karl Landstrom, Mario Lang, Aaron Larson, James R. Larus, Vinicius Jose Latorre, Werner Lemberg, Frederic Lepied, Peter Liljenberg, Christian Limpach, Lars Lindberg, Chris Lindblad, Anders Lindgren, Thomas Link, -Juri Linkov, Francis Litterio, Sergey Litvinov, Emilio C. Lopes, +Juri Linkov, Francis Litterio, Sergey Litvinov, Leo Liu, Emilio C. Lopes, Martin Lorentzon, Dave Love, Eric Ludlam, Károly Lőrentey, Sascha Lüdecke, Greg McGary, Roland McGrath, Michael McNamara, Alan Mackenzie, Christopher J. Madsen, Neil M. Mager, Ken Manheimer, Bill Mann, Brian Marick, Simon Marshall, Bengt Martensson, Charlie Martin, Yukihiro Matsumoto, Tomohiro Matsuyama, David Maus, Thomas May, Will Mengarini, David Megginson, Stefan Merten, Ben A. Mesander, Wayne Mesard, Brad -Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Stefan +Miller, Lawrence Mitchell, Richard Mlynarik, Gerd Möllmann, Dani Moncayo, Stefan Monnier, Keith Moore, Jan Moringen, Morioka Tomohiko, Glenn Morris, Don Morrison, Diane Murray, Riccardo Murri, Sen Nagata, Erik Naggum, Gergely Nagy, Nobuyoshi Nakada, Thomas Neumann, Mike Newton, Thien-Thi Nguyen, @@ -1453,7 +1455,7 @@ South, Andre Spiegel, Michael Staats, Thomas Steffen, Ulf Stegemann, Reiner Steib, Sam Steingold, Ake Stenhoff, Peter Stephenson, Ken Stevens, Andy Stewart, Jonathan Stigelman, Martin Stjernholm, Kim F. Storm, Steve Strassmann, Christopher Suckling, Olaf Sylvester, Naoto -Takahashi, Steven Tamm, Luc Teirlinck, Jean-Philippe Theberge, Jens +Takahashi, Steven Tamm, Jan Tatarik, Luc Teirlinck, Jean-Philippe Theberge, Jens T. Berger Thielemann, Spencer Thomas, Jim Thompson, Toru Tomabechi, David O'Toole, Markus Triska, Tom Tromey, Enami Tsugutomo, Eli Tziperman, Daiki Ueno, Masanobu Umeda, Rajesh Vaidheeswarran, Neil