From 87d0bddfbf8f1d7e6bfce7fcf949e9a69b2abe72 Mon Sep 17 00:00:00 2001 From: Joost Kremers Date: Wed, 14 Sep 2011 23:49:41 +0200 Subject: [PATCH] Move check to see whether new key already exists to ebib-update-key --- src/ebib.el | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/ebib.el b/src/ebib.el index 1d55cd8..a4bc450 100644 --- a/src/ebib.el +++ b/src/ebib.el @@ -1934,11 +1934,9 @@ generate the key, see that function's documentation for details." (ebib-format-entry (to-raw (car x-ref)) ebib-cur-db nil))) (goto-char (point-min)) (bibtex-generate-autokey)))) - (if (member new-key (edb-keys-list ebib-cur-db)) - (error (format "Key `%s' already exists" new-key)) (if (equal new-key "") (error (format "Cannot create key")) - (ebib-update-keyname new-key))))) + (ebib-update-keyname new-key)))) ((default) (beep)))) @@ -2024,29 +2022,29 @@ generate the key, see that function's documentation for details." (let ((cur-keyname (ebib-cur-entry-key))) (if-str (new-keyname (read-string (format "Change `%s' to: " cur-keyname) cur-keyname)) - (if (member new-keyname (edb-keys-list ebib-cur-db)) - (error (format "Key `%s' already exists" new-keyname)) - (ebib-update-keyname new-keyname))))) + (ebib-update-keyname new-keyname)))) ((default) (beep)))) (defun ebib-update-keyname (new-key) "Changes the key of the current BibTeX entry to NEW-KEY." - (let ((cur-key (ebib-cur-entry-key))) - (unless (string= cur-key new-key) - (let ((fields (ebib-retrieve-entry cur-key ebib-cur-db)) - (marked (member cur-key (edb-marked-entries ebib-cur-db)))) - (ebib-remove-entry-from-db cur-key ebib-cur-db) - (ebib-remove-key-from-buffer cur-key) - (ebib-insert-entry new-key fields ebib-cur-db t nil) - (setf (edb-cur-entry ebib-cur-db) (member new-key (edb-keys-list ebib-cur-db))) - (sort-in-buffer (edb-n-entries ebib-cur-db) new-key) - (with-buffer-writable - (ebib-display-entry new-key)) - (forward-line -1) ; move one line up to position the cursor on the new entry. - (ebib-set-index-highlight) - (ebib-set-modified t) - (when marked (ebib-mark-entry)))))) + (if (member new-key (edb-keys-list ebib-cur-db)) + (error (format "Key `%s' already exists" new-key)) + (let ((cur-key (ebib-cur-entry-key))) + (unless (string= cur-key new-key) + (let ((fields (ebib-retrieve-entry cur-key ebib-cur-db)) + (marked (member cur-key (edb-marked-entries ebib-cur-db)))) + (ebib-remove-entry-from-db cur-key ebib-cur-db) + (ebib-remove-key-from-buffer cur-key) + (ebib-insert-entry new-key fields ebib-cur-db t nil) + (setf (edb-cur-entry ebib-cur-db) (member new-key (edb-keys-list ebib-cur-db))) + (sort-in-buffer (edb-n-entries ebib-cur-db) new-key) + (with-buffer-writable + (ebib-display-entry new-key)) + (forward-line -1) ; move one line up to position the cursor on the new entry. + (ebib-set-index-highlight) + (ebib-set-modified t) + (when marked (ebib-mark-entry))))))) (defun ebib-mark-entry () "Marks or unmarks the current entry." -- 2.11.4.GIT