[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master f0c573d8069: Optionally avoid extending 'completion-at-point-func
From: |
Eli Zaretskii |
Subject: |
master f0c573d8069: Optionally avoid extending 'completion-at-point-functions' |
Date: |
Sat, 27 Jan 2024 04:56:03 -0500 (EST) |
branch: master
commit f0c573d8069f7ee654a550ae3d148325c49900a3
Author: Eshel Yaron <me@eshelyaron.com>
Commit: Eli Zaretskii <eliz@gnu.org>
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.
---
etc/NEWS | 13 +++++++------
lisp/textmodes/text-mode.el | 19 ++++++++++++++-----
2 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index d69d0001135..b249f7e1ecb 100644
--- a/etc/NEWS
+++ b/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.
diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el
index 7d3b47a9c03..87f6668cecb 100644
--- a/lisp/textmodes/text-mode.el
+++ b/lisp/textmodes/text-mode.el
@@ -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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master f0c573d8069: Optionally avoid extending 'completion-at-point-functions',
Eli Zaretskii <=