d12frosted / flyspell-correct

Distraction-free words correction with flyspell via selected interface.
Other
203 stars 14 forks source link

ivy menu not fully visible and save word deletes word #83

Closed atanasj closed 3 years ago

atanasj commented 4 years ago

Thanks for an excellent package. I am having a couple of problems… I am using this package on doom emacs with ivy.

When after C-o for correction options I get the below:

by default 2020-09-01 at 11 46 54 am

Also, when saving a word to my dictionary during a correction, it actually deletes the word…

Some system info that may be useful:

ProductName:    Mac OS X
ProductVersion: 10.15.6
BuildVersion:   19G2021
Hardware:

    Hardware Overview:

      Model Name: MacBook Pro
      Model Identifier: MacBookPro11,1
      Processor Name: Dual-Core Intel Core i7
      Processor Speed: 2.8 GHz
      Number of Processors: 1
      Total Number of Cores: 2
      L2 Cache (per Core): 256 KB
      L3 Cache: 4 MB
      Hyper-Threading Technology: Enabled
      Memory: 16 GB
      Boot ROM Version: 162.0.0.0.0
      SMC Version (system): 2.16f68
      Serial Number (system): C02MW0C8FH05
      Hardware UUID: BF15263D-A444-5710-9AAB-22BA85EE7EB5

emacsclient 28.0.50

I have the latest packages installed, and this is my doom config:

(use-package! flyspell-correct
  :after flyspell
  :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper)))

(use-package flyspell-correct-ivy
  :bind ("C-;" . flyspell-correct-wrapper)
  :init
  (setq flyspell-correct-interface #'flyspell-correct-ivy))

Any idea what might be going on?

d12frosted commented 4 years ago

Hey @atanasj

Could you please elaborate more on what's wrong on the screenshot? And what is C-o? To open menu with actions (e.g. ivy-dispatching-done)?

Regarding word deletion - I can't reproduce nor with my configs nor with bare Emacs. As you can see in the following two screenshots: (1) I called flyspell-correct-wrapper and hit M-o (ivy-dispatching-done) and (2) the state after I pressed s to save the word to my personal dictionary.

image image

I will check if it's related to changes in ivy (upgrading all packages right meow).

d12frosted commented 4 years ago

Just upgraded all my packages and still can't reproduce the second part. Will try to check doom configurations.

atanasj commented 4 years ago

Sorry for the tardy reply @d12frosted.

Could you please elaborate more on what's wrong on the screenshot?

With the screenshot it is cutting of the 'save' option for the correction.

And what is C-o? To open menu with actions (e.g. ivy-dispatching-done)?

I believe this is what it does... This is the command to have the options presented e.g., save, skip, etc.

It must be an issues either in my configuration or something to do with doom... Found this issue, however I have no clue if it's related... Any suggestions about how I could debug a little deeper?

This may make give you a clearer issues of what is happening... As you can see when I try to save the word 'Reproducibility' to the buffer... It disappears!

2020-09-14 22 34 36

d12frosted commented 4 years ago

With the screenshot it is cutting of the 'save' option for the correction.

Right, didn't notice.

It must be an issues either in my configuration or something to do with doom

I am trying to run Doom Emacs to reproduce the bug, but it throws errors during doom sync execution. So digging through that.

d12frosted commented 4 years ago

Found a way around. So I tried to reproduce and with very minimal setup (e.g. most of the modules where disabled) I could reproduce only original issue where save is not visible. But saving doesn't break anything. I am not familiar with doom enough to say what is wrong though. Maybe try disabling modules to see if something fixes it.

doom-flyspell-correct

atanasj commented 3 years ago

Sorry for my slow response... The original issues is resolved (can see the full list of options). However, the second issues remains. Any suggestions regarding which modules I should try and disable? See below for a list of minor-modes present when this error occurs (apologies for the verbosity, I just ran describe-mode, but not sure if this is the best way):

Enabled minor modes: +Lua-Love +Popup All-The-Icons-Ibuffer
All-The-Icons-Ivy-Rich Async-Bytecomp-Package Auto-Composition Auto-Compression
Auto-Encryption Auto-Fill Better-Jumper Better-Jumper-Local Column-Number
Company Company-Box Display-Line-Numbers Doom-Modeline Dtrt-Indent Editorconfig
Eldoc Electric-Indent Eros Evil Evil-Escape Evil-Goggles Evil-Local
Evil-Markdown Evil-Snipe Evil-Snipe-Local Evil-Snipe-Override
Evil-Snipe-Override-Local Evil-Surround File-Name-Shadow Flycheck
Flycheck-Popup-Tip Flyspell Flyspell-Lazy Font-Lock Gcmh General-Override
Global-Company Global-Eldoc Global-Evil-Surround Global-Flycheck
Global-Font-Lock Global-Git-Commit Global-Hl-Line Global-Magit-File
Global-So-Long Global-Undo-Tree Highlight-Indent-Guides Hl-Line Hl-Todo Hs Ivy
Ivy-Rich Line-Number Magit-File Mouse-Wheel Openwith Override-Global Pandoc
Persp Poly-Markdown Projectile Rainbow-Delimiters Recentf Save-Place
Shell-Dirtrack Show-Paren Size-Indication Smartparens Smartparens-Global Solaire
Solaire-Global Tex-Pdf Tex-Source-Correlate Transient-Mark Undo-Tree
Vi-Tilde-Fringe Visual-Line Which-Key Whitespace Window-Divider Winner
Ws-Butler-Global Yas Zoom

(Information about these minor modes follows the major mode info.)

Markdown mode defined in ‘markdown-mode.el’:
Major mode for editing Markdown files.

In addition to any hooks its parent mode ‘text-mode’ might have run,
this mode runs the hook ‘markdown-mode-hook’, as the final or penultimate step
during initialization.

key             binding
---             -------

C-c             Prefix Command
RET             markdown-enter-key
  (that binding is currently shadowed by another mode)
C-x             Prefix Command
ESC             Prefix Command
DEL             markdown-outdent-or-delete
  (that binding is currently shadowed by another mode)
<S-iso-lefttab>                 markdown-shifttab
<emacs-state>                   Prefix Command
<insert-state>                  Prefix Command
<motion-state>                  Prefix Command
<normal-state>                  Prefix Command
<remap>         Prefix Command
<visual-state>  Prefix Command

C-c C-a         Prefix Command
C-c C-b         markdown-outline-previous-same-level
C-c C-c         Prefix Command
C-c C-d         markdown-do
C-c C-f         markdown-outline-next-same-level
C-c TAB         markdown-insert-image
C-c C-j         markdown-insert-list-item
C-c C-k         markdown-kill-thing-at-point
C-c C-l         markdown-insert-link
C-c C-n         markdown-outline-next
C-c C-o         markdown-follow-thing-at-point
C-c C-p         markdown-outline-previous
C-c C-s         Prefix Command
C-c C-t         Prefix Command
C-c C-u         markdown-outline-up
C-c C-x         Prefix Command
C-c ESC         Prefix Command
C-c C-]         markdown-complete
C-c '           markdown-edit-code-block
C-c -           markdown-insert-hr
C-c <           markdown-outdent-region
C-c >           markdown-indent-region
C-c C--         markdown-promote
C-c C-=         markdown-demote
C-c <S-down>    markdown-table-insert-row
C-c <S-left>    markdown-table-delete-column
C-c <S-right>   markdown-table-insert-column
C-c <S-up>      markdown-table-delete-row
C-c <down>      markdown-move-down
C-c <left>      markdown-promote
C-c <right>     markdown-demote
C-c <up>        markdown-move-up

C-x n           Prefix Command

M-RET           markdown-insert-list-item
M-n             markdown-next-link
  (that binding is currently shadowed by another mode)
M-p             markdown-previous-link
M-s-"           tide-insert-pipe
M-s-'           tide-insert-assign
M-s-b           ebib-insert-citation
C-M-{           markdown-backward-block
C-M-}           markdown-forward-block

<emacs-state> ESC               Prefix Command

<motion-state> SPC              Prefix Command

<visual-state> SPC              Prefix Command

<normal-state> SPC              Prefix Command

<insert-state> ESC              Prefix Command

<remap> <backward-page>         markdown-backward-page
<remap> <backward-paragraph>    markdown-backward-paragraph
<remap> <forward-page>          markdown-forward-page
<remap> <forward-paragraph>     markdown-forward-paragraph
<remap> <mark-page>             markdown-mark-page
<remap> <mark-paragraph>        markdown-mark-paragraph
<remap> <narrow-to-page>        markdown-narrow-to-page

C-M-i           ispell-complete-word
  (that binding is currently shadowed by another mode)

C-c C-t !       markdown-insert-header-setext-1
C-c C-t 1       markdown-insert-header-atx-1
C-c C-t 2       markdown-insert-header-atx-2
C-c C-t 3       markdown-insert-header-atx-3
C-c C-t 4       markdown-insert-header-atx-4
C-c C-t 5       markdown-insert-header-atx-5
C-c C-t 6       markdown-insert-header-atx-6
C-c C-t @       markdown-insert-header-setext-2
C-c C-t H       markdown-insert-header-setext-dwim
C-c C-t h       markdown-insert-header-dwim
C-c C-t s       markdown-insert-header-setext-2
C-c C-t t       markdown-insert-header-setext-1

C-c C-a L       markdown-insert-link
C-c C-a f       markdown-insert-footnote
C-c C-a l       markdown-insert-link
C-c C-a r       markdown-insert-link
C-c C-a u       markdown-insert-uri
C-c C-a w       markdown-insert-wiki-link

C-c C-x C-e     markdown-toggle-math
C-c C-x C-f     markdown-toggle-fontify-code-blocks-natively
C-c C-x TAB     markdown-toggle-inline-images
C-c C-x C-l     markdown-toggle-url-hiding
C-c C-x RET     markdown-toggle-markup-hiding
C-c C-x C-x     markdown-toggle-gfm-checkbox
C-c C-x d       markdown-move-down
C-c C-x l       markdown-promote
C-c C-x m       markdown-insert-list-item
C-c C-x r       markdown-demote
C-c C-x u       markdown-move-up

C-c C-M-h       markdown-mark-subtree
C-c M-h         markdown-mark-block
C-c M-s-b       ebib

C-c C-c ]       markdown-complete-buffer
C-c C-c ^       markdown-table-sort-lines
C-c C-c c       markdown-check-refs
C-c C-c e       markdown-export
C-c C-c l       markdown-live-preview-mode
C-c C-c m       markdown-other-window
C-c C-c n       markdown-cleanup-list-numbers
C-c C-c o       markdown-open
C-c C-c p       markdown-preview
C-c C-c t       markdown-table-transpose
C-c C-c u       markdown-unused-refs
C-c C-c v       markdown-export-and-preview
C-c C-c w       markdown-kill-ring-save
C-c C-c |       markdown-table-convert-region

