Kyle Meyer <[email protected]> writes: > Christopher Miles writes: > >> Kyle Meyer <[email protected]> writes: >> >>> stardiviner writes: >>>>> By this patch, will merge both buffer-local tags and user defined global >>>>> `org-tags-alist`. >>> >>> It does a bit more than that. It uses org-global-tags-completion-table, >>> which considers tags in all agenda files by default and takes into >>> account org-tag-alist (as well as org-tag-persistent-alist) via the use >>> of the org-current-tag-alist variable. >> >> That's what I want. Why obviously user pre-defined tags can't be used >> globally. >> Right? It should be. > > My point was that it's not just adding these pre-defined lists (#1); > it's also adding tags from agenda files (#2). I think we certainly > don't want to do #2 unconditionally. On the other hand, #1 is probably > okay, but as I said in my last email, I could see not wanting that > either. > > Anyway, the patch I proposed (which you've adapted for your latest > round), avoids #2 by guarding the behavior behind the existing > org-complete-tags-always-offer-all-agenda-tags option, and I think > that's a good path forward. > >> Subject: [PATCH] org.el: Complete tags from both global and buffer local >> >> * lisp/org.el (org-fast-tag-selection): Merge buffer local tags with >> global alist of tags. And it obey the option >> org-complete-tags-always-offer-all-agenda-tags. > > s/obey/&s/
Applied.
>
>> * doc/org-manual.org: Update the TAB key doc in tags selection UI.
>>
>> * etc/ORG-NEWS: Mention the change in org-set-tags-command.
>> ---
>> doc/org-manual.org | 6 +++---
>> etc/ORG-NEWS | 5 +++++
>> lisp/org.el | 24 ++++++++++++++----------
>> 3 files changed, 22 insertions(+), 13 deletions(-)
>>
>> diff --git a/doc/org-manual.org b/doc/org-manual.org
>> index b015b502c..01cec4b8d 100644
>> --- a/doc/org-manual.org
>> +++ b/doc/org-manual.org
>> @@ -4860,9 +4860,9 @@ In this interface, you can also use the following
>> special keys:
>>
>> #+kindex: TAB
>> Enter a tag in the minibuffer, even if the tag is not in the
>> - predefined list. You can complete on all tags present in the
>> - buffer. You can also add several tags: just separate them with
>> - a comma.
>> + predefined list. You can complete on all tags present in the buffer
>> + and globally pre-defined tags from ~org-tag{-persistent}-alist~.
>
> Please spell these two options out: ~org-tag-alist~ and
> ~org-tag-persistent-alist~.
Applied.
>
>> + You can also add several tags: just separate them with a comma.
>>
>> - {{{kbd(SPC)}}} ::
>>
>> diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
>> index 5e5f1954d..5e68d27c0 100644
>> --- a/etc/ORG-NEWS
>> +++ b/etc/ORG-NEWS
>> @@ -149,6 +149,11 @@ Example:
>> A new =u= mode flag for Calc formulas in Org tables has been added to
>> enable Calc units simplification mode.
>>
>> +*** =org-set-tags-command= select tags from
>> ~org-global-tags-completion-table~
>> +
>> +Let =org-set-tags-command= complete tags from global tags list (both
>> +buffer-local tags and ~org-tag{-persistent}-alist~).
>
> Same note about avoiding shorthand for the option names.
Applied.
>
> Also, please rewrite this to make it clear that this is relevant for TAB
> in the fast completion interface. It's probably also worth mentioning
> that org-complete-tags-always-offer-all-agenda-tags is now honored.
>
> And, very minor, but any reason for the mix of =...= and ~...~ markup
> here?
Maybe our recognition is different I personally like to markup command as
verbatim, and option as code to display as two different face color. I forget to
drop my habit.... Now fixed to use "~code~".
>
>> diff --git a/lisp/org.el b/lisp/org.el
>> index 5b0ae389c..ba816dfa6 100644
>> --- a/lisp/org.el
>> +++ b/lisp/org.el
>> @@ -12139,7 +12139,7 @@ (defun org-fast-tag-selection (current inherited
>> table &optional todo-table)
>> fulltable))))
>> (buf (current-buffer))
>> (expert (eq org-fast-tag-selection-single-key 'expert))
>> - (buffer-tags nil)
>> + (tab-tags nil)
>> (fwidth (+ maxlen 3 1 3))
>> (ncol (/ (- (window-width) 4) fwidth))
>> (i-face 'org-done)
>> @@ -12274,16 +12274,20 @@ (defun org-fast-tag-selection (current inherited
>> table &optional todo-table)
>> (setq current nil)
>> (when exit-after-next (setq exit-after-next 'now)))
>> ((= c ?\t)
>> - (condition-case nil
>
> Unlike the patch I sent, you've dropped the condition-case here, which I
> don't think was intentional.
>
Added back now.
> Thanks.
--
[ stardiviner ]
I try to make every word tell the meaning that I want to express.
Blog: https://stardiviner.github.io/
IRC(freenode): stardiviner, Matrix: stardiviner
GPG: F09F650D7D674819892591401B5DF1C95AE89AC3
From 4bb6ca19ceb8dbd8f827e4df2d7cc4ec7c7a931b Mon Sep 17 00:00:00 2001 From: stardiviner <[email protected]> Date: Wed, 2 Dec 2020 17:24:29 +0800 Subject: [PATCH] org.el: Complete tags from both global and buffer local * lisp/org.el (org-fast-tag-selection): Merge buffer local tags with global alist of tags. And it obeys the option org-complete-tags-always-offer-all-agenda-tags. * doc/org-manual.org: Update the TAB key doc in tags selection UI. * etc/ORG-NEWS: Mention the change in org-set-tags-command. --- doc/org-manual.org | 7 ++++--- etc/ORG-NEWS | 7 +++++++ lisp/org.el | 25 +++++++++++++++---------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/doc/org-manual.org b/doc/org-manual.org index b015b502c..e717f9261 100644 --- a/doc/org-manual.org +++ b/doc/org-manual.org @@ -4860,9 +4860,10 @@ In this interface, you can also use the following special keys: #+kindex: TAB Enter a tag in the minibuffer, even if the tag is not in the - predefined list. You can complete on all tags present in the - buffer. You can also add several tags: just separate them with - a comma. + predefined list. You can complete on all tags present in the buffer + and globally pre-defined tags from ~org-tag-alist~ and + ~org-tag-persistent-alist~. You can also add several tags: just + separate them with a comma. - {{{kbd(SPC)}}} :: diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 5e5f1954d..0c9bb99d3 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -149,6 +149,13 @@ Example: A new =u= mode flag for Calc formulas in Org tables has been added to enable Calc units simplification mode. +*** =org-set-tags-command= select tags from ~org-global-tags-completion-table~ + +Let ~org-set-tags-command~ TAB fast tag completion interface complete +tags including from both buffer local and user defined persistent +global list (~org-tag-alist~ and ~org-tag-persistent-alist~). Now +option ~org-complete-tags-always-offer-all-agenda-tags~ is horored. + ** Miscellaneous *** =org-goto-first-child= now works before first heading diff --git a/lisp/org.el b/lisp/org.el index 5b0ae389c..5b1443c4e 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -12139,7 +12139,7 @@ (defun org-fast-tag-selection (current inherited table &optional todo-table) fulltable)))) (buf (current-buffer)) (expert (eq org-fast-tag-selection-single-key 'expert)) - (buffer-tags nil) + (tab-tags nil) (fwidth (+ maxlen 3 1 3)) (ncol (/ (- (window-width) 4) fwidth)) (i-face 'org-done) @@ -12274,16 +12274,21 @@ (defun org-fast-tag-selection (current inherited table &optional todo-table) (setq current nil) (when exit-after-next (setq exit-after-next 'now))) ((= c ?\t) - (condition-case nil - (setq tg (completing-read - "Tag: " - (or buffer-tags - (with-current-buffer buf - (setq buffer-tags - (org-get-buffer-tags)))))) - (quit (setq tg ""))) + (condition-case nil + (unless tab-tags + (setq tab-tags + (delq nil + (mapcar (lambda (x) + (let ((item (car-safe x))) + (and (stringp item) + (list item)))) + (org--tag-add-to-alist + (with-current-buffer buf + (org-get-buffer-tags)) + table)))))) + (setq tg (completing-read "Tag: " tab-tags)) (when (string-match "\\S-" tg) - (cl-pushnew (list tg) buffer-tags :test #'equal) + (cl-pushnew (list tg) tab-tags :test #'equal) (if (member tg current) (setq current (delete tg current)) (push tg current))) -- 2.29.2
signature.asc
Description: PGP signature
