[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/gnorb 354705a 245/449: Provide completion for Org tags
From: |
Stefan Monnier |
Subject: |
[elpa] externals/gnorb 354705a 245/449: Provide completion for Org tags on BBDB records |
Date: |
Fri, 27 Nov 2020 23:15:48 -0500 (EST) |
branch: externals/gnorb
commit 354705ad98afc4a9b4aa16ea38675d2d5f1c9f0a
Author: Eric Abrahamsen <eric@ericabrahamsen.net>
Commit: Eric Abrahamsen <eric@ericabrahamsen.net>
Provide completion for Org tags on BBDB records
* gnorb-bbdb.el (gnorb-bbdb-read-org-tags): New function for reading
tags with multiple completion.
(gnorb-bbdb-display-org-tags): Display function for Org tags as a
list.
Both functions are only put in use in newer versions of BBDB, where
xfield values can be sexps.
---
gnorb-bbdb.el | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/gnorb-bbdb.el b/gnorb-bbdb.el
index b30298f..85c42c8 100644
--- a/gnorb-bbdb.el
+++ b/gnorb-bbdb.el
@@ -147,6 +147,58 @@ be composed, just as in `gnus-posting-styles'.
An example value might look like:"
:group 'gnorb-bbdb)
+(when (fboundp 'bbdb-record-xfield-string)
+ (fset (intern (format "bbdb-read-xfield-%s"
+ gnorb-bbdb-org-tag-field))
+ (lambda (&optional init)
+ (gnorb-bbdb-read-org-tags init)))
+
+ (fset (intern (format "bbdb-display-%s-multi-line"
+ gnorb-bbdb-org-tag-field))
+ (lambda (record)
+ (gnorb-bbdb-display-org-tags record))))
+
+(defun gnorb-bbdb-read-org-tags (&optional init)
+ "Read Org mode tags, with `completing-read-multiple'."
+ (if (string< "24.3" (substring emacs-version 0 4))
+ (let ((crm-separator
+ (concat "[ \t\n]*"
+ (cadr (assq gnorb-bbdb-org-tag-field
+ bbdb-separator-alist))
+ "[ \t\n]*"))
+ (crm-local-completion-map bbdb-crm-local-completion-map)
+ (table (mapcar #'car
+ (org-global-tags-completion-table
+ (org-agenda-files))))
+ (init (if (consp init)
+ (bbdb-join init
+ (nth 2 (assq gnorb-bbdb-org-tag-field
+ bbdb-separator-alist)))
+ init)))
+ (completing-read-multiple
+ "Tags: " table
+ nil nil init))
+ (bbdb-split gnorb-bbdb-org-tag-field
+ (bbdb-read-string "Tags: " init))))
+
+(defun gnorb-bbdb-display-org-tags (record)
+ "Display the Org tags associated with the record.
+
+Org tags are stored in the `gnorb-bbdb-org-tags-field'."
+ (let ((full-field (assq gnorb-bbdb-org-tag-field
+ (bbdb-record-xfields record)))
+ (val (bbdb-record-xfield
+ record
+ gnorb-bbdb-org-tag-field)))
+ (when val
+ (bbdb-display-text (format fmt gnorb-bbdb-org-tag-field)
+ `(xfields ,full-field field-label)
+ 'bbdb-field-name)
+ (if (consp val)
+ (bbdb-display-list val gnorb-bbdb-org-tag-field "\n")
+ (insert
+ (bbdb-indent-string (concat val "\n") indent))))))
+
;;;###autoload
(defun gnorb-bbdb-mail (records &optional subject n verbose)
"\\<bbdb-mode-map>Acts just like `bbdb-mail', except runs
@@ -405,6 +457,8 @@ layout type."
(eq format 'multi))
(bbdb-indent-string (concat val "\n") indent))
((listp val)
+ ;; Why aren't I using `bbdb-display-list' with a
+ ;; preformatted list of messages?
(concat
(bbdb-indent-string
(mapconcat
- [elpa] externals/gnorb a0b039c 199/449: Probably shouldn't use assoc as a symbol, (continued)
- [elpa] externals/gnorb a0b039c 199/449: Probably shouldn't use assoc as a symbol, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 4cfd40c 207/449: Rework gnorb-org-handle-mail to use tracking, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 357c9c6 220/449: Always append function to message-exit-actions, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb cffdd60 221/449: Warn people of impending changes in README, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 294e1eb 224/449: Fix calls to gnorb-trigger-todo-action, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 73b7f47 227/449: Use org-element-map's arguments properly, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 82d1e46 230/449: New gnorb.org file, and elpaignore, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb e7b8a8b 233/449: First full draft of manual, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 004bdce 234/449: Create and install info manual, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb dd46ce4 246/449: Refactor finding trigger candidates, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 354705a 245/449: Provide completion for Org tags on BBDB records,
Stefan Monnier <=
- [elpa] externals/gnorb 2834602 247/449: Move roadmap/todo list from manual to README, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb f0ba4d7 250/449: Improvements to message disassociation, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 0a138f9 251/449: Reuse existing frames/windows when following links, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 1e071a0 252/449: Further refinements to link following, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb bfd8566 253/449: Be more careful about brackets on message-ids, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 1b56250 254/449: Change wording of disassociation message, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb d4a4ccf 256/449: Better handling of non-existent Org headings, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb ad1538d 260/449: Autoload cookie for gnorb-tracking-initialize, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 8db194a 259/449: Add TAGS to .gitignore, Stefan Monnier, 2020/11/27
- [elpa] externals/gnorb 14471db 262/449: Silence compiler warnings for unbound vars, Stefan Monnier, 2020/11/27