Skip to content

Commit

Permalink
Add "zg" and "zG" bindings
Browse files Browse the repository at this point in the history
Implements evil-ispell-mark-word-as-good and evil-ispell-mark-word-as-locally-good
  • Loading branch information
condy0919 committed Jul 22, 2021
1 parent 070abb1 commit e5dc054
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
33 changes: 33 additions & 0 deletions evil-commands.el
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
(require 'evil-jumps)
(require 'evil-vars)
(require 'flyspell)
(require 'ispell)
(require 'cl-lib)
(require 'reveal)

Expand Down Expand Up @@ -636,6 +637,38 @@ and jump to the corresponding one."
(when ov
(goto-char (overlay-start ov))))))))

(defun evil-ispell-mark-word-as-good (word)
"Add WORD under the cursor as a good word to the Ispell dictionary."
(interactive (list (thing-at-point 'word t)))
;; accept and insert word into personal dictionary.
(ispell-send-string (concat "*" word "\n"))
;; dictionary modified!
(setq ispell-pdict-modified-p '(t))
(ispell-pdict-save ispell-silently-savep)
(when (bound-and-true-p flyspell-mode)
(let ((start (car (bounds-of-thing-at-point 'word))))
(when start
(flyspell-unhighlight-at start))))
(message "Word '%s' added to personal dictionary" (upcase word)))

(defun evil-ispell-mark-word-as-locally-good (word &optional buffer-local)
"Add WORD under the cursor to the session dictionary.
If BUFFER-LOCAL is non-nil, the word will be added to current buffer."
(interactive (list (thing-at-point 'word t) current-prefix-arg))
;; accept word without insertion
(ispell-send-string (concat "@" word "\n"))
(add-to-list 'ispell-buffer-session-localwords word)
;; session localwords might conflict.
(unless ispell-buffer-local-name
(setq ispell-buffer-local-name (buffer-name)))
(when buffer-local
(ispell-add-per-file-word-list word))
(when (bound-and-true-p flyspell-mode)
(let ((start (car (bounds-of-thing-at-point 'word))))
(when start
(flyspell-unhighlight-at start))))
(message "Word '%s' added to local dictionary" (upcase word)))

(evil-define-motion evil-next-flyspell-error (count)
"Go to the COUNT'th spelling mistake after point."
(interactive "p")
Expand Down
2 changes: 2 additions & 0 deletions evil-maps.el
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@
(define-key evil-normal-state-map "za" 'evil-toggle-fold)
(define-key evil-normal-state-map "zr" 'evil-open-folds)
(define-key evil-normal-state-map "zm" 'evil-close-folds)
(define-key evil-normal-state-map "zg" 'evil-ispell-mark-word-as-good)
(define-key evil-normal-state-map "zG" 'evil-ispell-mark-word-as-locally-good)
(define-key evil-normal-state-map "z=" 'ispell-word)
(define-key evil-normal-state-map "\C-n" 'evil-paste-pop-next)
(define-key evil-normal-state-map "\C-p" 'evil-paste-pop)
Expand Down

0 comments on commit e5dc054

Please sign in to comment.