Copy of org-contacts with custom patches. Should all be sent off to the maintainers.
f3fa9fc0b8
> #+begin_src emacs-lisp > (defun org-contacts-org-complete-function () > "Function used in `completion-at-point-functions' in `org-mode' to complete @name." > (when-let* ((bounds (bounds-of-thing-at-point 'symbol)) > (begin (1- (car bounds))) > (end (cdr bounds)) > (symbol (buffer-substring-no-properties begin end)) > (org-contacts-prefix-p (string-prefix-p "@" symbol)) > ;; (prefix (substring-no-properties symbol 1 nil)) > ) > (when org-contacts-prefix-p > (list begin > end > (completion-table-dynamic > (lambda (_) > (mapcar > (lambda (contact) (plist-get contact :name)) > (org-contacts--all-contacts)))))))) > #+end_src This gives a `begin..end` region which presumably includes `@`. Does (plist-get contact :name) return names that start with `@`? If not, the completion will never match. > And test with execute following ~add-hook~ in org-mode buffer or > emacs-lisp-mode buffer: In emacs-lisp-mode, `@` has symbol syntax, so (bounds-of-thing-at-point 'symbol) will include `@` in the returned region, whereas in Org mode `@` seems to have punctuation syntax so the `@` will not be included in the returned region. Maybe instead of `bounds-of-thing-at-point` you want to use something less "magic", like (skip-chars-backward "[:alnum:]@"). |
||
---|---|---|
org-contacts.el | ||
README.org |
Intro
Contacts management system for Org mode
(The public repo of original org-mode/contrib/lisp/org-contacts.el
.)
Manage your contacts from Org mode and in Org mode convenient way. You can auto complete email addresses, export contacts to a vCard file, put birthdays in your Org Agenda, and more.
Screenshots
Installation
Package will be submitted to NonGNU or MELPA. Wait me have time to do this work.
Usage
Find contact in org-contacts databse
Use command [M-x org-contacts]
to search.