Skip to content

Instantly share code, notes, and snippets.

@mardukbp
Last active December 22, 2015 18:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mardukbp/6513819 to your computer and use it in GitHub Desktop.
Save mardukbp/6513819 to your computer and use it in GitHub Desktop.
Add keyword to marked entries in ebib UPDATED (Sep. 16 2013)
(ebib-key index "y" ebib-add-keyword-entries t)
(defun ebib-add-keyword-entries ()
"Add keyword to marked entries"
(interactive)
(if (ebib-called-with-prefix)
(ebib-execute-when
((marked-entries)
(let ((minibuffer-local-completion-map `(keymap (keymap (32)) ,@minibuffer-local-completion-map))
(collection (ebib-keywords-for-database ebib-cur-db))
(keywords))
(loop for keyword = (completing-read "Select or enter keyword: " collection nil nil nil 'ebib-keyword-history)
until (string= keyword "")
do (let ((curr-keywords keywords))
(setq keywords (if curr-keywords (concat curr-keywords ebib-keywords-separator keyword) keyword))
(unless (member keyword collection)
(ebib-keywords-add-keyword keyword ebib-cur-db))
))
(mapc #'(lambda (entry)
(setq ebib-cur-entry-hash (ebib-retrieve-entry entry ebib-cur-db))
(ebib-add-keyword-entry keywords))
(edb-marked-entries ebib-cur-db))
(message "Keyword added to marked entries.")
(ebib-set-modified t)
(setf (edb-marked-entries ebib-cur-db) nil)
(ebib-fill-entry-buffer)
(ebib-fill-index-buffer)))
((default)
(beep)))))
(defun ebib-add-keyword-entry (keyword)
(let* ((conts (to-raw (gethash 'keywords ebib-cur-entry-hash)))
(new-conts (if conts
(concat conts ebib-keywords-separator keyword)
keyword)))
(puthash 'keywords (from-raw (if ebib-keywords-field-keep-sorted
(ebib-sort-keywords new-conts)
new-conts))
ebib-cur-entry-hash)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment