File: shadowfile.el.html

This package helps you to keep identical copies of files in more than one
 place - possibly on different machines. When you save a file, it checks
 whether it is on the list of files with "shadows", and if so, it tries to
 copy it when you exit Emacs (or use the shadow-copy-files command).

Installation & Use:

 Add clusters (if necessary) and file groups with shadow-define-cluster,
 shadow-define-literal-group, and shadow-define-regexp-group (see the
 documentation for these functions for information on how and when to use
 them). After doing this once, everything should be automatic.

 The lists of clusters and shadows are saved in shadow-info-file,
 so that they can be remembered from one Emacs session to another,
 even (as much as possible) if the Emacs session terminates
 abnormally. The files needing to be copied are stored in
 shadow-todo-file; if a file cannot be copied for any reason, it
 will stay on the list to be tried again next time. The
 shadow-info-file file should itself have shadows on all your
 accounts so that the information in it is consistent everywhere,
 but shadow-todo-file is local information and should have no
 shadows.

 If you do not want to copy a particular file, you can answer "no" and
 be asked again next time you hit "C-x 4 s" or exit Emacs. If you do not
 want to be asked again, use "M-x shadow-cancel", and you will not be asked
 until you change the file and save it again. If you do not want to
 shadow that file ever again, you can edit it out of the shadows
 buffer. Anytime you edit the shadows buffer, you must type "M-x
 shadow-read-files" to load in the new information, or your changes will
 be overwritten!

Bugs & Warnings:

 - It is bad to have two Emacsen both running shadowfile at the same
 time. It tries to detect this condition, but is not always successful.

 - You have to be careful not to edit a file in two locations
 before shadowfile has had a chance to copy it; otherwise
 "updating shadows" will overwrite one of the changed versions.

 - It ought to check modification times of both files to make sure
 it is doing the right thing. This will have to wait until
 file-newer-than-file-p works between machines.

 - It will not make directories for you, it just fails to copy files
 that belong in non-existent directories.

Defined variables (12)

shadow-clustersList of host clusters (see ‘shadow-define-cluster’).
shadow-debugUse for debug messages.
shadow-homedirYour home directory on this machine.
shadow-info-fileFile to keep shadow information in.
shadow-inhibit-messageIf non-nil, do not display a message when a file needs copying.
shadow-inhibit-overloadIf non-nil, shadowfile won’t redefine M-x save-buffers-kill-emacs.
shadow-literal-groupsList of files that are shared between hosts.
shadow-noqueryIf t, always copy shadow files without asking.
shadow-regexp-groupsList of file types that are shared between hosts.
shadow-site-helpThe help string describing a valid site.
shadow-system-nameThe identification for local files on this machine.
shadow-todo-fileFile to store the list of uncopied shadows in.

Defined functions (51)

copy-shadow-cluster(ARG)
make-shadow-cluster
make-shadow-cluster--cmacro
shadow--save-buffers-kill-emacs(&optional ARG &rest _)
shadow-add-to-todo()
shadow-cancel()
shadow-cluster-name(CL-X)
shadow-cluster-name--cmacro(CL-WHOLE-ARG CL-X)
shadow-cluster-p(CL-X)
shadow-cluster-p--cmacro(CL-WHOLE-ARG CL-X)
shadow-cluster-primary(CL-X)
shadow-cluster-primary--cmacro(CL-WHOLE-ARG CL-X)
shadow-cluster-regexp(CL-X)
shadow-cluster-regexp--cmacro(CL-WHOLE-ARG CL-X)
shadow-contract-file-name(FILE)
shadow-copy-file(S)
shadow-copy-files(&optional ARG)
shadow-define-cluster(NAME)
shadow-define-literal-group()
shadow-define-regexp-group()
shadow-expand-cluster-in-file-name(FILE)
shadow-expand-file-name(FILE &optional DEFAULT)
shadow-file-match(PATTERN FILE &optional REGEXP)
shadow-find(PRED SEQUENCE &optional DEFAULT)
shadow-get-cluster(NAME)
shadow-initialize()
shadow-insert-var(VARIABLE)
shadow-local-file(FILE)
shadow-make-fullname(HUP &optional HOST NAME)
shadow-make-group(REGEXP SITES)
shadow-name-site(NAME)
shadow-parse-name(NAME)
shadow-read-files()
shadow-read-site()
shadow-regexp-superquote(STRING)
shadow-remove-from-todo(PAIR)
shadow-replace-name-component(FULLNAME NEWNAME)
shadow-same-site(PATTERN FILE)
shadow-save-buffers-kill-emacs(&optional ARG)
shadow-set-cluster(NAME PRIMARY REGEXP)
shadow-shadows()
shadow-shadows-of(FILE)
shadow-shadows-of-1(FILE GROUPS REGEXP)
shadow-site-cluster(SITE)
shadow-site-match(SITE1 SITE2)
shadow-site-name(SITE)
shadow-site-primary(SITE)
shadow-suffix(PREFIX STRING)
shadow-union(A B)
shadow-write-info-file()
shadow-write-todo-file(&optional SAVE)

Defined faces (0)