Update docstrings
This commit is contained in:
parent
6cc4ba1387
commit
a8ead42994
1 changed files with 105 additions and 12 deletions
|
@ -24,25 +24,73 @@
|
||||||
;; This module provides functions and a global minor mode that lets
|
;; This module provides functions and a global minor mode that lets
|
||||||
;; you track a central registry of desktop files. This is useful when
|
;; you track a central registry of desktop files. This is useful when
|
||||||
;; you use desktop files as project files and want to be able to
|
;; you use desktop files as project files and want to be able to
|
||||||
;; switch between them quickly.
|
;; easily switch between them.
|
||||||
|
|
||||||
(require 'desktop)
|
;;; Installation
|
||||||
|
|
||||||
|
;; This module is available both on Marmalade and MELPA, so if you
|
||||||
|
;; have either of those set-up it should be as easy as `M-x
|
||||||
|
;; install-package RET desktop-registry RET'.
|
||||||
|
|
||||||
|
;;; Usage
|
||||||
|
|
||||||
|
;; To start using it you need to have a desktop loaded in Emacs, you
|
||||||
|
;; can then use `desktop-registry-add-current-desktop' to register
|
||||||
|
;; it. If you don't have a desktop loaded, you can use
|
||||||
|
;; `desktop-registry-add-directory' to add a directory containing an
|
||||||
|
;; Emacs desktop. It is also possible to use
|
||||||
|
;; `desktop-registry-auto-register' to have desktops registered
|
||||||
|
;; automatically upon saving them.
|
||||||
|
|
||||||
|
;; After some desktops have been registered you can switch between
|
||||||
|
;; them by using `desktop-registry-change-desktop'. This will close
|
||||||
|
;; the current desktop (without saving) and open the selected one.
|
||||||
|
|
||||||
|
;; If it happens that you have accumulated quite a few desktops and
|
||||||
|
;; you would like to have an overview of them and perform some
|
||||||
|
;; management tasks, `desktop-registry-list-desktops' will show a list
|
||||||
|
;; of the registered desktops, along with an indicator if they still
|
||||||
|
;; exist on the filesystem.
|
||||||
|
|
||||||
|
;;; Configuration
|
||||||
|
|
||||||
|
;; Apart from the functions to add, remove and rename desktops, and
|
||||||
|
;; the desktop list, it is also possible to use Emacs' customize
|
||||||
|
;; interface to change, remove or add desktops in/from/to the registry
|
||||||
|
;; with the `desktop-registry-registry' user option.
|
||||||
|
|
||||||
|
;; There is also the `desktop-registry-list-switch-buffer-function'
|
||||||
|
;; user option that lets you choose which function to use to show the
|
||||||
|
;; buffer when calling `desktop-registry-list-desktops'. By default
|
||||||
|
;; this is `switch-to-buffer-other-window'.
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
|
(require 'desktop)
|
||||||
|
|
||||||
(defgroup desktop-registry nil
|
(defgroup desktop-registry nil
|
||||||
"Customization group for desktop-registry."
|
"Customization group for desktop-registry."
|
||||||
:group 'desktop
|
:group 'desktop
|
||||||
:prefix 'desktop-registry)
|
:prefix 'desktop-registry)
|
||||||
|
|
||||||
(defcustom desktop-registry-registry nil
|
(defcustom desktop-registry-registry nil
|
||||||
"The registry of desktop files."
|
"The main registry of desktop files.
|
||||||
|
|
||||||
|
Almost all of the important functions work on this variable. As
|
||||||
|
such it can be edited using these functions, either directly or
|
||||||
|
from the desktop list, or using the Emacs customize interface."
|
||||||
:group 'desktop-registry
|
:group 'desktop-registry
|
||||||
:type '(repeat (cons string directory)))
|
:type '(repeat (cons string directory)))
|
||||||
|
|
||||||
(defcustom desktop-registry-list-switch-buffer-function
|
(defcustom desktop-registry-list-switch-buffer-function
|
||||||
#'switch-to-buffer-other-window
|
#'switch-to-buffer-other-window
|
||||||
"The function to use to switch to the desktop list buffer."
|
"The function to use to switch to the desktop list buffer.
|
||||||
|
|
||||||
|
When `desktop-registry-list-desktops' is called, it uses the
|
||||||
|
value of this option to switch to the buffer. By default it uses
|
||||||
|
`switch-to-buffer-other-window', but functions like
|
||||||
|
`switch-to-buffer' or `switch-to-buffer-other-frame' are also
|
||||||
|
examples of valid functions."
|
||||||
:group 'desktop-registry
|
:group 'desktop-registry
|
||||||
:type 'function)
|
:type 'function)
|
||||||
|
|
||||||
|
@ -72,7 +120,8 @@
|
||||||
(defun desktop-registry-current-desktop (&optional default)
|
(defun desktop-registry-current-desktop (&optional default)
|
||||||
"Get the name of the currently loaded desktop.
|
"Get the name of the currently loaded desktop.
|
||||||
|
|
||||||
Returns DEFAULT when `desktop-dirname' is nil."
|
Returns DEFAULT when the variable `desktop-dirname' is nil, which
|
||||||
|
means there is no desktop currently loaded."
|
||||||
(if desktop-dirname
|
(if desktop-dirname
|
||||||
(let ((canonical
|
(let ((canonical
|
||||||
(desktop-registry--canonicalize-dir desktop-dirname)))
|
(desktop-registry--canonicalize-dir desktop-dirname)))
|
||||||
|
@ -82,7 +131,14 @@ Returns DEFAULT when `desktop-dirname' is nil."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun desktop-registry-add-directory (dir &optional name)
|
(defun desktop-registry-add-directory (dir &optional name)
|
||||||
"Add DIR to the desktop registry, possibly using NAME."
|
"Add DIR to the desktop registry, possibly using NAME.
|
||||||
|
|
||||||
|
If this command is called interactively, the location for DIR is
|
||||||
|
requested of the user, and if the universal argument (`C-u') was
|
||||||
|
used before calling this command a name will also be requested
|
||||||
|
for this directory. This is useful when the directory name is
|
||||||
|
not the project name or when it would result in duplicate entries
|
||||||
|
in `desktop-registry-registry'."
|
||||||
(interactive (list (read-directory-name "Directory: ")
|
(interactive (list (read-directory-name "Directory: ")
|
||||||
(if (equal current-prefix-arg '(4))
|
(if (equal current-prefix-arg '(4))
|
||||||
(read-string "Name: "))))
|
(read-string "Name: "))))
|
||||||
|
@ -102,7 +158,13 @@ Returns DEFAULT when `desktop-dirname' is nil."
|
||||||
(defun desktop-registry-add-current-desktop (&optional name)
|
(defun desktop-registry-add-current-desktop (&optional name)
|
||||||
"Add the currently opened desktop file to `desktop-registry-registry'.
|
"Add the currently opened desktop file to `desktop-registry-registry'.
|
||||||
|
|
||||||
If NAME is specified use that as the name for the registry entry."
|
If NAME is specified use that as the name for the registry entry.
|
||||||
|
|
||||||
|
If this command is called interactively and the universal
|
||||||
|
argument (`C-u') was used before calling this command the name
|
||||||
|
will be requested of the user. This is useful when the directory
|
||||||
|
name is not the project name or when it would result in duplicate
|
||||||
|
entries in `desktop-registry-registry'."
|
||||||
(interactive (list (if (equal current-prefix-arg '(4))
|
(interactive (list (if (equal current-prefix-arg '(4))
|
||||||
(read-string "Name: "))))
|
(read-string "Name: "))))
|
||||||
(unless desktop-dirname
|
(unless desktop-dirname
|
||||||
|
@ -137,7 +199,12 @@ point."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun desktop-registry-remove-desktop (desktop)
|
(defun desktop-registry-remove-desktop (desktop)
|
||||||
"Remove DESKTOP from the desktop registry."
|
"Remove DESKTOP from the desktop registry.
|
||||||
|
|
||||||
|
If this command is called interactively DESKTOP will be inferred
|
||||||
|
from the location of the cursor when viewing the desktop list, or
|
||||||
|
will be asked of the user (with completion) when the desktop list
|
||||||
|
is not currently shown."
|
||||||
(interactive (list (desktop-registry--get-desktop-name "Remove: " t)))
|
(interactive (list (desktop-registry--get-desktop-name "Remove: " t)))
|
||||||
(let ((spec (assoc desktop desktop-registry-registry)))
|
(let ((spec (assoc desktop desktop-registry-registry)))
|
||||||
(if spec
|
(if spec
|
||||||
|
@ -148,7 +215,12 @@ point."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun desktop-registry-rename-desktop (old new)
|
(defun desktop-registry-rename-desktop (old new)
|
||||||
"Rename desktop OLD to NEW."
|
"Rename desktop OLD to NEW.
|
||||||
|
|
||||||
|
If this command is called interactively OLD will be inferred from
|
||||||
|
the location of the cursor when viewing the desktop list, or will
|
||||||
|
be asked of the user (with completion) when the desktop list is
|
||||||
|
not currently shown. NEW is always asked of the user."
|
||||||
(interactive (list (desktop-registry--get-desktop-name "Rename: " t)
|
(interactive (list (desktop-registry--get-desktop-name "Rename: " t)
|
||||||
(read-string "to: ")))
|
(read-string "to: ")))
|
||||||
(let ((spec (assoc old desktop-registry-registry)))
|
(let ((spec (assoc old desktop-registry-registry)))
|
||||||
|
@ -160,13 +232,25 @@ point."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun desktop-registry-change-desktop (name)
|
(defun desktop-registry-change-desktop (name)
|
||||||
"Change to the desktop named NAME."
|
"Change to the desktop named NAME.
|
||||||
|
|
||||||
|
If this command is called interactively NAME will be inferred
|
||||||
|
from the location of the cursor when viewing the desktop list, or
|
||||||
|
will be asked of the user (with completion) when the desktop list
|
||||||
|
is not currently shown.
|
||||||
|
|
||||||
|
This function just calls `desktop-change-dir' with the directory
|
||||||
|
attached to NAME."
|
||||||
(interactive (list (desktop-registry--get-desktop-name "Switch to: ")))
|
(interactive (list (desktop-registry--get-desktop-name "Switch to: ")))
|
||||||
(desktop-change-dir (cdr (assoc name desktop-registry-registry))))
|
(desktop-change-dir (cdr (assoc name desktop-registry-registry))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(define-minor-mode desktop-registry-auto-register
|
(define-minor-mode desktop-registry-auto-register
|
||||||
"Automatically add saved desktops to the registry."
|
"Automatically add saved desktops to the registry.
|
||||||
|
|
||||||
|
Enabling this global minor mode will add
|
||||||
|
`desktop-registry-add-current-desktop' as a hook to
|
||||||
|
`desktop-save-hook'."
|
||||||
:global t
|
:global t
|
||||||
(if desktop-registry-auto-register
|
(if desktop-registry-auto-register
|
||||||
(add-hook 'desktop-save-hook
|
(add-hook 'desktop-save-hook
|
||||||
|
@ -203,7 +287,16 @@ point."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun desktop-registry-list-desktops ()
|
(defun desktop-registry-list-desktops ()
|
||||||
"Display a list of registered desktops."
|
"Display a list of registered desktops.
|
||||||
|
|
||||||
|
Most functions that are available as interactive commands
|
||||||
|
elsewhere are also specialized to work here. For example:
|
||||||
|
`desktop-registry-change-desktop' will open the desktop under the
|
||||||
|
user's cursor when called from this list.
|
||||||
|
|
||||||
|
The way the buffer is shown can be customized by specifying a
|
||||||
|
function to use in
|
||||||
|
`desktop-registry-list-switch-buffer-function'."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((buffer (get-buffer-create "*Desktop Registry*")))
|
(let ((buffer (get-buffer-create "*Desktop Registry*")))
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
|
|
Loading…
Reference in a new issue