1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-18 11:50:38 -08:00
Commit graph

193 commits

Author SHA1 Message Date
Juri Linkov
9396d73942 * doc/emacs/text.texi (Outline Minor Mode): Add a note about value 'insert'.
* lisp/outline.el (outline-minor-mode-use-buttons): Add a note and
a comment about the value 'insert' (bug#65874).
2023-09-13 19:49:29 +03:00
Robert Pluim
10948948c1 Improve outline-default-state docstring
* lisp/outline.el (outline-default-state): Explain which functions are
available to affect heading visibility.
2023-04-26 12:31:00 +02:00
Juri Linkov
8496395653 * lisp/outline.el (outline--fix-buttons-after-change): Add save-match-data.
It's important for a hook in after-change-functions not to change match-data.
Otherwise it breaks functions that make changes in the buffer, such as
for example, successive calls to delete-region in smerge-keep-n, etc.
2023-03-22 09:44:02 +02:00
Robert Pluim
695e9f71c3 Use named keymaps for outline buttons
https://lists.gnu.org/archive/html/emacs-devel/2023-01/msg00334.html

* lisp/outline.el (outline-button-icon-map)
(outline-overlay-button-map, outline-inserted-button-map):
Keymaps refactored from outline--create-button-icons and
outline--insert-button.
(outline--create-button-icons, outline--insert-button): Move
keymaps to separate variables.
2023-01-24 20:37:56 +02:00
Juri Linkov
4a8891a462 * etc/NEWS: Mention incompatible changes in 'outline-minor-mode-cycle-map'.
* lisp/outline.el (outline-minor-mode-cycle--bind):
Add docstring (bug#60426).
(outline-minor-mode-cycle--bind): Default 'map' to
'outline-minor-mode-cycle-map'.
(outline-minor-mode-cycle-map): Improve docstring.
(outline-minor-mode): Move margin-cycling keys to
'outline-minor-mode-cycle-map'.
2023-01-11 21:37:33 +02:00
Eli Zaretskii
cae528457c ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
Juri Linkov
05d8310fb5 Use the new keyword ':repeat' in repeatable keymaps.
* lisp/bindings.el (undo-repeat-map)
(buffer-navigation-repeat-map, next-error-repeat-map)
(page-navigation-repeat-map):
* lisp/comint.el (comint-repeat-map):
* lisp/dired.el (dired-jump-map):
* lisp/outline.el (outline-navigation-repeat-map)
(outline-editing-repeat-map):
* lisp/shell.el (shell-repeat-map):
* lisp/tab-bar.el (tab-bar-switch-repeat-map)
(tab-bar-move-repeat-map):
* lisp/window.el (other-window-repeat-map)
(resize-window-repeat-map):
* lisp/winner.el (winner-repeat-map):
* lisp/eshell/em-prompt.el (eshell-prompt-repeat-map):
* lisp/eshell/esh-mode.el (eshell-command-repeat-map):
Add the keyword ':repeat' to 'defvar-keymap' instead of
setting the symbol property 'repeat-map' explicitly.

* lisp/keymap.el (defvar-keymap): Check for 'props'
that is used in 'defvar-form'.
2022-12-22 10:03:09 +02:00
Juri Linkov
40c23c11e8 * lisp/outline.el: Fix the value 'insert' of outline-minor-mode-use-buttons.
(outline--insert-button): Keep text properties around point
on the inserted whitespace placeholder.

* lisp/apropos.el (apropos-mode):
* lisp/progmodes/xref.el (xref--xref-buffer-mode):
Change outline-minor-mode-use-buttons from t to 'insert'.
2022-12-12 19:37:02 +02:00
Juri Linkov
bf66b90b9a Fix the width of margins for icons in outline-minor-mode (bug#59719)
* doc/lispref/display.texi (Icons): Add :width spec.

* lisp/emacs-lisp/icons.el (icons--create): Handle :width as well.

* lisp/outline.el (outline--margin-width, outline-margin-width):
New variables.
(outline-open-in-margins, outline-close-in-margins)
(outline-close-rtl-in-margins): Don't inherit from parents.
Use `:width font' instead of `:height 10'.
(outline-minor-mode): Calculate the number of columns for margins
to fit the icons.
2022-12-02 09:54:22 +02:00
Juri Linkov
a142841ad1 * lisp/outline.el: 'S-<down-mouse-1>' on buffer buttons cycles all outlines.
(outline--create-button-icons, outline--insert-button): Bind 'S-<mouse-1>' to
'outline-cycle-buffer' as it's already done for buttons on the margins.
Ignore 'S-<down-mouse-1>'.  Don't hard-code 'help-echo' since it should be
customizable by the ':help-echo' keyword in 'define-icon'.
2022-11-23 10:50:23 +02:00
Stefan Kangas
beaa2e4953 ; Fix typos (misspelled symbols) 2022-11-21 15:20:11 +01:00
Juri Linkov
d9d8a2eba9 * lisp/outline.el (outline-search-function): New variable (bug#53981).
(outline-font-lock-keywords, outline-font-lock-face)
(outline-minor-mode-highlight-buffer, outline-next-preface)
(outline-next-heading, outline-previous-heading)
(outline-back-to-heading, outline-on-heading-p, outline-demote)
(outline-map-region, outline-next-visible-heading)
(outline-hide-sublevels, outline-up-heading): Use outline-search-function
when it's non-nil as an alternative to searching outline-regexp.
(outline-search-level, outline-search-text-property): New functions.

* lisp/apropos.el (apropos-mode): Set outline-search-function
instead of unreliable outline-regexp.
(apropos-print): Add text property outline-level.

* lisp/emacs-lisp/shortdoc.el (shortdoc-display-group):
Add text property outline-level on text separate from final newlines.
(shortdoc-display-group): Add a narrow newline to not show
text properties of the final line when the outline is hidden.
(shortdoc--display-function): Add text property outline-level.
(shortdoc-mode): Set buffer-local outline-search-function and outline-level.
2022-11-21 09:56:06 +02:00
Stefan Kangas
ba485eb949 ; Fix typos 2022-11-18 16:02:19 +01:00
Juri Linkov
236703ca05 * lisp/outline.el (outline-minor-mode): Ensure margins are either 0 or 1.
This check is necessary to make it idempotent to multiple calls.
2022-11-07 10:14:45 +02:00
Juri Linkov
f7816c94b6 * lisp/outline.el: Pre-compute some frequent data for button icons (bug#57813)
(outline--button-icons): New buffer-local variable.
(outline-minor-mode): Set outline--button-icons.
Unify overlay name 'outline-margin' with 'outline-button'.
(outline--make-button-overlay, outline--make-margin-overlay)
(outline--insert-open-button, outline--insert-close-button): Remove functions.
(outline--create-button-icons, outline--insert-button): New functions
with code refactored from old functions.  Add more support for icon faces.
(outline--fix-up-all-buttons): Use outline--insert-button.
(outline--fix-buttons-after-change): Unify overlay name
'outline-margin' with 'outline-button'.

* lisp/minibuffer.el (completions-group-separator): Change face
attribute :strike-through to :underline.
2022-10-23 19:54:31 +03:00
Juri Linkov
8bde7d40a4 * lisp/outline.el: Use 'outline-cycle' on buttons for 'RET' like 'TAB' uses.
(outline--make-button-overlay, outline--make-margin-overlay):
Use overlay keymap where RET and mouse-2 are bound to outline-cycle.
(outline--insert-open-button, outline--insert-close-button):
Move overlay keymap to outline--make-button-overlay and replace
bindings outline-hide-subtree/outline-show-subtree with outline-cycle.
2022-10-22 21:57:40 +03:00
Juri Linkov
fab2084956 Unify outline-minor-mode-use-buttons with in-margins/insert values (bug#57813)
* doc/emacs/text.texi (Outline Mode): Remove outline-minor-mode-use-margins.
Document the values insert/in-margins of outline-minor-mode-use-buttons.

* lisp/help.el (describe-bindings):
Set outline-minor-mode-use-buttons to 'insert'.

* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common):
Set outline-minor-mode-use-buttons to 'in-margins'.

* lisp/outline.el (outline-minor-mode-use-buttons): Change :type
from 'buffer-predicate' to choice of const values nil/in-margins/t.
(outline--use-buttons, outline-minor-mode-insert-buttons)
(outline-minor-mode-use-margins, outline--use-margins): Remove variables.
(outline-minor-mode-highlight-buffer): Change overlay name
'outline-overlay' to 'outline-highlight'.
(outline-minor-mode): Simplify to handle possible values of
'outline-minor-mode-use-buttons' instead of using many variables.
(outline--make-button-overlay): Use value 'insert' of
'outline-minor-mode-use-buttons'.
(outline--insert-open-button, outline--insert-close-button)
(outline--fix-up-all-buttons, outline--fix-buttons-after-change):
Handle values of outline-minor-mode-use-buttons instead of using
many variables.
2022-10-22 21:37:56 +03:00
Juri Linkov
ab1b491f83 * lisp/outline.el (outline-minor-mode-insert-buttons): New defvar-local.
(outline--make-button-overlay, outline--insert-open-button)
(outline--insert-close-button): Insert button when
outline-minor-mode-insert-buttons is non-nil, otherwise
put an overlay with before-string.  (bug#57813)

* lisp/help.el (describe-bindings): Set buffer-local
outline-minor-mode-insert-buttons to t.

* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common):
Set buffer-local outline-minor-mode-use-margins to t.  Don't set
outline-regexp for leading spaces because now spaces are not added
in the NEWS buffer.
2022-10-18 21:13:29 +03:00
Juri Linkov
a9f183c760 * lisp/outline.el: Use one character wide strings for margins (bug#57813)
(outline-open-in-margins, outline-close-in-margins)
(outline-close-rtl-in-margins): Add 1-char emoji, symbol, text
for margins that are 1-column wide.
(outline-minor-mode): Force display of margins only for the selected buffer.
2022-10-18 21:05:15 +03:00
Juri Linkov
7054481ed5 * lisp/outline.el: Rearrange button/margin functions.
(outline--make-button-overlay, outline--make-margin-overlay)
(outline--insert-open-button, outline--insert-close-button)
(outline--fix-up-all-buttons): Move to the section "Button/margin indicators".
2022-10-13 10:23:44 +03:00
Juri Linkov
3d41cc03d9 * lisp/outline.el (outline--fix-buttons-after-change): New function.
(outline-minor-mode): Use it.
(outline--make-margin-overlay): Remove inhibit-read-only.
2022-10-13 10:13:07 +03:00
Lars Ingebrigtsen
450d94920f Revert "keymap.el: Ease up support for non-kbd formats."
This reverts commit 570a11052b.

We do not want to support several keymap formats in
`keymap-set' and friends -- the point is to have an
interface with easy-to-understand semantics that
give good feedback on valid/invalid key sequences.
2022-10-03 11:04:16 +02:00
Stefan Monnier
570a11052b keymap.el: Ease up support for non-kbd formats.
While we want to standardize on the `kbd` syntax for user-facing code,
the internal vector representation of key sequences is not going away,
so let's not impose silly `key-description + key-parse` roundtrips.
Also, provide some support for packages stuck with user configs defined
to hold old-style key formats.

* lisp/keymap.el (keymap-set): Allow vectors as `key`.
(key-parse-old-format): New function, which stands out better than
`key-description` when searching for uses of the old syntax.

* list/outline.el (outline-minor-mode): Use it.
2022-10-02 14:07:24 -04:00
Juri Linkov
5fbf93d918 * lisp/outline.el: More improvements for buttons/margins (bug#57813)
(outline-minor-mode-use-margins): Don't use for modes derived from help-mode
that are handled by 'outline-minor-mode-use-buttons'.
(outline-open, outline-close, outline-close-rtl): Use image height
proportional to font height of 0.8em.
(outline-minor-mode): Remove overlays 'outline-button' and 'outline-margin',
and move such overlay removal after the call of 'outline-show-all'
that might trigger overlay addition.
2022-09-21 09:42:55 +03:00
Juri Linkov
cefda4a6c5 * lisp/outline.el: Bind margin mouse event to cycle outlines (bug#57813)
(outline-minor-mode): In mode keymap bind
'right/left-margin mouse-1' to outline-cycle, and
'right/left-margin S-mouse-1' to outline-cycle-buffer.
(outline-hide-subtree, outline-show-subtree): Add save-excursion
to keep point unmoved after mouse click.
(outline-cycle): Add optional arg 'event' like in
outline-hide-subtree and outline-show-subtree, and
add save-excursion to keep point unmoved after mouse click.
(outline--make-button-overlay, outline--make-margin-overlay):
Put overlay property 'evaporate' to t.
(outline--insert-open-button, outline--insert-close-button):
Remove temporary attempts to bind margin-local mouse events.
2022-09-20 19:11:58 +03:00
Juri Linkov
4b84f44015 * lisp/outline.el (outline-open): Revert 'text' back to " open ".
(outline-close): Revert 'text' back to " close ".
(outline-close-rtl): Remove 'text' since it's inherited from the parent
'outline-close'.
2022-09-19 23:12:17 +03:00
Juri Linkov
0a15956f49 * lisp/outline.el (outline-minor-mode-use-margins): New user option.
(outline--use-margins, outline--use-buttons, outline--use-rtl):
New buffer-local internal variables.
(outline-open, outline-close): Move :ascent center to default of define-icon.
Use ASCII-art for text.  Fix docstring and help-echo.
(outline-close-rtl, outline-open-in-margins)
(outline-close-in-margins, outline-close-rtl-in-margins): New icon
definitions.
(outline-minor-mode-highlight-buffer): Remove outline--insert-open-button
since initial outline--fix-up-all-buttons is added now to outline-minor-mode.
(outline-minor-mode): Set buffer-local outline--use-buttons,
outline--use-margins and outline--use-rtl.  Show/hide margins for
outline--use-margins.  Add hook after-change-functions for editable buffers.
Move outline--fix-up-all-buttons for both cases: font-lock and non-font-lock.
(outline--use-buttons-p): Remove function.
(outline--make-button-overlay): Use outline--use-rtl icon outline-close-rtl.
(outline--make-margin-overlay): New function.
(outline--insert-open-button, outline--insert-close-button): Add optional
arg 'use-margins'.
(outline--fix-up-all-buttons): Call outline--insert-close-button
and outline--insert-open-button with arg outline--use-margins.
(outline-cycle-buffer): Remove outline--fix-up-all-buttons
that is already called from outline-flag-region.

* lisp/emacs-lisp/icons.el (icons--create): Handle keywords :rotation
and :ascent with the default value 'center (bug#57813).

* doc/emacs/text.texi (Outline Mode): Mention outline-minor-mode-use-margins.
2022-09-19 22:35:51 +03:00
Stefan Kangas
ba0e989c11 Support imenu in emacs-news-mode
* lisp/outline.el (outline-imenu-generic-expression): New variable
broken out from...
(outline-mode): ...here.
* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common): Use
above new variable to add imenu support.
2022-09-19 16:02:28 +02:00
Juri Linkov
dd1aa62642 * lisp/outline.el: Optimize performance of S-TAB (bug#57813)
(outline-hide-subtree): Don't call outline--insert-close-button, because
it's handled by outline--fix-up-all-buttons called from outline-flag-region.
(outline-show-subtree): Don't call outline--insert-open-button, same reason.
(outline--fix-up-all-buttons): Check invisible outlines explicitly instead of
using slow outline--cycle-state.
2022-09-16 19:16:10 +03:00
Po Lu
cdb8106bec Fix icon spec for outline icons
* lisp/outline.el (outline-open):
(outline-close): Fix listing of multiple images.  Reported by
Lars Ingebrigtsen <larsi@gnus.org>.
2022-09-16 17:18:02 +08:00
Po Lu
58454b6615 Add portable versions of the outline SVGs
* lisp/outline.el (outline-open):
(outline-close): Add PBM images.

* etc/images/outline-open.pbm:
* etc/images/outline-close.pbm: New images used on systems
without librsvg.
2022-09-16 15:45:36 +08:00
Juri Linkov
8b29b29693 Add outline open/close images (bug#57813)
* etc/images/outline-open.svg:
* etc/images/outline-close.svg: New files.

* lisp/outline.el (outline-open, outline-close): Use images
outline-open.svg and outline-close.svg.

* lisp/emacs-lisp/icons.el (icons--create): Add :ascent 'center'.
2022-09-16 10:09:20 +03:00
Juri Linkov
471414fe6b Fix outline image icon display (bug#57813)
* lisp/outline.el (outline--make-button-overlay): Don't overwrite
image display with string display when image exists.
(outline--fix-up-all-buttons): Optimize.
2022-09-15 19:30:17 +03:00
Juri Linkov
fd1ee05977 Prefer defvar-keymap for repeat-map in outline.el
* lisp/outline.el (outline-navigation-repeat-map)
(outline-editing-repeat-map): Prefer defvar-keymap.
2022-09-13 21:17:55 +03:00
Augusto Stoffel
f10645d260 Add prefix argument to outline-cycle-buffer
* lisp/outline.el (outline-cycle-buffer): Add prefix argument to show
headings up to a given level.  Handle the case where the top
heading level is not 1.
2022-09-08 14:40:02 +02:00
Juri Linkov
2dfce43103 Don't replace the first character with an arrow in outline-minor-mode
* lisp/outline.el (outline--make-button-overlay): Add the first character
to the displayed outline button (bug#56820).
2022-09-04 20:02:20 +03:00
Lars Ingebrigtsen
ad6878005d Add a basic widget type for buffer predicates
* lisp/paren.el (show-paren-predicate):
* lisp/outline.el (outline-minor-mode-use-buttons): Use it.
* lisp/wid-edit.el (buffer-predicate): New widget type.
2022-09-04 16:29:06 +02:00
Lars Ingebrigtsen
d029ec8d76 Fix outline-minor-mode-map
* lisp/outline.el (outline-minor-mode): Avoid using
easy-mmode-define-keymap, since it doesn't handle :inherit
correctly (bug#57512).
2022-09-01 12:24:17 +02:00
Juri Linkov
7804536e4e Fix 744ed0ceee from bug#57082 (bug#57176)
* lisp/outline.el (outline-minor-mode-highlight-buffer): Handle 'append'.
(outline-minor-mode): Call outline--fix-up-all-buttons when font-lock is used.

* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common): Fix regexp.
2022-08-30 20:09:20 +03:00
Lars Ingebrigtsen
d1578888bf Tweak outline symbol icons
* lisp/outline.el (outline-close, outline-open): Use icons of the
same size in Symbola.
2022-08-13 14:40:58 +02:00
Lars Ingebrigtsen
95d8a4544e Default outline-minor-mode-use-buttons to only happen in *Help*
* lisp/outline.el (outline-minor-mode-use-buttons): Change the
default to only use buttons in the *Help* buffer (for now),
because it's too disruptive in other modes.  This will probably be
changed again to have some other mechanism to opt in in certain
modes, but it's not clear what that mechanism should look like.
2022-08-12 14:56:46 +02:00
Stephen Berman
a23f9b7bda Reverse the outline arrows
* lisp/outline.el (outline-open): Reverse the arrows to match
arrows in Customize (bug#57082).
2022-08-12 14:49:22 +02:00
Stephen Berman
744ed0ceee Make outline buttons work in NEWS
* lisp/outline.el (outline-minor-mode-highlight-buffer): Fix
button insertion.
(outline-minor-mode): Ditto.
(outline--insert-open-button): Don't mark buffer as modified when
inserting buttons.
(outline--insert-close-button): Ditto.

* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common):
Adjust outline regexp.
2022-08-09 20:44:07 +02:00
Lars Ingebrigtsen
d34e38f7d1 Make the symbol icons in outline.el more logical
* lisp/outline.el (outline-open, outline-close): Use symbols from
the same series so that it's more likely that they match up (bug#56823).
2022-07-30 15:36:30 +02:00
Lars Ingebrigtsen
40c4691355 Fix outline-minor-mode-use-buttons defcustom type
* lisp/outline.el (outline-minor-mode-use-buttons): Fix wrong type.
2022-07-30 13:18:44 +02:00
Lars Ingebrigtsen
30f598bcc1 Adjust outline--use-buttons-p to buffer-match-p change
* lisp/outline.el (outline-minor-mode-use-buttons): Adjust doc string.
(outline--use-buttons-p): No longer any need to special-case t/nil.
2022-07-30 12:50:47 +02:00
Stefan Kangas
53b1e6f96c Make outline-view-change-hook obsolete
According to a comment, this hook "Seems only used by lazy-lock.
I.e. obsolete."  But lazy-lock has been deleted.
* lisp/outline.el (outline-view-change-hook): Make obsolete.
2022-07-30 11:36:36 +02:00
Lars Ingebrigtsen
dedd05d283 Fix outline byte compilation warning from previous change
* lisp/outline.el (outline--use-buttons-p): Move around to fix
byte compilation warning.
2022-07-29 13:21:45 +02:00
Lars Ingebrigtsen
0728764fae Fix up the outline minor mode button logic
* lisp/outline.el (outline-minor-mode-highlight-buffer): Factor
out... (bug#56820).
(outline--use-buttons-p): ... to here.
(outline-hide-subtree, outline--fix-up-all-buttons)
(outline-show-subtree): Use it.
2022-07-29 13:20:15 +02:00
Lars Ingebrigtsen
d7e848ccda Use icons in outline
* lisp/help.el (describe-bindings): Don't force buttons on
(bug#56691).

* lisp/outline.el (outline-minor-mode-use-buttons): Default
buttons on in special-mode buffers.
* lisp/outline.el (outline-minor-mode-buttons): Remove.
(outline-open, outline-close): New icons.
(outline-minor-mode-highlight-buffer): Use the new predicate to
switch on/off.
(outline--make-button): Remove.
(outline--make-button-overlay): Use icons.el instantiation.
(outline--valid-emoji-p): Remove.
(outline--valid-char-p): Remove.
(outline--insert-open-button, outline--insert-close-button): Make
point movement better in *Help* buffers.
2022-07-28 14:39:38 +02:00