------------------------------------------------------------ revno: 116574 committer: Glenn Morris branch nick: trunk timestamp: Thu 2014-02-27 00:09:11 -0800 message: * etc/NEWS: Copyedit. diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-02-27 08:01:22 +0000 +++ etc/NEWS 2014-02-27 08:09:11 +0000 @@ -1178,10 +1178,12 @@ The default `crm-separator' has been changed to allow surrounding spaces around the comma. -*** The `common-substring' arg of `display-completion-list' is obsolete. -Either use `completion-all-completions', which returns highlighted -strings (including for partial or substring completion), or call -`completion-hilit-commonality' to add the highlight. +*** The `common-substring' argument of `display-completion-list', +which has been documented as obsolete since Emacs 23.1, is now _really_ +obsolete, and no longer advertised. Instead use either +`completion-all-completions', which returns highlighted strings (including +for partial or substring completion), or call `completion-hilit-commonality' +to add the highlight. +++ *** New function `completion-table-with-cache' is a wrapper for ------------------------------------------------------------ revno: 116573 committer: Glenn Morris branch nick: trunk timestamp: Thu 2014-02-27 00:01:22 -0800 message: Small doc related to new completion functions * doc/lispref/minibuf.texi (Programmed Completion): Mention completion-table-with-cache. * lisp/minibuffer.el (completion-table-dynamic) (completion-table-with-cache): Doc fixes. * etc/NEWS: Related markup. Unrelated copyedit. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2014-02-25 08:41:47 +0000 +++ doc/lispref/ChangeLog 2014-02-27 08:01:22 +0000 @@ -1,3 +1,8 @@ +2014-02-27 Glenn Morris + + * minibuf.texi (Programmed Completion): + Mention completion-table-with-cache. + 2014-02-25 Glenn Morris * display.texi (Window Systems): === modified file 'doc/lispref/minibuf.texi' --- doc/lispref/minibuf.texi 2014-02-17 18:04:17 +0000 +++ doc/lispref/minibuf.texi 2014-02-27 08:01:22 +0000 @@ -1814,6 +1814,13 @@ and the interface for programmed completion functions. @end defun +@defun completion-table-with-cache function &optional ignore-case +This is a wrapper for @code{completion-table-dynamic} that saves the +last argument-result pair. This means that multiple lookups with the +same argument only need to call @var{function} once. This can be useful +when a slow operation is involved, such as calling an external process. +@end defun + @node Completion in Buffers @subsection Completion in Ordinary Buffers @cindex inline completion === modified file 'etc/NEWS' --- etc/NEWS 2014-02-27 07:42:57 +0000 +++ etc/NEWS 2014-02-27 08:01:22 +0000 @@ -1183,15 +1183,17 @@ strings (including for partial or substring completion), or call `completion-hilit-commonality' to add the highlight. ++++ *** New function `completion-table-with-cache' is a wrapper for `completion-table-dynamic' that caches the result of the last lookup. ++++ *** New function `completion-table-merge' to combine several completion tables by merging their completions. ** New minor modes `prettify-symbols-mode' and `global-prettify-symbols-mode' -let you enable symbol prettification (replacing a string like "lambda" with -the Greek lambda character). +display specified symbols as composed characters. E.g., in Emacs Lisp mode, +this replaces the string "lambda" with the Greek lambda character. ** Terminal changes === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-27 07:42:57 +0000 +++ lisp/ChangeLog 2014-02-27 08:01:22 +0000 @@ -1,5 +1,8 @@ 2014-02-27 Glenn Morris + * minibuffer.el (completion-table-dynamic) + (completion-table-with-cache): Doc fixes. + * emacs-lisp/crm.el (crm-default-separator, crm-separator) (completing-read-multiple): Doc fixes. === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-02-26 21:31:22 +0000 +++ lisp/minibuffer.el 2014-02-27 08:01:22 +0000 @@ -179,7 +179,9 @@ The result of the `completion-table-dynamic' form is a function that can be used as the COLLECTION argument to `try-completion' and -`all-completions'. See Info node `(elisp)Programmed Completion'." +`all-completions'. See Info node `(elisp)Programmed Completion'. + +See also the related function `completion-table-with-cache'." (lambda (string pred action) (if (or (eq (car-safe action) 'boundaries) (eq action 'metadata)) ;; `fun' is not supposed to return another function but a plain old @@ -191,13 +193,15 @@ (complete-with-action action (funcall fun string) string pred))))) (defun completion-table-with-cache (fun &optional ignore-case) - "Create dynamic completion table from FUN, with cache. -This wraps `completion-table-dynamic', but saves the last + "Create dynamic completion table from function FUN, with cache. +This is a wrapper for `completion-table-dynamic' that saves the last argument-result pair from FUN, so that several lookups with the same argument (or with an argument that starts with the first one) -only need to call FUN once. Most useful when FUN performs a relatively -slow operation, such as calling an external process (see Bug#11906). +only need to call FUN once. This can be useful when FUN performs a +relatively slow operation, such as calling an external process. + When IGNORE-CASE is non-nil, FUN is expected to be case-insensitive." + ;; See eg bug#11906. (let* (last-arg last-result (new-fun (lambda (arg) ------------------------------------------------------------ revno: 116572 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 23:42:57 -0800 message: Some crm.el doc * lisp/emacs-lisp/crm.el: Remove commentary that duplicates doc strings. (crm-default-separator, crm-separator) (completing-read-multiple): Doc fixes. * etc/NEWS: Related edit. diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-02-26 20:02:56 +0000 +++ etc/NEWS 2014-02-27 07:42:57 +0000 @@ -1173,8 +1173,9 @@ ** Completion changes -*** The separator for `completing-read-multiple' can now be a regexp. -The default separator has been changed to allow surrounding spaces +--- +*** The separator used by `completing-read-multiple' is now a regexp. +The default `crm-separator' has been changed to allow surrounding spaces around the comma. *** The `common-substring' arg of `display-completion-list' is obsolete. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-27 05:20:20 +0000 +++ lisp/ChangeLog 2014-02-27 07:42:57 +0000 @@ -1,3 +1,8 @@ +2014-02-27 Glenn Morris + + * emacs-lisp/crm.el (crm-default-separator, crm-separator) + (completing-read-multiple): Doc fixes. + 2014-02-27 Daniel Colascione * minibuffer.el (completion--nth-completion): Fix indentation. === modified file 'lisp/emacs-lisp/crm.el' --- lisp/emacs-lisp/crm.el 2014-02-27 04:17:40 +0000 +++ lisp/emacs-lisp/crm.el 2014-02-27 07:42:57 +0000 @@ -24,27 +24,7 @@ ;; This code defines a function, `completing-read-multiple', which ;; provides the ability to read multiple strings in the minibuffer, -;; with completion. - -;; By using this functionality, a user may specify multiple strings at -;; a single prompt, optionally using completion. - -;; Multiple strings are specified by separating each of the strings -;; with a prespecified separator regexp. For example, if the -;; separator regexp is ",", the strings 'alice', 'bob', and -;; 'eve' would be specified as 'alice,bob,eve'. - -;; The default value for the separator regexp is the value of -;; `crm-default-separator' (comma). The separator regexp may be -;; changed by modifying the value of `crm-separator'. - -;; Contiguous strings of non-separator-characters are referred to as -;; 'elements'. In the aforementioned example, the elements are: -;; 'alice', 'bob', and 'eve'. - -;; Completion is available on a per-element basis. For example, if -;; the contents of the minibuffer are 'alice,bob,eve' and point is -;; between 'l' and 'i', pressing TAB operates on the element 'alice'. +;; with completion. See that function's documentation for details. ;; For the moment, I have decided to not bind any special behavior to ;; the separator key. In the future, the separator key might be used @@ -96,14 +76,16 @@ ;; first revamped version ;;; Code: + +;; FIXME I don't see that this needs to exist as a separate variable. +;; crm-separator should suffice. (defconst crm-default-separator "[ \t]*,[ \t]*" - "Default separator regexp for `completing-read-multiple'.") + "Default value of `crm-separator'.") (defvar crm-separator crm-default-separator "Separator regexp used for separating strings in `completing-read-multiple'. It should be a regexp that does not match the list of completion candidates. -Modify this value to make `completing-read-multiple' use a separator other -than `crm-default-separator'.") +The default value is `crm-default-separator'.") (defvar crm-local-completion-map (let ((map (make-sparse-keymap))) @@ -247,32 +229,22 @@ (prompt table &optional predicate require-match initial-input hist def inherit-input-method) "Read multiple strings in the minibuffer, with completion. -By using this functionality, a user may specify multiple strings at a -single prompt, optionally using completion. +The arguments are the same as those of `completing-read'. \\ -Multiple strings are specified by separating each of the strings with -a prespecified separator regexp. For example, if the separator -regexp is \",\", the strings 'alice', 'bob', and 'eve' would be -specified as 'alice,bob,eve'. - -The default value for the separator regexp is the value of -`crm-default-separator'. You can change the separator regexp by -modifying the value of `crm-separator'. - -Contiguous strings of non-separator-characters are referred to as -'elements'. In the aforementioned example, the elements are: 'alice', -'bob', and 'eve'. +Input multiple strings by separating each one with a string that +matches the regexp `crm-separator'. For example, if the separator +regexp is \",\", entering \"alice,bob,eve\" specifies the strings +\"alice\", \"bob\", and \"eve\". + +We refer to contiguous strings of non-separator-characters as +\"elements\". In this example there are three elements. Completion is available on a per-element basis. For example, if the -contents of the minibuffer are 'alice,bob,eve' and point is between -'l' and 'i', pressing TAB operates on the element 'alice'. - -The return value of this function is a list of the read strings -with empty strings removed. - -See the documentation for `completing-read' for details on the arguments: -PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-INPUT, HIST, DEF, and -INHERIT-INPUT-METHOD." +contents of the minibuffer are \"alice,bob,eve\" and point is between +\"l\" and \"i\", pressing \\[minibuffer-complete] operates on the element \"alice\". + +This function returns a list of the strings that were read, +with empty strings removed." (unwind-protect (progn (add-hook 'choose-completion-string-functions ------------------------------------------------------------ revno: 116571 [merge] committer: Daniel Colascione branch nick: trunk timestamp: Wed 2014-02-26 21:20:20 -0800 message: Fix tramp bug with empty explicit path diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-27 04:17:40 +0000 +++ lisp/ChangeLog 2014-02-27 05:20:20 +0000 @@ -1,3 +1,10 @@ +2014-02-27 Daniel Colascione + + * minibuffer.el (completion--nth-completion): Fix indentation. + + * net/tramp-sh.el (tramp-get-remote-path): Don't signal error when + explicit tramp path is empty. + 2014-02-27 Glenn Morris * emacs-lisp/crm.el (completing-read-multiple): === modified file 'lisp/minibuffer.el' --- lisp/minibuffer.el 2014-02-24 15:41:46 +0000 +++ lisp/minibuffer.el 2014-02-26 21:31:22 +0000 @@ -850,12 +850,12 @@ (setq table (pop new)) (setq point (pop new)) (pop new)))) - (result - (completion--some (lambda (style) - (funcall (nth n (assq style - completion-styles-alist)) - string table pred point)) - (completion--styles metadata)))) + (result + (completion--some (lambda (style) + (funcall (nth n (assq style + completion-styles-alist)) + string table pred point)) + (completion--styles metadata)))) (if requote (funcall requote result n) result))) === modified file 'lisp/net/tramp-sh.el' --- lisp/net/tramp-sh.el 2014-02-24 15:48:32 +0000 +++ lisp/net/tramp-sh.el 2014-02-27 05:11:50 +0000 @@ -4846,7 +4846,7 @@ (when elt1 (setcdr elt1 (append - (tramp-compat-split-string default-remote-path ":") + (tramp-compat-split-string (or default-remote-path "") ":") (cdr elt1))) (setq remote-path (delq 'tramp-default-remote-path remote-path))) @@ -4854,7 +4854,7 @@ (when elt2 (setcdr elt2 (append - (tramp-compat-split-string own-remote-path ":") + (tramp-compat-split-string (or own-remote-path "") ":") (cdr elt2))) (setq remote-path (delq 'tramp-own-remote-path remote-path))) ------------------------------------------------------------ revno: 116570 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 20:17:40 -0800 message: * emacs-lisp/crm.el (completing-read-multiple): Empower help-enable-auto-load. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-26 19:45:18 +0000 +++ lisp/ChangeLog 2014-02-27 04:17:40 +0000 @@ -1,3 +1,8 @@ +2014-02-27 Glenn Morris + + * emacs-lisp/crm.el (completing-read-multiple): + Empower help-enable-auto-load. + 2014-02-26 Glenn Morris * startup.el (command-line): Don't init the tty in daemon mode. === modified file 'lisp/emacs-lisp/crm.el' --- lisp/emacs-lisp/crm.el 2014-01-01 07:43:34 +0000 +++ lisp/emacs-lisp/crm.el 2014-02-27 04:17:40 +0000 @@ -240,6 +240,8 @@ t)) ;; superemulates behavior of completing_read in src/minibuf.c +;; Use \\ so that help-enable-auto-load can +;; do its thing. Any keymap that is defined will do. ;;;###autoload (defun completing-read-multiple (prompt table &optional predicate require-match initial-input @@ -247,15 +249,15 @@ "Read multiple strings in the minibuffer, with completion. By using this functionality, a user may specify multiple strings at a single prompt, optionally using completion. - +\\ Multiple strings are specified by separating each of the strings with a prespecified separator regexp. For example, if the separator regexp is \",\", the strings 'alice', 'bob', and 'eve' would be specified as 'alice,bob,eve'. The default value for the separator regexp is the value of -`crm-default-separator' (comma). The separator regexp may be -changed by modifying the value of `crm-separator'. +`crm-default-separator'. You can change the separator regexp by +modifying the value of `crm-separator'. Contiguous strings of non-separator-characters are referred to as 'elements'. In the aforementioned example, the elements are: 'alice', ------------------------------------------------------------ revno: 116569 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 15:02:56 -0500 message: NEWS markup diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-02-25 08:41:47 +0000 +++ etc/NEWS 2014-02-26 20:02:56 +0000 @@ -826,6 +826,7 @@ *** `C-x 8 RET' in Isearch mode reads a character by its Unicode name and adds it to the search string. ++++ *** `M-s i' in Isearch mode toggles whether search matches invisible text. *** `query-replace' skips invisible text when `search-invisible' is nil, @@ -1349,6 +1350,7 @@ *** Face specs set via Custom themes now replace the `defface' spec rather than inheriting from it (as do face specs set via Customize). +--- *** New face characteristic (supports :underline (:style wave)) specifies whether or not the terminal can display a wavy line. ------------------------------------------------------------ revno: 116568 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 14:45:18 -0500 message: * lisp/startup.el (command-line): Don't init the tty in daemon mode. Ref: http://debbugs.gnu.org/16859#15 diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-26 19:40:56 +0000 +++ lisp/ChangeLog 2014-02-26 19:45:18 +0000 @@ -1,5 +1,7 @@ 2014-02-26 Glenn Morris + * startup.el (command-line): Don't init the tty in daemon mode. + Avoid calling tty-setup-hook twice, eg if a term file explicitly calls tty-run-terminal-initialization. (Bug#16859) * faces.el (tty-run-terminal-initialization): Add run-hook argument. === modified file 'lisp/startup.el' --- lisp/startup.el 2014-02-26 19:40:56 +0000 +++ lisp/startup.el 2014-02-26 19:45:18 +0000 @@ -1285,7 +1285,8 @@ ;; Load library for our terminal type. ;; User init file can set term-file-prefix to nil to prevent this. (unless (or noninteractive - initial-window-system) + initial-window-system + (daemonp)) (tty-run-terminal-initialization (selected-frame) nil t)) ;; Update the out-of-memory error message based on user's key bindings ------------------------------------------------------------ revno: 116567 fixes bug: http://debbugs.gnu.org/16859 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 14:40:56 -0500 message: Avoid calling tty-setup-hook twice eg if a term file explicitly calls tty-run-terminal-initialization * lisp/faces.el (tty-run-terminal-initialization): Add run-hook argument. (tty-create-frame-with-faces): Use it. * lisp/startup.el (command-line): Pass run-hook argument to tty-run-terminal-initialization. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-26 19:18:49 +0000 +++ lisp/ChangeLog 2014-02-26 19:40:56 +0000 @@ -1,5 +1,12 @@ 2014-02-26 Glenn Morris + Avoid calling tty-setup-hook twice, eg if a term file + explicitly calls tty-run-terminal-initialization. (Bug#16859) + * faces.el (tty-run-terminal-initialization): Add run-hook argument. + (tty-create-frame-with-faces): Use it. + * startup.el (command-line): Pass run-hook argument + to tty-run-terminal-initialization. + * dired.el (dired-restore-desktop-buffer): Demote errors; eg in case a glob match fails. (Bug#16884) === modified file 'lisp/faces.el' --- lisp/faces.el 2014-02-25 08:41:47 +0000 +++ lisp/faces.el 2014-02-26 19:40:56 +0000 @@ -2080,7 +2080,7 @@ (unless (terminal-parameter frame 'terminal-initted) (set-terminal-parameter frame 'terminal-initted t) (set-locale-environment nil frame) - (tty-run-terminal-initialization frame)) + (tty-run-terminal-initialization frame nil t)) (frame-set-background-mode frame t) (face-set-after-frame-default frame parameters) (setq success t)) @@ -2110,11 +2110,13 @@ Specifically, `tty-run-terminal-initialization' runs this. This can be used to fine tune the `input-decode-map', for example.") -(defun tty-run-terminal-initialization (frame &optional type) +(defun tty-run-terminal-initialization (frame &optional type run-hook) "Run the special initialization code for the terminal type of FRAME. The optional TYPE parameter may be used to override the autodetected -terminal type to a different value. As a final step, this runs the -hook `tty-setup-hook'. +terminal type to a different value. + +If optional argument RUN-HOOK is non-nil, then as a final step, +this runs the hook `tty-setup-hook'. If you set `term-file-prefix' to nil, this function does nothing." (setq type (or type (tty-type frame))) @@ -2139,7 +2141,7 @@ (when (fboundp term-init-func) (funcall term-init-func)) (set-terminal-parameter frame 'terminal-initted term-init-func) - (run-hooks 'tty-setup-hook))))) + (if run-hook (run-hooks 'tty-setup-hook)))))) ;; Called from C function init_display to initialize faces of the ;; dumped terminal frame on startup. === modified file 'lisp/startup.el' --- lisp/startup.el 2014-02-25 08:41:47 +0000 +++ lisp/startup.el 2014-02-26 19:40:56 +0000 @@ -1286,7 +1286,7 @@ ;; User init file can set term-file-prefix to nil to prevent this. (unless (or noninteractive initial-window-system) - (tty-run-terminal-initialization (selected-frame))) + (tty-run-terminal-initialization (selected-frame) nil t)) ;; Update the out-of-memory error message based on user's key bindings ;; for save-some-buffers. ------------------------------------------------------------ revno: 116566 fixes bug: http://debbugs.gnu.org/16884 committer: Glenn Morris branch nick: trunk timestamp: Wed 2014-02-26 14:18:49 -0500 message: * lisp/dired.el (dired-restore-desktop-buffer): Demote errors; eg in case a glob match fails. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-02-26 02:31:27 +0000 +++ lisp/ChangeLog 2014-02-26 19:18:49 +0000 @@ -1,3 +1,8 @@ +2014-02-26 Glenn Morris + + * dired.el (dired-restore-desktop-buffer): Demote errors; + eg in case a glob match fails. (Bug#16884) + 2014-02-26 Dmitry Gutov * emacs-lisp/lisp.el (lisp--local-variables): Catch `end-of-file' @@ -13,7 +18,8 @@ * emacs-lisp/edebug.el (defmacro): Fix debug spec. (Bug#16868) - * faces.el (tty-setup-hook, tty-run-terminal-initialization): Doc fixes. + * faces.el (tty-setup-hook, tty-run-terminal-initialization): + Doc fixes. * startup.el (term-setup-hook): Doc fix. Make obsolete. * term/sun.el (sun-raw-prefix-hooks): Use tty-setup-hook instead of term-setup-hook. === modified file 'lisp/dired.el' --- lisp/dired.el 2014-02-14 06:59:24 +0000 +++ lisp/dired.el 2014-02-26 19:18:49 +0000 @@ -3845,7 +3845,7 @@ (let* ((dired-dir (car misc-data)) (dir (if (consp dired-dir) (car dired-dir) dired-dir))) (if (file-directory-p (file-name-directory dir)) - (progn + (with-demoted-errors "Desktop: Problem restoring directory: %S" (dired dired-dir) ;; The following elements of `misc-data' are the keys ;; from `dired-subdir-alist'. ------------------------------------------------------------ revno: 116565 committer: martin rudalics branch nick: trunk timestamp: Wed 2014-02-26 09:07:34 +0100 message: Fixes around Bug#16647. * xdisp.c (remember_mouse_glyph): Handle ON_RIGHT_DIVIDER and ON_BOTTOM_DIVIDER cases. * window.c (coordinates_in_window): Return ON_VERTICAL_BORDER only if the window has no right divider. (Fcoordinates_in_window_p): Fix doc-string. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-02-25 22:51:34 +0000 +++ src/ChangeLog 2014-02-26 08:07:34 +0000 @@ -1,3 +1,12 @@ +2014-02-26 Martin Rudalics + + Fixes around Bug#16647. + * xdisp.c (remember_mouse_glyph): Handle ON_RIGHT_DIVIDER and + ON_BOTTOM_DIVIDER cases. + * window.c (coordinates_in_window): Return ON_VERTICAL_BORDER + only if the window has no right divider. + (Fcoordinates_in_window_p): Fix doc-string. + 2014-02-25 Juanma Barranquero * lread.c (Funintern): Fix doc to match advertised calling convention. === modified file 'src/window.c' --- src/window.c 2014-02-22 21:49:10 +0000 +++ src/window.c 2014-02-26 08:07:34 +0000 @@ -1269,12 +1269,12 @@ /* On vertical window divider (which prevails horizontal dividers)? */ if (!WINDOW_RIGHTMOST_P (w) - && WINDOW_RIGHT_DIVIDER_WIDTH (w) + && WINDOW_RIGHT_DIVIDER_WIDTH (w) > 0 && x >= right_x - WINDOW_RIGHT_DIVIDER_WIDTH (w) && x <= right_x) return ON_RIGHT_DIVIDER; /* On the horizontal window divider? */ - else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) + else if (WINDOW_BOTTOM_DIVIDER_WIDTH (w) > 0 && y >= (bottom_y - WINDOW_BOTTOM_DIVIDER_WIDTH (w)) && y <= bottom_y) return ON_BOTTOM_DIVIDER; @@ -1294,9 +1294,10 @@ resize windows horizontally in case we're using toolkit scroll bars. Note: If scrollbars are on the left, the window that must be eventually resized is that on the left of WINDOW. */ - if ((WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) - && !WINDOW_LEFTMOST_P (w) - && eabs (x - left_x) < grabbable_width) + if ((WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0) + && (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) + && !WINDOW_LEFTMOST_P (w) + && eabs (x - left_x) < grabbable_width) || (!WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) && !WINDOW_RIGHTMOST_P (w) && eabs (x - right_x) < grabbable_width)) @@ -1331,6 +1332,7 @@ if (FRAME_WINDOW_P (f)) { if (!w->pseudo_window_p + && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0 && !WINDOW_HAS_VERTICAL_SCROLL_BAR (w) && !WINDOW_RIGHTMOST_P (w) && (eabs (x - right_x) < grabbable_width)) @@ -1339,6 +1341,7 @@ /* Need to say "x > right_x" rather than >=, since on character terminals, the vertical line's x coordinate is right_x. */ else if (!w->pseudo_window_p + && WINDOW_RIGHT_DIVIDER_WIDTH (w) == 0 && !WINDOW_RIGHTMOST_P (w) /* Why check ux if we are not the rightmost window? Also shouldn't a pseudo window always be rightmost? */ @@ -1352,8 +1355,8 @@ ? (x >= left_x + WINDOW_LEFT_FRINGE_WIDTH (w)) : (x < left_x + lmargin_width))) return ON_LEFT_MARGIN; - - return ON_LEFT_FRINGE; + else + return ON_LEFT_FRINGE; } if (x >= text_right) @@ -1363,8 +1366,8 @@ ? (x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w)) : (x >= right_x - rmargin_width))) return ON_RIGHT_MARGIN; - - return ON_RIGHT_FRINGE; + else + return ON_RIGHT_FRINGE; } /* Everything special ruled out - must be on text area */ @@ -1419,8 +1422,10 @@ frame. If COORDINATES are in the text portion of WINDOW, the coordinates relative to the window are returned. +If they are in the bottom divider of WINDOW, `bottom-divider' is returned. +If they are in the right divider of WINDOW, `right-divider' is returned. If they are in the mode line of WINDOW, `mode-line' is returned. -If they are in the top mode line of WINDOW, `header-line' is returned. +If they are in the header line of WINDOW, `header-line' is returned. If they are in the left fringe of WINDOW, `left-fringe' is returned. If they are in the right fringe of WINDOW, `right-fringe' is returned. If they are on the border between WINDOW and its right sibling, === modified file 'src/xdisp.c' --- src/xdisp.c 2014-02-21 07:42:42 +0000 +++ src/xdisp.c 2014-02-26 08:07:34 +0000 @@ -2452,6 +2452,16 @@ ? WINDOW_RIGHT_FRINGE_WIDTH (w) : 0))); width = WINDOW_SCROLL_BAR_AREA_WIDTH (w); + goto row_glyph; + + case ON_RIGHT_DIVIDER: + gx = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w); + width = WINDOW_RIGHT_DIVIDER_WIDTH (w); + goto row_glyph; + + case ON_BOTTOM_DIVIDER: + gx = 0; + width = WINDOW_RIGHT_PIXEL_EDGE (w) - WINDOW_RIGHT_DIVIDER_WIDTH (w); row_glyph: gr = 0, gy = 0; ------------------------------------------------------------ Use --include-merged or -n0 to see merged revisions.