C-c C-s !       markdown-insert-header-setext-1
C-c C-s -       markdown-insert-hr
C-c C-s 1       markdown-insert-header-atx-1
C-c C-s 2       markdown-insert-header-atx-2
C-c C-s 3       markdown-insert-header-atx-3
C-c C-s 4       markdown-insert-header-atx-4
C-c C-s 5       markdown-insert-header-atx-5
C-c C-s 6       markdown-insert-header-atx-6
C-c C-s @       markdown-insert-header-setext-2
C-c C-s C       markdown-insert-gfm-code-block
C-c C-s H       markdown-insert-header-setext-dwim
C-c C-s P       markdown-pre-region
C-c C-s Q       markdown-blockquote-region
C-c C-s [       markdown-insert-gfm-checkbox
C-c C-s b       markdown-insert-bold
C-c C-s c       markdown-insert-code
C-c C-s e       markdown-insert-italic
C-c C-s f       markdown-insert-footnote
C-c C-s h       markdown-insert-header-dwim
C-c C-s i       markdown-insert-italic
C-c C-s k       markdown-insert-kbd
C-c C-s l       markdown-insert-link
C-c C-s p       markdown-insert-pre
C-c C-s q       markdown-insert-blockquote
C-c C-s s       markdown-insert-strike-through
C-c C-s t       markdown-insert-table
C-c C-s w       markdown-insert-wiki-link

C-x n b         markdown-narrow-to-block
C-x n s         markdown-narrow-to-subtree

<emacs-state> M-SPC             Prefix Command

<emacs-state> M-SPC m           Prefix Command

<motion-state> SPC m            Prefix Command

<visual-state> SPC m            Prefix Command

<normal-state> SPC m            Prefix Command

<insert-state> M-SPC            Prefix Command

<insert-state> M-SPC m          Prefix Command

<emacs-state> M-SPC m '         markdown-edit-code-block
<emacs-state> M-SPC m e         markdown-export
<emacs-state> M-SPC m i         Prefix Command
<emacs-state> M-SPC m o         markdown-open
<emacs-state> M-SPC m p         markdown-preview

<motion-state> SPC m '          markdown-edit-code-block
<motion-state> SPC m e          markdown-export
<motion-state> SPC m i          Prefix Command
<motion-state> SPC m o          markdown-open
<motion-state> SPC m p          markdown-preview

<visual-state> SPC m '          markdown-edit-code-block
<visual-state> SPC m e          markdown-export
<visual-state> SPC m i          Prefix Command
<visual-state> SPC m o          markdown-open
<visual-state> SPC m p          markdown-preview

<normal-state> SPC m '          markdown-edit-code-block
<normal-state> SPC m e          markdown-export
<normal-state> SPC m i          Prefix Command
<normal-state> SPC m o          markdown-open
<normal-state> SPC m p          markdown-preview

<insert-state> M-SPC m '        markdown-edit-code-block
<insert-state> M-SPC m e        markdown-export
<insert-state> M-SPC m i        Prefix Command
<insert-state> M-SPC m o        markdown-open
<insert-state> M-SPC m p        markdown-preview

<emacs-state> M-SPC m i i       markdown-insert-image
<emacs-state> M-SPC m i l       markdown-insert-link
<emacs-state> M-SPC m i t       markdown-toc-generate-toc

<motion-state> SPC m i i        markdown-insert-image
<motion-state> SPC m i l        markdown-insert-link
<motion-state> SPC m i t        markdown-toc-generate-toc

<visual-state> SPC m i i        markdown-insert-image
<visual-state> SPC m i l        markdown-insert-link
<visual-state> SPC m i t        markdown-toc-generate-toc

<normal-state> SPC m i i        markdown-insert-image
<normal-state> SPC m i l        markdown-insert-link
<normal-state> SPC m i t        markdown-toc-generate-toc

<insert-state> M-SPC m i i      markdown-insert-image
<insert-state> M-SPC m i l      markdown-insert-link
<insert-state> M-SPC m i t      markdown-toc-generate-toc


+Lua-Love minor mode (no indicator):
A project minor mode generated by ‘def-project-mode!’.

If called interactively, enable +Lua-Love mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

+Popup minor mode (no indicator):
Global minor mode representing Doom’s popup management system.

If called interactively, enable +Popup mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

All-The-Icons-Ibuffer minor mode (no indicator):
Display icons for all buffers in ibuffer.

If called interactively, enable All-The-Icons-Ibuffer mode if ARG
is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

All-The-Icons-Ivy-Rich minor mode (no indicator):
Better experience with icons for ivy.

If called interactively, enable All-The-Icons-Ivy-Rich mode if
ARG is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

Async-Bytecomp-Package minor mode (no indicator):
Byte compile asynchronously packages installed with package.el.
Async compilation of packages can be controlled by
‘async-bytecomp-allowed-packages’.

If called interactively, enable Async-Bytecomp-Package mode if
ARG is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

Auto-Composition minor mode (no indicator):
Toggle Auto Composition mode.

If called interactively, enable Auto-Composition mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

When Auto Composition mode is enabled, text characters are
automatically composed by functions registered in
‘composition-function-table’.

You can use ‘global-auto-composition-mode’ to turn on
Auto Composition mode in all buffers (this is the default).

Auto-Compression minor mode (no indicator):
Toggle Auto Compression mode.

If called interactively, enable Auto-Compression mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Auto Compression mode is a global minor mode.  When enabled,
compressed files are automatically uncompressed for reading, and
compressed when writing.

Auto-Encryption minor mode (no indicator):
Toggle automatic file encryption/decryption (Auto Encryption mode).

If called interactively, enable Auto-Encryption mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Auto-Fill minor mode (indicator Fill):
Toggle automatic line breaking (Auto Fill mode).

If called interactively, enable Auto-Fill mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

When Auto Fill mode is enabled, inserting a space at a column
beyond ‘current-fill-column’ automatically breaks the line at a
previous space.

When ‘auto-fill-mode’ is on, the ‘auto-fill-function’ variable is
non-nil.

The value of ‘normal-auto-fill-function’ specifies the function to use
for ‘auto-fill-function’ when turning Auto Fill mode on.

Better-Jumper minor mode (no indicator):
Toggle Better-Jumper-Local mode in all buffers.
With prefix ARG, enable Better-Jumper mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Better-Jumper-Local mode is enabled in all buffers where
‘turn-on-better-jumper-mode’ would do it.
See ‘better-jumper-local-mode’ for more information on Better-Jumper-Local mode.

Better-Jumper-Local minor mode (indicator better-jumper):
better-jumper minor mode.

If called interactively, enable Better-Jumper-Local mode if ARG
is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

Column-Number minor mode (no indicator):
Toggle column number display in the mode line (Column Number mode).

If called interactively, enable Column-Number mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Company minor mode (indicator company):
"complete anything"; is an in-buffer completion framework.
Completion starts automatically, depending on the values
‘company-idle-delay’ and ‘company-minimum-prefix-length’.

If called interactively, enable Company mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Completion can be controlled with the commands:
‘company-complete-common’, ‘company-complete-selection’, ‘company-complete’,
‘company-select-next’, ‘company-select-previous’.  If these commands are
called before ‘company-idle-delay’, completion will also start.

Completions can be searched with ‘company-search-candidates’ or
‘company-filter-candidates’.  These can be used while completion is
inactive, as well.

The completion data is retrieved using ‘company-backends’ and displayed
using ‘company-frontends’.  If you want to start a specific backend, call
it interactively or use ‘company-begin-backend’.

By default, the completions list is sorted alphabetically, unless the
backend chooses otherwise, or ‘company-transformers’ changes it later.

regular keymap (‘company-mode-map’):

key             binding
---             -------

keymap during active completions (‘company-active-map’):

key             binding
---             -------

C-d             company-next-page
C-g             company-abort
C-h             company-show-doc-buffer
TAB             company-complete-common-or-cycle
C-j             company-select-next
C-k             company-select-previous
C-n             company-select-next
C-p             company-select-previous
C-s             company-filter-candidates
C-u             company-previous-page
ESC             Prefix Command
C-S-s           counsel-company
C-SPC           company-complete-common
<backtab>       company-select-previous
<down>          company-select-next-or-abort
<down-mouse-1>  ignore
<down-mouse-3>  ignore
<mouse-1>       company-complete-mouse
<mouse-3>       company-select-mouse
<remap>         Prefix Command
<tab>           company-complete-selection
<up>            company-select-previous-or-abort
<up-mouse-1>    ignore
<up-mouse-3>    ignore

<remap> <company-show-doc-buffer>
                                company-box-doc-manually
<remap> <scroll-down-command>   company-previous-page
<remap> <scroll-up-command>     company-next-page

C-M-s           company-filter-candidates
ESC ESC         Prefix Command
M-0 .. M-9      company-complete-number
M-n             company-select-next
M-p             company-select-previous

M-ESC ESC       company-abort


Company-Box minor mode (indicator company-box):
Company-box minor mode.

If called interactively, enable Company-Box mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Display-Line-Numbers minor mode (no indicator):
Toggle display of line numbers in the buffer.
This uses ‘display-line-numbers’ internally.

If called interactively, enable Display-Line-Numbers mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

To change the type of line numbers displayed by default,
customize ‘display-line-numbers-type’.  To change the type while
the mode is on, set ‘display-line-numbers’ directly.

Doom-Modeline minor mode (no indicator):
Toggle doom-modeline on or off.

If called interactively, enable Doom-Modeline mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Dtrt-Indent minor mode (indicator dtrt-indent):
This function has :around advice: ‘doom--fix-broken-smie-modes-a’.

Toggle dtrt-indent mode.
With no argument, this command toggles the mode.  Non-null prefix
argument turns on the mode.  Null prefix argument turns off the
mode.

If called interactively, enable Dtrt-Indent mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

When dtrt-indent mode is enabled, the proper indentation offset
and ‘indent-tabs-mode’ will be guessed for newly opened files and
adjusted transparently.

Editorconfig minor mode (indicator EditorConfig):
Toggle EditorConfig feature.

If called interactively, enable Editorconfig mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

To disable EditorConfig in some buffers, modify
‘editorconfig-exclude-modes’ or ‘editorconfig-exclude-regexps’.

Eldoc minor mode (indicator ElDoc):
Toggle echo area display of Lisp objects at point (ElDoc mode).

If called interactively, enable Eldoc mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

ElDoc mode is a buffer-local minor mode.  When enabled, the echo
area displays information about a function or variable in the
text where point is.  If point is on a documented variable, it
displays the first line of that variable’s doc string.  Otherwise
it displays the argument list of the function called in the
expression point is on.

Electric-Indent minor mode (no indicator):
Toggle on-the-fly reindentation (Electric Indent mode).

If called interactively, enable Electric-Indent mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

When enabled, this reindents whenever the hook ‘electric-indent-functions’
returns non-nil, or if you insert a character from ‘electric-indent-chars’.

This is a global minor mode.  To toggle the mode in a single buffer,
use ‘electric-indent-local-mode’.

Eros minor mode (no indicator):
Display Emacs Lisp evaluation results overlays.

If called interactively, enable Eros mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Evil minor mode (no indicator):
This function has :around advice: ‘ad-Advice-evil-mode’.

Toggle Evil-Local mode in all buffers.
With prefix ARG, enable Evil mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Evil-Local mode is enabled in all buffers where
‘evil-initialize’ would do it.
See ‘evil-local-mode’ for more information on Evil-Local mode.

Evil-Escape minor mode (indicatorjk):
Buffer-local minor mode to escape insert state and everything else
with a key sequence.

If called interactively, enable Evil-Escape mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Goggles minor mode (indicator EG):
evil-goggles global minor mode.

If called interactively, enable Evil-Goggles mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Local minor mode (no indicator):
Minor mode for setting up Evil in a single buffer.

If called interactively, enable Evil-Local mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Markdown minor mode (indicator EvilMarkdown):
Buffer local minor mode for evil-markdown

If called interactively, enable Evil-Markdown mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Snipe minor mode (no indicator):
Toggle Evil-Snipe-Local mode in all buffers.
With prefix ARG, enable Evil-Snipe mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Evil-Snipe-Local mode is enabled in all buffers where
‘turn-on-evil-snipe-mode’ would do it.
See ‘evil-snipe-local-mode’ for more information on Evil-Snipe-Local mode.

Evil-Snipe-Local minor mode (indicator snipe):
evil-snipe minor mode.

If called interactively, enable Evil-Snipe-Local mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Snipe-Override minor mode (no indicator):
Toggle Evil-Snipe-Override-Local mode in all buffers.
With prefix ARG, enable Evil-Snipe-Override mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Evil-Snipe-Override-Local mode is enabled in all buffers where
‘turn-on-evil-snipe-override-mode’ would do it.
See ‘evil-snipe-override-local-mode’ for more information on Evil-Snipe-Override-Local mode.

Evil-Snipe-Override-Local minor mode (no indicator):
evil-snipe minor mode that overrides evil-mode f/F/t/T/;/, bindings.

If called interactively, enable Evil-Snipe-Override-Local mode if
ARG is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

Evil-Surround minor mode (no indicator):
Buffer-local minor mode to emulate surround.vim.

If called interactively, enable Evil-Surround mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

File-Name-Shadow minor mode (no indicator):
Toggle file-name shadowing in minibuffers (File-Name Shadow mode).

If called interactively, enable File-Name-Shadow mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

File-Name Shadow mode is a global minor mode.  When enabled, any
part of a filename being read in the minibuffer that would be
ignored (because the result is passed through
‘substitute-in-file-name’) is given the properties in
‘file-name-shadow-properties’, which can be used to make that
portion dim, invisible, or otherwise less visually noticeable.

Flycheck minor mode (indicator FlyC-):
Flycheck is a minor mode for on-the-fly syntax checking.

In ‘flycheck-mode’ the buffer is automatically syntax-checked
using the first suitable syntax checker from ‘flycheck-checkers’.
Use ‘flycheck-select-checker’ to select a checker for the current
buffer manually.

If you run into issues, use ‘M-x flycheck-verify-setup’ to get help.

Flycheck supports many languages out of the box, and many
additional ones are available on MELPA.  Adding new ones is very
easy.  Complete documentation is available online at URL
‘https://www.flycheck.org/en/latest/’.  Please report issues and
request features at URL ‘https://github.com/flycheck/flycheck’.

Flycheck displays its status in the mode line.  In the default
configuration, it looks like this:

‘FlyC’     This buffer has not been checked yet.
‘FlyC-’    Flycheck doesn’t have a checker for this buffer.
‘FlyC*’    Flycheck is running.  Expect results soon!
‘FlyC:3|2’ This buffer contains three warnings and two errors.
           Use ‘SPC c x’ to see the list.

You may also see the following icons:
‘FlyC!’    The checker crashed.
‘FlyC.’    The last syntax check was manually interrupted.
‘FlyC?’    The checker did something unexpected, like exiting with 1
           but returning no errors.

The following keybindings are available in ‘flycheck-mode’:

key             binding
---             -------

C-c             Prefix Command

C-c !           Prefix Command

C-c ! C-c       flycheck-compile
C-c ! C-w       flycheck-copy-errors-as-kill
C-c ! ?         flycheck-describe-checker
C-c ! C         flycheck-clear
C-c ! H         display-local-help
C-c ! V         flycheck-version
C-c ! c         flycheck-buffer
C-c ! e         flycheck-explain-error-at-point
C-c ! h         flycheck-display-error-at-point
C-c ! i         flycheck-manual
C-c ! l         flycheck-list-errors
C-c ! n         flycheck-next-error
C-c ! p         flycheck-previous-error
C-c ! s         flycheck-select-checker
C-c ! v         flycheck-verify-setup
C-c ! x         flycheck-disable-checker

(you can change the prefix by customizing
‘flycheck-keymap-prefix’)

If called interactively, enable Flycheck mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Flycheck-Popup-Tip minor mode (no indicator):
A minor mode to show Flycheck error messages in a popup.

If called interactively, enable Flycheck-Popup-Tip mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Flyspell minor mode (indicator Fly):
Toggle on-the-fly spell checking (Flyspell mode).

If called interactively, enable Flyspell mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Flyspell mode is a buffer-local minor mode.  When enabled, it
spawns a single Ispell process and checks each word.  The default
flyspell behavior is to highlight incorrect words.

Bindings:
z =: correct words (using Ispell).
M-x flyspell-auto-correct-word: automatically correct word.
M-x flyspell-auto-correct-previous-word: automatically correct the last misspelled word.
M-x flyspell-correct-word (or down-mouse-2): popup correct words.

Hooks:
This runs ‘flyspell-mode-hook’ after flyspell mode is entered or exit.

Remark:
‘flyspell-mode’ uses ‘ispell-mode’.  Thus all Ispell options are
valid.  For instance, a different dictionary can be used by
invoking ‘ispell-change-dictionary’.

Consider using the ‘ispell-parser’ to check your text.  For instance
consider adding:
(add-hook 'tex-mode-hook (function (lambda () (setq ispell-parser 'tex))))
in your init file.

