branch: externals/greader
commit cdbdf246950bfb655fb36879318c053fef4ad577
Author: Michelangelo Rodriguez <[email protected]>
Commit: Michelangelo Rodriguez <[email protected]>
greader-dict.el: Command `greader-dict-modify-key' added.
This command modifies a key itself, that is, without modifying the
associated value.
---
greader-dict.el | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/greader-dict.el b/greader-dict.el
index 09e2be4277..d3c0d257fb 100644
--- a/greader-dict.el
+++ b/greader-dict.el
@@ -681,7 +681,31 @@ If TYPE is `all', all items in the current dictionary will
be included."
matches
(lambda (s1 s2)
(string-greaterp s2 s1)))))
-
+(defun greader-dict-modify-key (arg)
+ "Modify a key (_NOT_ a value associated with it!).
+While `greader-dict-add-entry can modify either keys or associated
+values, `greader-dict-modify-key' allows you to modify the key
+itself, without modifying the associated value.
+if prefix ARG is non-nil, then this command proposes only keys that
+are classified as matches."
+ (interactive "P")
+ (let ((key (read-string "key to modify: " nil nil (if arg
+
(greader-dict--get-matches
+ 'match)
+ (greader-dict--get-matches
+ 'all))))
+ (new-key nil))
+ (unless key
+ (user-error "Key not valid"))
+ (if-let ((backup-value (gethash key)))
+ (progn
+ (setq new-key (read-string (concat "substitute key " key "
+ with:") nil nil key))
+ (unless new-key
+ (user-error "Invalid replacement"))
+ (greader-dict-remove key)
+ (greader-dict-add new-key backup-value))
+ (user-error "Key not found"))))
(provide 'greader-dict)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;