Commit Graph

31 Commits

Author SHA1 Message Date
6010b40247 fix(fold): Use function variables over direct func
Replace direct calls to `hs-looking-at-block-start-p` and
`hs-find-block-beginning` with their corresponding function variables to
ensure compatibility with hideshow mode's configurable function
handling.

These function variables are set in [`treesit` in Emacs 31][1]. It broke
fold because `hs-block-start-regexp` is set to `nil` explicitly by
treesit overrides.

The default for `hs-looking-at-block-start-p-func` and
`hs-find-block-beginning-func` are same as what was being called before.

Ref:
[1]: 2e3b085d44
2025-07-01 14:28:46 +02:00
fcf726726b fix(fold): fix recursive unfolding
point-min and point-max were used in some places in
+fold--open-rec-between instead of beg and end. This caused
+fold/open-rec to open all folds rather than only the one the curser is
on.
2025-01-09 00:59:58 -05:00
3f1a471127 refactor: replace point-at-{b,e}ol
These were deprecated in 29.1. We'll switch to pol-bol and pos-eol
if/when we drop 28.x support.
2025-01-08 19:33:38 -05:00
a5538209d8 fix(fold): autoload +fold--ensure-hideshow-mode
This function may be called by `+fold--ensure-hideshow-mode-a`, before
autoload/fold.el has been loaded.

Amend: #8067
2024-10-20 02:31:31 -04:00
b681504582 fix(fold): avoid Hideshow-not-supported error
Some modes are not supported by `hs-minor-mode`, but can still support
some of the `+fold/` commands. For example, `pdf-outline-minor-mode`
recognizes the same commands as `outline-minor-mode`, but
`hs-minor-mode` is not applicable. In cases like these, we shouldn't try
to enable `hs-minor-mode`, as this will produce an error that will
terminate the command.
2024-09-13 20:28:54 -07:00
89f5af8104 refactor(fold): move +fold-hideshow-folded-face & unstyle +ts-fold-replacement-face
It is the theme(s) jurisdiction to impose modify external faces.
`custom-set-faces!` should be avoided from within modules, in general.
2024-08-27 03:13:57 -04:00
9a6bcc31f9 feat(fold): add +fold-ellipsis var
Bring *some* consistency to the text display when text is
ellided/folded.

Close: #7743
Co-authored-by: seanfarley <seanfarley@users.noreply.github.com>
2024-08-27 03:13:56 -04:00
42ae401deb fix(fold): +fold/next: actually support outlines
The docstring says that this function will move to the next folded
outline heading, but this had not been implemented.
2024-06-27 18:07:33 -04:00
bff7baca69 fix(fold): fold-levels off-by-one
Without this change, we need to pass a prefix arg that is one more than
the actual fold-level we're trying to achieve; `C-u 2` is equivalent to
not passing a digit arg. While this looks intentional, I don't see what
purpose it serves.

