aboutsummaryrefslogtreecommitdiffstats
path: root/desktop-registry.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2013-08-07 22:05:29 +0200
committerGravatar Tom Willemse2013-08-07 22:08:01 +0200
commit9e30a9cd87c034156fadef62a53aba81317a9db5 (patch)
treebee9fe639526600ec7a702381de81cc0c0031710 /desktop-registry.el
parent577cc09c74a976622f93f38d03201d7d9379327f (diff)
downloaddesktop-registry-9e30a9cd87c034156fadef62a53aba81317a9db5.tar.gz
desktop-registry-9e30a9cd87c034156fadef62a53aba81317a9db5.zip
Signal error and specify name
- desktop-registry.el (desktop-registry-add-directory): Add an optional NAME parameter which will be asked for (in an interactive context) when the universal argument is used. Print a message if the specified directory has already been registered, signal an error when the (given or generated) name has already been used and only add the directory if neither of these conditions occur. (desktop-registry-add-current-desktop): Add optional NAME parameter which will be asked for (in an interactive context) when the universal argument is used and pass it on to `desktop-registry-add-directory'.
Diffstat (limited to 'desktop-registry.el')
-rw-r--r--desktop-registry.el34
1 files changed, 22 insertions, 12 deletions
diff --git a/desktop-registry.el b/desktop-registry.el
index 5206b96..ba35d16 100644
--- a/desktop-registry.el
+++ b/desktop-registry.el
@@ -60,23 +60,33 @@ Returns DEFAULT when `desktop-dirname' is nil."
default))
;;;###autoload
-(defun desktop-registry-add-directory (dir)
- "Add DIR to the desktop registry."
- (interactive "DDirectory: ")
+(defun desktop-registry-add-directory (dir &optional name)
+ "Add DIR to the desktop registry, possibly using NAME."
+ (interactive (list (read-directory-name "Directory: ")
+ (if (equal current-prefix-arg '(4))
+ (read-string "Name: "))))
(let* ((clean-dir (desktop-registry--canonicalize-dir dir))
- (label (file-name-base clean-dir)))
- (unless (assoc label desktop-registry-registry)
- (customize-save-variable
- 'desktop-registry-registry
- (cons (cons label clean-dir) desktop-registry-registry)))))
+ (label (or name (file-name-base clean-dir))))
+ (cond
+ ((cl-find clean-dir desktop-registry-registry
+ :key 'cdr :test 'equal)
+ (message "Directory %s already registered" clean-dir))
+ ((cl-find label desktop-registry-registry :key 'car :test 'equal)
+ (error "Name %s already used" label))
+ (t (customize-save-variable
+ 'desktop-registry-registry
+ (cons (cons label clean-dir) desktop-registry-registry))))))
;;;###autoload
-(defun desktop-registry-add-current-desktop ()
- "Add the currently opened desktop file to `desktop-registry-registry'."
- (interactive)
+(defun desktop-registry-add-current-desktop (&optional name)
+ "Add the currently opened desktop file to `desktop-registry-registry'.
+
+If NAME is specified use that as the name for the registry entry."
+ (interactive (list (if (equal current-prefix-arg '(4))
+ (read-string "Name: "))))
(unless desktop-dirname
(error "No desktop loaded"))
- (desktop-registry-add-directory desktop-dirname))
+ (desktop-registry-add-directory desktop-dirname name))
(defun desktop-registry--completing-read (&optional prompt
default-current)