M-x flyspell-region checks all words inside a region.
M-x flyspell-buffer checks the whole buffer.

Flyspell-Lazy minor mode (no indicator):
Turn on flyspell-lazy-mode.

If called interactively, enable Flyspell-Lazy mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Turning on flyspell-lazy-mode will set up hooks which
change how ‘flyspell-mode’ works, in every buffer for which
flyspell is enabled.

When called interactively with no prefix argument this command
toggles the mode.  With a prefix argument, it enables the mode
if the argument is positive and otherwise disables the mode.

When called from Lisp, this command enables the mode if the
argument is omitted or nil, and toggles the mode if the argument
is ’toggle.

Font-Lock minor mode (no indicator):
Toggle syntax highlighting in this buffer (Font Lock mode).

If called interactively, enable Font-Lock mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

When Font Lock mode is enabled, text is fontified as you type it:

 - Comments are displayed in ‘font-lock-comment-face’;
 - Strings are displayed in ‘font-lock-string-face’;
 - Certain other expressions are displayed in other faces
   according to the value of the variable ‘font-lock-keywords’.

To customize the faces (colors, fonts, etc.) used by Font Lock for
fontifying different parts of buffer text, use M-x customize-face.

You can enable Font Lock mode in any major mode automatically by
turning on in the major mode’s hook.  For example, put in your
~/.emacs:

 (add-hook 'c-mode-hook 'turn-on-font-lock)

