[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-f
From: |
Juri Linkov |
Subject: |
Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846) |
Date: |
Wed, 15 May 2024 19:51:25 +0300 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) |
>> +(defcustom completion-allow-text-properties nil
>> + "Non-nil means `choose-completion' should not discard text properties.
>> +This also affects `completing-read' and any of the functions that do
>> +minibuffer input with completion."
>
> This new user option should be announced in NEWS.
>
> I also wonder whether it should be a user option
So here it's a variable, that will later help to select Imenu
completion candidates with same names from different groups.
diff --git a/etc/NEWS b/etc/NEWS
index 34052764f5f..0db85410ebe 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1784,6 +1784,13 @@ A major mode based on the tree-sitter library for
editing Lua files.
** Minibuffer and Completions
+*** New variable 'completion-allow-text-properties'.
+Like non-nil 'minibuffer-allow-text-properties' that doesn't discard
+text properties, it does the same by keeping text properties
+on the selected completion candidate. So when these two variables
+both are non-nil then 'completing-read' returns a selected completion
+with the initial text properties kept intact.
+
+++
*** New global minor mode 'minibuffer-regexp-mode'.
This is a minor mode for editing regular expressions in the minibuffer.
diff --git a/lisp/simple.el b/lisp/simple.el
index cdbbd876e3b..8793e590733 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -10102,6 +10102,11 @@ choose-completion-deselect-if-after
This makes `completions--deselect' effective.")
+(defvar completion-allow-text-properties nil
+ "Non-nil means `choose-completion' should not discard text properties.
+This affects `completing-read' and any of the functions that do
+minibuffer input with completion.")
+
(defun choose-completion (&optional event no-exit no-quit)
"Choose the completion at point.
If EVENT, use EVENT's position to determine the starting position.
@@ -10122,8 +10127,10 @@ choose-completion
(completion-no-auto-exit (if no-exit t completion-no-auto-exit))
(choice
(if choose-completion-deselect-if-after
- (if-let ((str (get-text-property (posn-point (event-start
event)) 'completion--string)))
- (substring-no-properties str)
+ (if-let ((str (get-text-property (posn-point (event-start
event))
+ 'completion--string)))
+ (if completion-allow-text-properties str
+ (substring-no-properties str))
(error "No completion here"))
(save-excursion
(goto-char (posn-point (event-start event)))
@@ -10139,8 +10146,9 @@ choose-completion
(setq beg (or (previous-single-property-change
beg 'completion--string)
beg))
- (substring-no-properties
- (get-text-property beg 'completion--string)))))))
+ (let ((str (get-text-property beg 'completion--string)))
+ (if completion-allow-text-properties str
+ (substring-no-properties str))))))))
(unless (buffer-live-p buffer)
(error "Destination buffer is dead"))
diff --git a/lisp/imenu.el b/lisp/imenu.el
index ea097f5da3a..952c3dc8969 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -732,6 +732,8 @@ imenu--completion-buffer
;; Create a list for this buffer only when needed.
(let ((name (thing-at-point 'symbol))
choice
+ (minibuffer-allow-text-properties t)
+ (completion-allow-text-properties t)
(prepared-index-alist
(if (not imenu-space-replacement) index-alist
(mapcar
@@ -765,10 +767,12 @@ imenu--completion-buffer
nil t nil 'imenu--history-list name)))
(when (stringp name)
- (setq choice (assoc name prepared-index-alist))
- (if (imenu--subalist-p choice)
- (imenu--completion-buffer (cdr choice) prompt)
- choice))))
+ (or (get-text-property 0 'imenu-choice name)
+ (progn
+ (setq choice (assoc name prepared-index-alist))
+ (if (imenu--subalist-p choice)
+ (imenu--completion-buffer (cdr choice) prompt)
+ choice))))))
(defun imenu--mouse-menu (index-alist event &optional title)
"Let the user select from a buffer index from a mouse menu.
@@ -803,7 +807,8 @@ imenu--flatten-index-alist
((not (imenu--subalist-p item))
(list (cons (if (and (eq imenu-flatten 'annotation) prefix)
(propertize name 'imenu-section
- (format " (%s)" prefix))
+ (format " (%s)" prefix)
+ 'imenu-choice item)
new-prefix)
pos)))
(t
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Eshel Yaron, 2024/05/13
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/13
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/14
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Eli Zaretskii, 2024/05/14
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Stefan Monnier, 2024/05/14
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/14
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Daniel Mendler, 2024/05/14
- FW: [External] : Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Drew Adams, 2024/05/14
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846),
Juri Linkov <=
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Eli Zaretskii, 2024/05/15
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Eshel Yaron, 2024/05/15
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/16
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Eli Zaretskii, 2024/05/16
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/17
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Stefan Monnier, 2024/05/17
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/17
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Stefan Monnier, 2024/05/18
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/20
- Re: master 431f8ff1e38: * lisp/imenu.el: Support more values for imenu-flatten (bug#70846), Juri Linkov, 2024/05/27