Optionally avoid extending 'completion-at-point-functions'
It is now possible to avoid extending 'completion-at-point-functions' in Text mode and its descendants. * lisp/textmodes/text-mode.el (text-mode-meta-tab-ispell-complete-word): Rename to... (text-mode-ispell-word-completion): ...this. Extend with another option 'completion-at-point'. (text-mode): Only extend 'completion-at-point-functions' when 'text-mode-ispell-word-completion' is 'completion-at-point'. (Bug#67527) * etc/NEWS: Update the entry about 'M-TAB' in Text mode.
This commit is contained in:
parent
fa7543eeb7
commit
f0c573d806
2 changed files with 21 additions and 11 deletions
13
etc/NEWS
13
etc/NEWS
|
@ -1346,12 +1346,13 @@ files and save the changes.
|
|||
|
||||
+++
|
||||
** 'M-TAB' now invokes 'completion-at-point' also in Text mode.
|
||||
Text mode no longer binds 'M-TAB' to 'ispell-complete-word', and
|
||||
instead this mode arranges for 'completion-at-point', globally bound
|
||||
to 'M-TAB', to perform word completion as well. If you want 'M-TAB'
|
||||
to invoke 'ispell-complete-word', as it did in previous Emacs
|
||||
versions, customize the new user option
|
||||
'text-mode-meta-tab-ispell-complete-word' to non-nil.
|
||||
By default, Text mode no longer binds 'M-TAB' to
|
||||
'ispell-complete-word'. Instead this mode arranges for
|
||||
'completion-at-point', globally bound to 'M-TAB', to perform word
|
||||
completion as well. You can have Text mode bind 'M-TAB' to
|
||||
'ispell-complete-word' as it did in previous Emacs versions, or
|
||||
disable Ispell word completion in Text mode altogether, by customizing
|
||||
the new user option 'text-mode-ispell-word-completion'.
|
||||
|
||||
** 'pp' and 'pp-to-string' now always include a terminating newline.
|
||||
In the past they included a terminating newline in most cases but not all.
|
||||
|
|
|
@ -75,8 +75,15 @@
|
|||
Many other modes, such as `mail-mode' and `outline-mode', inherit
|
||||
all the commands defined in this map.")
|
||||
|
||||
(defcustom text-mode-meta-tab-ispell-complete-word nil
|
||||
"Whether M-TAB invokes `ispell-complete-word' in Text mode.
|
||||
(defcustom text-mode-ispell-word-completion 'completion-at-point
|
||||
"How Text mode provides Ispell word completion.
|
||||
|
||||
By default, this option is set to `completion-at-point', which
|
||||
means that Text mode adds an Ispell word completion function to
|
||||
`completion-at-point-functions'. Any other non-nil value says to
|
||||
bind M-TAB directly to `ispell-complete-word' instead. If this
|
||||
is nil, Text mode neither binds M-TAB to `ispell-complete-word'
|
||||
nor does it extend `completion-at-point-functions'.
|
||||
|
||||
This user option only takes effect when you customize it in
|
||||
Custom or with `setopt', not with `setq'."
|
||||
|
@ -84,8 +91,9 @@ Custom or with `setopt', not with `setq'."
|
|||
:type 'boolean
|
||||
:version "30.1"
|
||||
:set (lambda (sym val)
|
||||
(if (set sym val)
|
||||
(keymap-set text-mode-map "C-M-i" #'ispell-complete-word)
|
||||
(if (and (set sym val)
|
||||
(not (eq val 'completion-at-point)))
|
||||
(keymap-set text-mode-map "C-M-i" #'ispell-complete-word)
|
||||
(keymap-unset text-mode-map "C-M-i" t))))
|
||||
|
||||
(easy-menu-define text-mode-menu text-mode-map
|
||||
|
@ -144,7 +152,8 @@ Turning on Text mode runs the normal hook `text-mode-hook'."
|
|||
;; Enable text conversion in this buffer.
|
||||
(setq-local text-conversion-style t)
|
||||
(add-hook 'context-menu-functions 'text-mode-context-menu 10 t)
|
||||
(add-hook 'completion-at-point-functions #'ispell-completion-at-point 10 t))
|
||||
(when (eq text-mode-ispell-word-completion 'completion-at-point)
|
||||
(add-hook 'completion-at-point-functions #'ispell-completion-at-point 10 t)))
|
||||
|
||||
(define-derived-mode paragraph-indent-text-mode text-mode "Parindent"
|
||||
"Major mode for editing text, with leading spaces starting a paragraph.
|
||||
|
|
Loading…
Add table
Reference in a new issue