Alternatively, you can use Global Font Lock mode to automagically
turn on Font Lock mode in buffers whose major mode supports it
and whose major mode is one of ‘font-lock-global-modes’.  For
example, put in your ~/.emacs:

 (global-font-lock-mode t)

Where major modes support different levels of fontification, you
can use the variable ‘font-lock-maximum-decoration’ to specify
which level you generally prefer.  When you turn Font Lock mode
on/off the buffer is fontified/defontified, though fontification
occurs only if the buffer is less than ‘font-lock-maximum-size’.

To add your own highlighting for some major mode, and modify the
highlighting selected automatically via the variable
‘font-lock-maximum-decoration’, you can use
‘font-lock-add-keywords’.

To fontify a buffer, without turning on Font Lock mode and
regardless of buffer size, you can use M-x font-lock-fontify-buffer.

To fontify a block (the function or paragraph containing point,
or a number of lines around point), perhaps because modification
on the current line caused syntactic change on other lines, you
can use M-o M-o.

You can set your own default settings for some mode, by setting a
buffer local value for ‘font-lock-defaults’, via its mode hook.

The above is the default behavior of ‘font-lock-mode’; you may
specify your own function which is called when ‘font-lock-mode’
is toggled via ‘font-lock-function’.

Gcmh minor mode (indicator GCMH):
Minor mode to tweak Garbage Collection strategy.

If called interactively, enable Gcmh mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

General-Override minor mode (no indicator):
A global minor mode used for key definitions that should override others.

If called interactively, enable General-Override mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Global-Company minor mode (no indicator):
Toggle Company mode in all buffers.
With prefix ARG, enable Global Company mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Company mode is enabled in all buffers where
‘company-mode-on’ would do it.
See ‘company-mode’ for more information on Company mode.

Global-Eldoc minor mode (no indicator):
Toggle Eldoc mode in all buffers.
With prefix ARG, enable Global Eldoc mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Eldoc mode is enabled in all buffers where
‘turn-on-eldoc-mode’ would do it.
See ‘eldoc-mode’ for more information on Eldoc mode.

Global-Evil-Surround minor mode (no indicator):
Toggle Evil-Surround mode in all buffers.
With prefix ARG, enable Global Evil-Surround mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Evil-Surround mode is enabled in all buffers where
‘turn-on-evil-surround-mode’ would do it.
See ‘evil-surround-mode’ for more information on Evil-Surround mode.

Global-Flycheck minor mode (no indicator):
Toggle Flycheck mode in all buffers.
With prefix ARG, enable Global Flycheck mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Flycheck mode is enabled in all buffers where
‘flycheck-mode-on-safe’ would do it.
See ‘flycheck-mode’ for more information on Flycheck mode.

