Merge from origin/emacs-28

0c51db6bb1 Amend Follow Mode to handle header lines and tab lines cor...
261367781b * lisp/files.el (user-emacs-directory-warning): Clarify do...
8d9b55330d * doc/emacs/frames.texi (Tab Bars): Add text about mouse a...
d9b0b730e8 * doc/emacs/frames.texi (Tab Bars): Describe tab-last.
This commit is contained in:
Alan Mackenzie 2021-11-07 20:53:21 +00:00
commit 9e34efb29a
4 changed files with 42 additions and 14 deletions

View file

@ -1456,9 +1456,7 @@ names is sorted by recency, so you can use @kbd{M-n}
the second last, and so on.
@kindex C-1, tab bar
@kindex C-9, tab bar
@kindex M-1, tab bar
@kindex M-9, tab bar
@findex tab-select
@vindex tab-bar-select-tab-modifiers
@vindex tab-bar-tab-hints
@ -1474,6 +1472,15 @@ name, you can customize another variable @code{tab-bar-tab-hints}.
This will help you decide which numerical key to press to select the
tab by its number.
@kindex C-9, tab bar
@kindex M-9, tab bar
@findex tab-last
@item @var{modifier}-@kbd{9}
Switch to the last tab (@code{tab-last}). The key combination is
the modifier key defined by @code{tab-bar-select-tab-modifiers} and
the key @kbd{9}. With a numeric argument @var{n}, switch to the
@var{n}th last tab.
@kindex C-0, tab bar
@kindex M-0, tab bar
@findex tab-recent
@ -1501,6 +1508,13 @@ to the right; with a negative argument @minus{}@var{n}, move it
@var{n} positions to the left.
@end table
You can use the mouse to operate on tabs. Clicking @kbd{mouse-2}
closes the tab. Clicking @kbd{mouse-3} pops up the context menu with
the items that operate on the clicked tab. Dragging the tab with
@kbd{mouse-1} moves it to another position on the tab bar. Mouse
wheel scrolling switches to the next or previous tab. Holding down
the @key{SHIFT} key during scrolling moves the tab to the left or right.
@findex tab-bar-history-mode
You can enable @code{tab-bar-history-mode} to remember window
configurations used in every tab, and later restore them.
@ -1517,6 +1531,9 @@ Cancel restoration of the previous window configuration.
This moves forward in the history of window configurations.
@end table
It's possible to customize the items displayed on the tab bar
by the user option @code{tab-bar-format}.
@node Dialog Boxes
@section Using Dialog Boxes
@cindex dialog boxes

View file

@ -246,6 +246,7 @@ representation as emojis.
+++
*** New command 'C-x t C-r' to open file read-only in the other tab.
+++
*** The tab bar now supports more mouse commands.
Clicking 'mouse-2' closes the tab, 'mouse-3' displays the context menu
with items that operate on the clicked tab. Dragging the tab with
@ -266,7 +267,7 @@ frame regardless of the values of 'tab-bar-mode' and 'tab-bar-show'.
This allows enabling/disabling the tab bar independently on different
frames.
---
+++
*** New user option 'tab-bar-format' defines a list of tab bar items.
When it contains 'tab-bar-format-global' (possibly appended after
'tab-bar-format-align-right'), then after enabling 'display-time-mode'
@ -275,14 +276,14 @@ aligned to the right on the tab bar instead of on the mode line.
When 'tab-bar-format-tabs' is replaced with 'tab-bar-format-tabs-groups',
the tab bar displays tab groups.
---
+++
*** New optional key binding for 'tab-last'.
If you customize the user option 'tab-bar-select-tab-modifiers' to
allow selecting tabs using their index numbers, the '<MODIFIER>-9' key
is bound to 'tab-last', and switches to the last tab. Here <MODIFIER>
is any of the modifiers in the list that is the value of
'tab-bar-select-tab-modifiers'. You can also use negative indices,
which count from the last tab: -1 is the last tab, -2 the one before
'tab-bar-select-tab-modifiers'. You can also use positive indices,
which count from the last tab: 1 is the last tab, 2 the one before
that, etc.
---

View file

@ -1059,8 +1059,10 @@ the function needs to examine, starting with FILE."
(if root (file-name-as-directory root))))
(defcustom user-emacs-directory-warning t
"Non-nil means warn if cannot access `user-emacs-directory'.
Set this to nil at your own risk..."
"Non-nil means warn if unable to access or create `user-emacs-directory'.
Set this to nil at your own risk, as it might lead to data loss
when Emacs tries to write something to a non-existent or
inaccessible location."
:type 'boolean
:group 'initialization
:version "24.4")

View file

@ -667,7 +667,8 @@ Works like `scroll-down' when not in Follow mode."
(scroll-down-command arg))
(arg (follow-scroll-down-arg arg))
(t
(let* ((windows (follow-all-followers))
(let* ((orig-point (point))
(windows (follow-all-followers))
(win (car (reverse windows)))
(start (window-start (car windows))))
(if (eq start (point-min))
@ -678,11 +679,14 @@ Works like `scroll-down' when not in Follow mode."
(select-window win)
(goto-char start)
(vertical-motion (- (- (window-height win)
(if header-line-format 2 1)
next-screen-context-lines)))
(if header-line-format 2 1) ; always mode-line
(if tab-line-format 1 0)
next-screen-context-lines)))
(set-window-start win (point))
(goto-char start)
(vertical-motion (- next-screen-context-lines 1))
(if (< orig-point (window-end win t))
(goto-char orig-point)
(goto-char start)
(vertical-motion (- next-screen-context-lines 1)))
(setq follow-internal-force-redisplay t))))))
(put 'follow-scroll-down 'scroll-command t)
@ -947,7 +951,11 @@ used."
(let* ((win (or win (selected-window)))
(edges (window-inside-pixel-edges win))
(ht (- (nth 3 edges) (nth 1 edges)))
(last-line-pos (posn-point (posn-at-x-y 0 (1- ht) win))))
(last-line-pos (posn-point
(posn-at-x-y 0 (+ (window-header-line-height win)
(window-tab-line-height win)
(1- ht))
win))))
(if (pos-visible-in-window-p last-line-pos win)
(let ((end (window-end win t)))
(list end (pos-visible-in-window-p (point-max) win)))