Copy of org-contacts with custom patches. Should all be sent off to the maintainers.
1b028de47c
> I found ~org-contacts-org-complete-function~ returned a special value: > > #+begin_example > #f(compiled-function (string pred action) #<bytecode -0x9e1a398d61d3acb>) > #+end_example I can't see any way M-: (org-contacts-org-complete-function) RET can return the above value. So I suspect a "pilot error". This looks like the 3rd value in the returned list (i.e. the value returned by `completion-table-dynamic`). > #+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:]@"). > #+begin_src emacs-lisp > (add-hook 'completion-at-point-functions 'org-contacts-org-complete-function nil 'local) > #+end_src |
||
---|---|---|
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.