Global-Font-Lock minor mode (no indicator):
Toggle Font-Lock mode in all buffers.
With prefix ARG, enable Global Font-Lock mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Font-Lock mode is enabled in all buffers where
‘turn-on-font-lock-if-desired’ would do it.
See ‘font-lock-mode’ for more information on Font-Lock mode.

Global-Git-Commit minor mode (no indicator):
Edit Git commit messages.
This global mode arranges for ‘git-commit-setup’ to be called
when a Git commit message file is opened.  That usually happens
when Git uses the Emacsclient as $GIT_EDITOR to have the user
provide such a commit message.

If called interactively, enable Global Git-Commit mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Global-Hl-Line minor mode (no indicator):
Toggle Hl-Line mode in all buffers.
With prefix ARG, enable Global Hl-Line mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Hl-Line mode is enabled in all buffers where
‘(lambda nil (and (not hl-line-mode) (cond ((null global-hl-line-modes) nil) ((eq global-hl-line-modes t)) ((eq (car global-hl-line-modes) ’not) (not (derived-mode-p global-hl-line-modes))) ((apply #’derived-mode-p global-hl-line-modes))) (hl-line-mode 1)))’ would do it.
See ‘hl-line-mode’ for more information on Hl-Line mode.

Global-Magit-File minor mode (no indicator):
Toggle Magit-File mode in all buffers.
With prefix ARG, enable Global Magit-File mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Magit-File mode is enabled in all buffers where
‘magit-file-mode-turn-on’ would do it.
See ‘magit-file-mode’ for more information on Magit-File mode.

Global-So-Long minor mode (no indicator):
Toggle automated performance mitigations for files with long lines.

If called interactively, enable Global So-Long mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Many Emacs modes struggle with buffers which contain excessively long lines,
and may consequently cause unacceptable performance issues.

This is commonly on account of "minified" code (i.e. code that has been
compacted into the smallest file size possible, which often entails removing
newlines should they not be strictly necessary).

When such files are detected by ‘so-long-predicate’, we invoke the selected
‘so-long-action’ to mitigate potential performance problems in the buffer.

Use M-x so-long-commentary for more information.

Use M-x so-long-customize to configure the behaviour.

Global-Undo-Tree minor mode (no indicator):
Toggle Undo-Tree mode in all buffers.
With prefix ARG, enable Global Undo-Tree mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Undo-Tree mode is enabled in all buffers where
‘turn-on-undo-tree-mode’ would do it.
See ‘undo-tree-mode’ for more information on Undo-Tree mode.

Highlight-Indent-Guides minor mode (indicator h-i-g):
Display indent guides in a buffer.

If called interactively, enable Highlight-Indent-Guides mode if
ARG is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

Hl-Line minor mode (no indicator):
Toggle highlighting of the current line (Hl-Line mode).

If called interactively, enable Hl-Line mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Hl-Line mode is a buffer-local minor mode.  If
‘hl-line-sticky-flag’ is non-nil, Hl-Line mode highlights the
line about the buffer’s point in all windows.  Caveat: the
buffer’s point might be different from the point of a
non-selected window.  Hl-Line mode uses the function
‘hl-line-highlight’ on ‘post-command-hook’ in this case.

When ‘hl-line-sticky-flag’ is nil, Hl-Line mode highlights the
line about point in the selected window only.  In this case, it
uses the function ‘hl-line-maybe-unhighlight’ in
addition to ‘hl-line-highlight’ on ‘post-command-hook’.

Hl-Todo minor mode (no indicator):
This function has :around advice: ‘+hl-todo-clamp-font-lock-fontify-region-a’.

Highlight TODO and similar keywords in comments and strings.

If called interactively, enable Hl-Todo mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Hs minor mode (indicator hs):
Minor mode to selectively hide/show code and comment blocks.

If called interactively, enable Hs minor mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

When hideshow minor mode is on, the menu bar is augmented with hideshow
commands and the hideshow commands are enabled.
The value (hs . t) is added to ‘buffer-invisibility-spec’.

The main commands are: ‘hs-hide-all’, ‘hs-show-all’, ‘hs-hide-block’,
‘hs-show-block’, ‘hs-hide-level’ and ‘hs-toggle-hiding’.  There is also
‘hs-hide-initial-comment-block’.

Turning hideshow minor mode off reverts the menu bar and the
variables to default values and disables the hideshow commands.

Lastly, the normal hook ‘hs-minor-mode-hook’ is run using ‘run-hooks’.

Key bindings:
key             binding
---             -------

C-c             Prefix Command
<S-mouse-2>     hs-toggle-hiding

C-c @           Prefix Command

C-c @ C-a       hs-show-all
C-c @ C-c       hs-toggle-hiding
C-c @ C-d       hs-hide-block
C-c @ C-e       hs-toggle-hiding
C-c @ C-h       hs-hide-block
C-c @ C-l       hs-hide-level
C-c @ C-s       hs-show-block
C-c @ C-t       hs-hide-all
C-c @ ESC       Prefix Command

C-c @ C-M-h     hs-hide-all
C-c @ C-M-s     hs-show-all


Ivy minor mode (indicator ivy):
Toggle Ivy mode on or off.
Turn Ivy mode on if ARG is positive, off otherwise.
Turning on Ivy mode sets ‘completing-read-function’ to
‘ivy-completing-read’.

Global bindings:
key             binding
---             -------

<remap>         Prefix Command

<remap> <switch-to-buffer>      ivy-switch-buffer
<remap> <switch-to-buffer-other-window>
                                ivy-switch-buffer-other-window

Minibuffer bindings:
key             binding
---             -------

C-a             move-beginning-of-line
C-c             Prefix Command
C-g             minibuffer-keyboard-quit
TAB             ivy-partial-or-done
C-j             next-line
C-k             previous-line
C-l             ivy-alt-done
RET             ivy-done
C-o             ivy-dispatching-done
C-r             evil-paste-from-register
C-s             counsel-minibuffer-history
C-u             evil-delete-back-to-indentation
C-v             yank
C-w             doom/delete-backward-word
C-z             ??
ESC             Prefix Command
SPC             self-insert-command
$               ivy-magic-read-file-env
C-S-j           scroll-up-command
C-S-k           scroll-down-command
S-SPC           ivy-restrict-to-matches
C-SPC           ivy-mark
C-S-SPC         ivy-unmark
<down-mouse-1>  ignore
<escape>        abort-recursive-edit
<insert-state>  Prefix Command
<mouse-1>       ivy-mouse-done
<mouse-3>       ivy-mouse-dispatching-done
<next>          ivy-scroll-up-command
<prior>         ivy-scroll-down-command
<remap>         Prefix Command
<right>         ivy-forward-char

<insert-state> C-j              next-line
<insert-state> C-k              previous-line

C-c C-a         ivy-toggle-ignore
C-c C-e         +ivy/woccur
C-c C-o         ivy-occur
C-c C-s         ivy-rotate-sort

<remap> <backward-delete-char-untabify>
                                ivy-backward-delete-char
<remap> <backward-kill-word>    ivy-backward-kill-word
<remap> <beginning-of-buffer>   ivy-beginning-of-buffer
<remap> <delete-backward-char>  ivy-backward-delete-char
<remap> <delete-char>           ivy-delete-char
<remap> <describe-mode>         ivy-help
<remap> <doom/delete-backward-word>
                                ivy-backward-kill-word
<remap> <end-of-buffer>         ivy-end-of-buffer
<remap> <forward-char>          ivy-forward-char
<remap> <kill-line>             ivy-kill-line
<remap> <kill-ring-save>        ivy-kill-ring-save
<remap> <kill-whole-line>       ivy-kill-whole-line
<remap> <kill-word>             ivy-kill-word
<remap> <next-line>             ivy-next-line
<remap> <previous-line>         ivy-previous-line
<remap> <scroll-down-command>   ivy-scroll-down-command
<remap> <scroll-up-command>     ivy-scroll-up-command

C-M-a           ivy-read-action
C-M-j           ivy-immediate-done
M-RET           ivy-call
C-M-n           ivy-next-line-and-call
C-M-o           ivy-dispatching-call
C-M-p           ivy-previous-line-and-call
C-M-y           ivy-insert-current-full
M-a             ivy-toggle-marks
M-i             ivy-insert-current
M-j             ivy-yank-word
M-n             ivy-next-history-element
M-o             hydra-ivy/body
M-p             ivy-previous-history-element
M-r             ivy-toggle-regexp-quote
M-v             ivy-scroll-down-command


Ivy-Rich minor mode (no indicator):
Toggle ivy-rich mode globally.

If called interactively, enable Ivy-Rich mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Line-Number minor mode (no indicator):
Toggle line number display in the mode line (Line Number mode).

If called interactively, enable Line-Number mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Line numbers do not appear for very large buffers and buffers
with very long lines; see variables ‘line-number-display-limit’
and ‘line-number-display-limit-width’.

Magit-File minor mode (no indicator):
Enable some Magit features in a file-visiting buffer.

If called interactively, enable Magit-File mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Currently this only adds the following key bindings.

key             binding
---             -------

C-c             Prefix Command
C-x             Prefix Command
<override-state>                all

C-c ESC         Prefix Command

C-x ESC         Prefix Command
C-x g           magit-status

C-c M-g         magit-file-dispatch

C-x M-g         magit-dispatch


Mouse-Wheel minor mode (no indicator):
Toggle mouse wheel support (Mouse Wheel mode).

If called interactively, enable Mouse-Wheel mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Openwith minor mode (no indicator):
Automatically open files with external programs.

If called interactively, enable Openwith mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Override-Global minor mode (no indicator):
A minor mode so that keymap settings override other modes.

If called interactively, enable Override-Global mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Pandoc minor mode (indicator Pandoc/native):
Minor mode for interacting with Pandoc.

If called interactively, enable Pandoc mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Persp minor mode (indicator #PR_qu):
Toggle the persp-mode.
When active, keeps track of multiple ’perspectives’,
named collections of buffers and window configurations.
Here is a keymap of this minor mode:
key             binding
---             -------

C-c             Prefix Command
<remap>         Prefix Command

<remap> <delete-window>         +workspace/close-window-or-workspace
<remap> <evil-window-delete>    +workspace/close-window-or-workspace

C-c p           persp-key-map

C-c p C         persp-kill
C-c p I         persp-import-win-conf
C-c p K         persp-kill-buffer
C-c p L         persp-load-from-file-by-names
C-c p S         persp-window-switch
C-c p W         persp-save-to-file-by-names
C-c p a         persp-add-buffer
C-c p b         persp-switch-to-buffer
C-c p c         persp-copy
C-c p i         persp-import-buffers
C-c p k         persp-remove-buffer
C-c p l         persp-load-state-from-file
C-c p n         persp-next
C-c p o         ??
C-c p p         persp-prev
C-c p r         persp-rename
C-c p s         persp-frame-switch
C-c p t         persp-temporarily-display-buffer
C-c p w         persp-save-state-to-file
C-c p z         persp-save-and-kill

If called interactively, enable Persp mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Poly-Markdown minor mode (indicator PM):
nil

key             binding
---             -------

ESC             Prefix Command

M-n             polymode-map

M-n C-n         polymode-next-chunk
M-n C-p         polymode-previous-chunk
M-n C-t         polymode-toggle-chunk-narrowing
M-n ESC         Prefix Command
M-n $           polymode-show-process-buffer
M-n E           polymode-set-exporter
M-n T           polymode-set-tangler
M-n W           polymode-set-weaver
M-n e           polymode-export
M-n t           polymode-tangle
M-n v           polymode-eval-map
M-n w           polymode-weave

M-n C-M-n       polymode-next-chunk-same-type
M-n C-M-p       polymode-previous-chunk-same-type
M-n M-k         polymode-kill-chunk
M-n M-m         polymode-mark-or-extend-chunk

M-n v b         polymode-eval-buffer
M-n v d         polymode-eval-buffer-from-point-to-end
M-n v u         polymode-eval-buffer-from-beg-to-point
M-n v v         polymode-eval-region-or-chunk
M-n v <down>    polymode-eval-buffer-from-point-to-end
M-n v <up>      polymode-eval-buffer-from-beg-to-point


Projectile minor mode (indicator Projectile):
Minor mode to assist project management and navigation.

When called interactively, toggle ‘projectile-mode’.  With prefix
ARG, enable ‘projectile-mode’ if ARG is positive, otherwise disable
it.

When called from Lisp, enable ‘projectile-mode’ if ARG is omitted,
nil or positive.  If ARG is ‘toggle’, toggle ‘projectile-mode’.
Otherwise behave as if called interactively.

key             binding
---             -------


Rainbow-Delimiters minor mode (no indicator):
Highlight nested parentheses, brackets, and braces according to their depth.

If called interactively, enable Rainbow-Delimiters mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Recentf minor mode (no indicator):
Toggle "Open Recent" menu (Recentf mode).

If called interactively, enable Recentf mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

When Recentf mode is enabled, a "Open Recent" submenu is
displayed in the "File" menu, containing a list of files that
were operated on recently, in the most-recently-used order.

Save-Place minor mode (no indicator):
Non-nil means automatically save place in each file.
This means when you visit a file, point goes to the last place
where it was when you previously visited the same file.

If called interactively, enable Save-Place mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Shell-Dirtrack minor mode (no indicator):
Toggle directory tracking in this shell buffer (Shell Dirtrack mode).

If called interactively, enable Shell-Dirtrack mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

The ‘dirtrack’ package provides an alternative implementation of
this feature; see the function ‘dirtrack-mode’.

Show-Paren minor mode (no indicator):
Toggle visualization of matching parens (Show Paren mode).

If called interactively, enable Show-Paren mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Show Paren mode is a global minor mode.  When enabled, any
matching parenthesis is highlighted in ‘show-paren-style’ after
‘show-paren-delay’ seconds of Emacs idle time.

Size-Indication minor mode (no indicator):
Toggle buffer size display in the mode line (Size Indication mode).

If called interactively, enable Size-Indication mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Smartparens minor mode (indicator SP):
Toggle smartparens mode.

If called interactively, enable Smartparens mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

You can enable pre-set bindings by customizing
‘sp-base-key-bindings’ variable.  The current content of
‘smartparens-mode-map’ is:

 key             binding
---             -------


Smartparens-Global minor mode (no indicator):
Toggle Smartparens mode in all buffers.
With prefix ARG, enable Smartparens-Global mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Smartparens mode is enabled in all buffers where
‘turn-on-smartparens-mode’ would do it.
See ‘smartparens-mode’ for more information on Smartparens mode.

Solaire minor mode (no indicator):
Make source buffers grossly incandescent by remapping common faces (see
‘solaire-mode-remap-alist’) to their solaire-mode variants.

If called interactively, enable Solaire mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Solaire-Global minor mode (no indicator):
Toggle Solaire mode in all buffers.
With prefix ARG, enable Solaire-Global mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Solaire mode is enabled in all buffers where
‘turn-on-solaire-mode’ would do it.
See ‘solaire-mode’ for more information on Solaire mode.

Tex-Pdf minor mode (no indicator):
Minor mode for using PDFTeX.

If called interactively, enable Tex-Pdf mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp,
also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

If enabled, PDFTeX will be used as an executable by default.
You can customize an initial value, and you can use the
function ‘TeX-global-PDF-mode’ for toggling this value.

Tex-Source-Correlate minor mode (no indicator):
Minor mode for forward and inverse search.

If called interactively, enable Tex-Source-Correlate mode if ARG
is positive, and disable it if ARG is zero or negative.  If
called from Lisp, also enable the mode if ARG is omitted or nil,
and toggle it if ARG is ‘toggle’; disable the mode otherwise.

If enabled, the viewer can be advised to show the output page
corresponding to the point in the source and vice versa.

The method to be used can be controlled with the variable
‘TeX-source-correlate-method’.  Currently source specials or
SyncTeX are recognized.

Transient-Mark minor mode (no indicator):
Toggle Transient Mark mode.

If called interactively, enable Transient-Mark mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

Transient Mark mode is a global minor mode.  When enabled, the
region is highlighted with the ‘region’ face whenever the mark
is active.  The mark is "deactivated" after certain non-motion
commands, including those that change the text in the buffer, and
during shift or mouse selection by any unshifted cursor motion
command (see Info node ‘Shift Selection’ for more details).

You can also deactivate the mark by typing C-g or
M-ESC ESC.

Many commands change their behavior when Transient Mark mode is
in effect and the mark is active, by acting on the region instead
of their usual default part of the buffer’s text.  Examples of
such commands include M-;, M-x flush-lines, M-x keep-lines,
M-%, C-M-%, s-:, and C-_.
To see the documentation of commands that are sensitive to the
Transient Mark mode, invoke SPC h A and type "transient"
or "mark.*active" at the prompt.

Undo-Tree minor mode (indicator Undo-Tree):
Toggle undo-tree mode.
With no argument, this command toggles the mode.
A positive prefix argument turns the mode on.
A negative prefix argument turns it off.

If called interactively, enable Undo-Tree mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Undo-tree-mode replaces Emacs’ standard undo feature with a more
powerful yet easier to use version, that treats the undo history
as what it is: a tree.

The following keys are available in ‘undo-tree-mode’:

  key             binding
---             -------

C-x             Prefix Command
ESC             Prefix Command
C-_             undo-tree-undo
C-/             undo-tree-undo
C-?             undo-tree-redo
<remap>         Prefix Command

C-x r           Prefix Command
C-x u           undo-tree-visualize

M-_             undo-tree-redo

<remap> <redo>  undo-tree-redo
<remap> <undo>  undo-tree-undo
<remap> <undo-only>             undo-tree-undo

C-x r U         undo-tree-restore-state-from-register
C-x r u         undo-tree-save-state-to-register

Within the undo-tree visualizer, the following keys are available:

  key             binding
---             -------

C-b             undo-tree-visualize-switch-branch-left
C-f             undo-tree-visualize-switch-branch-right
C-n             undo-tree-visualize-redo
C-p             undo-tree-visualize-undo
C-q             undo-tree-visualizer-abort
ESC             Prefix Command
,               undo-tree-visualizer-scroll-left
.               undo-tree-visualizer-scroll-right
<               undo-tree-visualizer-scroll-left
>               undo-tree-visualizer-scroll-right
b               undo-tree-visualize-switch-branch-left
d               undo-tree-visualizer-toggle-diff
f               undo-tree-visualize-switch-branch-right
n               undo-tree-visualize-redo
p               undo-tree-visualize-undo
q               undo-tree-visualizer-quit
s               undo-tree-visualizer-selection-mode
t               undo-tree-visualizer-toggle-timestamps
<C-down>        undo-tree-visualize-redo-to-x
<C-up>          undo-tree-visualize-undo-to-x
<down>          undo-tree-visualize-redo
<left>          undo-tree-visualize-switch-branch-left
<mouse-1>       undo-tree-visualizer-mouse-set
<next>          undo-tree-visualizer-scroll-up
<prior>         undo-tree-visualizer-scroll-down
<remap>         Prefix Command
<right>         undo-tree-visualize-switch-branch-right
<up>            undo-tree-visualize-undo

M-{             undo-tree-visualize-undo-to-x
M-}             undo-tree-visualize-redo-to-x

<remap> <backward-char>         undo-tree-visualize-switch-branch-left
<remap> <backward-paragraph>    undo-tree-visualize-undo-to-x
<remap> <evil-backward-char>    undo-tree-visualize-switch-branch-left
<remap> <evil-forward-char>     undo-tree-visualize-switch-branch-right
<remap> <evil-next-line>        undo-tree-visualize-redo
<remap> <evil-previous-line>    undo-tree-visualize-undo
<remap> <evil-ret>              undo-tree-visualizer-set
<remap> <forward-char>          undo-tree-visualize-switch-branch-right
<remap> <forward-paragraph>     undo-tree-visualize-redo-to-x
<remap> <next-line>             undo-tree-visualize-redo
<remap> <previous-line>         undo-tree-visualize-undo


Vi-Tilde-Fringe minor mode (indicator ~):
Buffer-local minor mode to display tildes in the fringe when the line is
empty.

If called interactively, enable Vi-Tilde-Fringe mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Visual-Line minor mode (indicator Wrap):
Toggle visual line based editing (Visual Line mode) in the current buffer.

If called interactively, enable Visual-Line mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

When Visual Line mode is enabled, ‘word-wrap’ is turned on in
this buffer, and simple editing commands are redefined to act on
visual lines, not logical lines.  See Info node ‘Visual Line
Mode’ for details.

Which-Key minor mode (indicator WK):
Toggle which-key-mode.

If called interactively, enable Which-Key mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

Whitespace minor mode (indicator ws):
Toggle whitespace visualization (Whitespace mode).

If called interactively, enable Whitespace mode if ARG is positive,
and disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

See also ‘whitespace-style’, ‘whitespace-newline’ and
‘whitespace-display-mappings’.

Window-Divider minor mode (no indicator):
Display dividers between windows (Window Divider mode).

If called interactively, enable Window-Divider mode if ARG is
positive, and disable it if ARG is zero or negative.  If called from
Lisp, also enable the mode if ARG is omitted or nil, and toggle it if
ARG is ‘toggle’; disable the mode otherwise.

The option ‘window-divider-default-places’ specifies on which
side of a window dividers are displayed.  The options
‘window-divider-default-bottom-width’ and
‘window-divider-default-right-width’ specify their respective
widths.

Winner minor mode (no indicator):
Toggle Winner mode on or off.

If called interactively, enable Winner mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.

Winner mode is a global minor mode that records the changes in
the window configuration (i.e. how the frames are partitioned
into windows) so that the changes can be "undone" using the
command ‘winner-undo’.  By default this one is bound to the key
sequence ‘C-c <left>’.  If you change your mind (while undoing),
you can press ‘C-c <right>’ (calling ‘winner-redo’).

Ws-Butler-Global minor mode (no indicator):
Toggle Ws-Butler mode in all buffers.
With prefix ARG, enable Ws-Butler-Global mode if ARG is positive;
otherwise, disable it.  If called from Lisp, enable the mode if
ARG is omitted or nil.

Ws-Butler mode is enabled in all buffers where
‘(lambda nil (unless (apply #’derived-mode-p ws-butler-global-exempt-modes) (ws-butler-mode)))’ would do it.
See ‘ws-butler-mode’ for more information on Ws-Butler mode.

Yas minor mode (indicator yas):
Toggle YASnippet mode.

If called interactively, enable Yas minor mode if ARG is
positive, and disable it if ARG is zero or negative.  If called
from Lisp, also enable the mode if ARG is omitted or nil, and
toggle it if ARG is ‘toggle’; disable the mode otherwise.

When YASnippet mode is enabled, ‘yas-expand’, normally bound to
the TAB key, expands snippets of code depending on the major
mode.

With no argument, this command toggles the mode.
positive prefix argument turns on the mode.
Negative prefix argument turns off the mode.

Key bindings:
key             binding
---             -------

C-c             Prefix Command
<remap>         Prefix Command

<remap> <yas-new-snippet>       +snippets/new
<remap> <yas-visit-snippet-file>
                                +snippets/edit

C-c &           Prefix Command

C-c & C-n       yas-new-snippet
C-c & C-s       yas-insert-snippet
C-c & C-v       yas-visit-snippet-file


Zoom minor mode (indicator Z):
Perform ‘zoom’ automatically as the selected window changes.

If called interactively, enable Zoom mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
‘toggle’; disable the mode otherwise.
atanasj commented 3 years ago

An addendum. I have deactivated the following minor-modes without any effect:

ws-butler-mode
flyspell-lazy-mode
yas-minor-mode
ispell-minor-mode
whitespace-mode
transient-mark-mode
d12frosted commented 3 years ago

I think I reproduced the issue with vanishing word. But only once and did not understand what caused that (plust I was in a meeting, could not stop and debug). Will keep looking.

atanasj commented 3 years ago

Awesome, thanks @d12frosted for you work.

d12frosted commented 3 years ago

Alright. I have two versions of Emacs - 27 and 28. I mostly use 28, but for some reason I tested this issue only in Emacs 27, where it works perfectly. But it does not work in Emacs 28 😸 And it seems that I actually rarely save new words to the dictionary 🤔 I try not to come up with new words 🤣

In any case, now I have 100% reproduction steps and will check what has changed in flyspell.

d12frosted commented 3 years ago

🤣 disregard, now I can't reproduce in Emacs 28 🤔

d12frosted commented 3 years ago

Alright, now I do understand. I removes word completely in case there are no completions! E.g. if the word is so unique that there are no available spelling corrections. For example, try to save worldoflyspellcorrect 😸

d12frosted commented 3 years ago

@atanasj 🎉 figured that out - https://github.com/d12frosted/flyspell-correct/pull/85

d12frosted commented 3 years ago

Took some time, but the fix is in master now.

atanasj commented 3 years ago

Thanks for the work @d12frosted. I just downloaded the latest version from this repo but still not working. I'm not sure if it is because I am now using emacs version 27 (magit wasn't working for me in version 28, so went back down).

ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H15
emacsclient 27.1

My config in doom is:

(package! flyspell-correct
  :recipe (:host github :repo "d12frosted/flyspell-correct"))

(setq ispell-dictionary "british")

(use-package flyspell-correct
  :after flyspell
  :bind (:map flyspell-mode-map ("C-;" . flyspell-correct-wrapper)))

(use-package flyspell-correct-ivy
  :after flyspell-correct)

Not sure what else could be going wrong... :-(

d12frosted commented 3 years ago

Hey, sorry forgot to tell you that the 'bug' was in the ivy interface, so you need to update flyspell-correct-ivy.

P. S. Strictly speaking, this inconsistency should be reported upstream as well 🤔

d12frosted commented 3 years ago

BTW, @atanasj thank you very much for detailed reports. It is always a pleasure to have all required information 💯

atanasj commented 3 years ago

Thanks @d12frosted. I actually did update flyspell-correct-ivy as per below:

(package! flyspell-correct
  :recipe (:host github :repo "d12frosted/flyspell-correct"))
(package! flyspell-correct-ivy
  :recipe (:host github :repo "d12frosted/flyspell-correct"))

… But still not working. So, is this is a problem with ivy then?

d12frosted commented 3 years ago

@atanasj :thinking: do you have flyspell-correct-ivy--result function defined?

atanasj commented 3 years ago

I just checked and it was set to nil. I added this:

(use-package flyspell-correct-ivy
  :after flyspell-correct
  :config
  (setq flyspell-correct-ivy--result '(save . ""))
  )

And then tried this:

(use-package flyspell-correct-ivy
  :after flyspell-correct
  :config
  (setq flyspell-correct-ivy--result t)
  )

However, it seems that in the buffer I am testing it in, the variable continues to reset to nil...

What should the value of the variable be?

d12frosted commented 3 years ago

No, it was meant to be a function :) Since it's not defined, it means that you are using old version of flyspell-correct-ivy. I am not sure (and can't check right now), but if you are using straight.el for package management, then you must provide :files property in flyspell-correct-ivy recipe. This feature is described in straight.el README. File is flyspell-correct-ivy.el. Checkout MELPA recipe as example.

atanasj commented 3 years ago

Still not working. This is what I've got in my packages.el:

(package! flyspell-correct
  :recipe (:host github :repo "d12frosted/flyspell-correct"))
(package! flyspell-correct-ivy
  :recipe (:host github
           :repo "d12frosted/flyspell-correct"
           :files ("flyspell-correct-ivy.el")))
d12frosted commented 3 years ago

Sorry, I am not using doom, so let me share ideas I got from reading it's documentation:

  1. Check what is in ~/.emacs.d/.local/straight/repos/flyspell-correct/flyspell-correct-ivy.el. It should contain definition of function flyspell-correct-ivy--process-input (sorry, I have to rename it to avoid confusion with variable).
  2. If it's not there, then please make sure to do doom sync -u. Go back to (1).
  3. If the function is not there, then try removing your straight cache (e.g. ~/.emacs.d/.local/straight). And sync packages via doom command line.

I am also using straight, so I guess a little bit differently from doom. I just run my 'upgrade packages' script and I have everything :)

atanasj commented 3 years ago

Okay. So I have updated to emacs 28. I have reinstalled built doom clean and reinstalled everything. However, when installing flyspell-correct it does not install the updated flyspell-correct-ivy.el file. I manually copied in your new code with the flyspell-correct-ivy--process-input function, recompiled doom, and still not working.

I'm lost! What else could I try?

d12frosted commented 3 years ago

I fear it might be related to package pinning in doom. Let me try to install doom and see how it works.

d12frosted commented 3 years ago

TL;DR: use unpin! to unpin flyspell-correct and flyspell-correct-ivy:

(unpin! flyspell-correct)

So right after I enabled (spell +flyspell) module and run doom sync I saw the following output:

    → Cloning flyspell-correct...done
    - Checked out flyspell-correct: 6d603a1dc51918f7f8aaf99dd5443f74a0afc794

So by default it checked out kind of old commit - https://github.com/d12frosted/flyspell-correct/commit/6d603a1dc51918f7f8aaf99dd5443f74a0afc794 (4 September).

This happens because spell module pins flyspell-correct to specific commit. Alright, so I changed it's definition in my private package.el file (basically copy-pasted your code):

(package! flyspell-correct
  :recipe (:host github :repo "d12frosted/flyspell-correct"))
(package! flyspell-correct-ivy
  :recipe (:host github
           :repo "d12frosted/flyspell-correct"
           :files ("flyspell-correct-ivy.el")))

And then I run doom sync -u (according to documentation, regular sync does not pick up recipe changes). But indeed, it didn't load the latest version 😿

So I tried to unpin them:

(unpin! flyspell-correct)

And after running doom sync -u I saw this output:

> Synchronizing your config with Doom Emacs...
  > Installing packages...
    - No packages need to be installed
  > (Re)building packages...
    ✓ No packages need rebuilding
  > Updating recipe repos...
  > Updating packages (this may take a while)...
    ✓ (63/122) flyspell-correct updated (6d603a1 -> 118e550)
        From https://github.com/d12frosted/flyspell-correct
         * [new branch]      master     -> origin/master

    ✓ (64/122) flyspell-correct-ivy was updated indirectly (with flyspell-correct)
    ✓ Updated 2 package(s)
    > (Re)building packages...
      → Building flyspell-correct...
      → Building flyspell-correct...done
      → Building flyspell-correct-ivy...
      → Building flyspell-correct-ivy...done
      ✓ Rebuilt 2 package(s)
  > Purging orphaned packages (for the emperor)...
    - No builds to purge
    - Skipping elpa packages
    - Skipping repos
    - Skipping regrafting
  > (Re)generating autoloads file...
    > Generating autoloads file...
    > Byte-compiling autoloads file...
    ✓ Generated .local/autoloads.28.0.50.elc
  - Restart Emacs or use 'M-x doom/reload' for changes to take effect

The most important bit here is ✓ (63/122) flyspell-correct updated (6d603a1 -> 118e550)

118e550 is currently the latest commit :) So please, unpin these packages :) I checked and it turns out, that you can remove package redefinition, simple unpin is enough.

P. S. To be honest, I expected that overriding included package definition would actually unpin! But it didn't

atanasj commented 3 years ago

Awesome, that did the trick!! Thanks so much for the help, effort and quality… Truly appreciated!!! 🥇

d12frosted commented 3 years ago

Yay! Happy to hear that that did the trick :) And now the most important question - does my change fix your issue? :)

atanasj commented 3 years ago

That is working great now... Thanks so much!! 😀