This change provides saner behavior that matches other commands that
handle fold-levels (eg. `org-fold-hide-sublevels`).
2024-06-27 18:07:19 -04:00
56e998c577 fix(fold): properly handle recursive folds
With four folding systems in play, there are numerous ways to create
nested folds (eg. hideshow folds inside folded outline headings with
`+fold/close-all`). So `+fold/open-rec' needs to be able to open all
kinds of folds within the newly unfolded region. It can't stop at
unfolding the type of fold it was called on.
2024-06-26 20:45:14 -04:00
c471ab00a6 fix(fold): don't expect evil-vimish-fold
This module is also used by non-Evil users. Also,
`evil-vimish-fold/next-fold` and friends just wrap the corresponding
vimish-fold functions in `dotimes`, anyway.
2024-06-26 20:45:00 -04:00
142f28eb9a fix(fold): properly support outline-minor-mode
- Make `+fold/close-all` work for outline-minor-mode.

- Distinguish between `zo` and `zO` for outline-minor-mode alone, by
  binding `zO` to a new function `+fold/open-rec`. `zO` will now trigger
  `outline-show-subtree` in outline-minor-mode, while `zo` will only
  trigger `outline-show-branches`, keeping the subheadings folded. This
  matches the behavior in org-mode.

- Fix a bug in `+fold/open-all`, introduced in
  7b9d00d661, that makes it only operate
  on vimish-fold folds.

Note that outline-minor-mode is still not enabled by default anywhere.
These changes are only to prevent incorrect behavior for users who
decide to turn it on themselves.
2024-04-01 13:30:43 -04:00
c564c17a6b fix(fold): reorder fold type checks
(+fold--ts-fold-p) just checks that the mode is active so it will block
any checks following it. Move it to the end so other fold types have a
chance, and consistently order fold type checks.
2024-03-19 23:57:15 -04:00
4334eb285f nit(fold): fix non idiomatic code
- remove final t in cond
- replace cond with if
- replace seq-filter with cl-remove-if-not
2022-05-22 21:26:08 +01:00
cd6cb8c499 fix(tree-sitter): check tree-sitter-mode is bound
and-true-p
2022-05-22 21:26:08 +01:00
32bf2ee4cf fix(tree-sitter): message raised when jumping up
as opposed to a nasty error,
the error was raised because I was not using the abs of count
this commit also comes with general code cleanup,
this includes
- removal of the eval quasiquote antipattern when an apply would work
better
- use of the :key keyword instead of the lambda
2022-05-22 21:26:02 +01:00
6127692848 fix(fold): handle bounding error
This basically stops the "not overlay" error we were getting when you
tried to jump to many times. this does have the disadvantage of not
jumping at all if the amount of jumps is higher than the amount of
overlays but this can be fixed in a future commit if necessary.
2022-05-22 21:26:02 +01:00
c16e16e92b feat(fold): define ts-fold movement logic
As ts-fold does not provide fold movement logic I made my own. This can
and probably should be upstreamed but the details for that are not clear
2022-05-22 21:26:02 +01:00
7b9d00d661 feat(tree-sitter): add ts to open/close all
also refactor +fold-open-all, +fold-close-all to use cond instead of the
when case for vimish fold.
2022-05-22 21:26:01 +01:00
c3e360eeaa tweak(tree-sitter): add tree sitter check to foldp
instead of just checking if ts-fold is enabled I also check i
tree-sitter mode is actually enabled if not it will move onto hidehshow
2022-05-22 21:26:01 +01:00
c1f640209a feat(fold): add ts-fold support to wrappers
Changes:
- add +fold--ts-fold-p which only checks if the feature is around
- add ts-fold into +fold/toggle, +fold/open, +fold/close
- update doc strings
2022-05-22 21:26:01 +01:00
7eafc54347 Fix code-folding at EOL when cursor isn't at EOL 2020-02-06 15:20:42 -05:00
3a89c3f79d editor/fold: fix void-variable hs-block-start-regexp
Which will happen if +fold/next is called before hideshow is loaded.
2019-10-14 13:19:32 -04:00
d297dc6934 Minor refactor & comment revision across the board 2019-10-03 23:33:59 -04:00
c795a988e6 Conform many modules to new conventions 2019-07-23 12:30:47 +02:00
fa664f4e28 editor/fold: refactor & fix zm
This fixes an issue where zm wasn't auto-loading hideshow and
hs-minor-mode, preventing it from working.

Also reveals +fold/* commands to non-evil users (but as of yet, there
are still no non-evil keybinds for it).
2019-05-15 16:09:53 -04:00
b82e152898 Fix 9024d831 2019-05-14 20:15:13 -04:00
9024d831f8 Fix void-variable error in yaml-mode when folding 2019-05-14 15:04:11 -04:00
77e4cc4d58 💥 Remove :feature category
:feature was a "catch-all" category. Many of its modules fit better in
other categories, so they've been moved:

- feature/debugger -> tools/debugger
- feature/evil -> editor/evil
- feature/eval -> tools/eval
- feature/lookup -> tools/lookup
- feature/snippets -> editor/snippets
- feature/file-templates -> editor/file-templates
- feature/workspaces -> ui/workspaces

More potential changes in the future:

- A new :term category for terminal emulation modules (eshell, term and
  vterm).
- A new :os category for modules dedicated to os-specific functionality.
  The :tools macos module would fit here, but so would modules for nixos
  and arch.
- A new :services category for web-service integration, like wakatime,
  twitter, elfeed, gist and pastebin services.
2019-04-24 18:16:04 -04:00
b9a036a96c editor/fold: check outline-mode folds before hs
b/c hideshow fold checks produce more false positives.
2019-03-08 04:25:45 -05:00
7d0caf3efd New editor/fold module
Extracted from feature/evil and emacs/hideshow.
2019-02-18 00:47:46 -05:00