;ELC ;;; Compiled by mwolson@grepfind.mwolson.org on Thu Jan 24 00:15:29 2008 ;;; from file /stuff/proj/emacs/dvc/mwolson/lisp/dvc-buffers.el ;;; in Emacs version 23.0.50.2 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`dvc-buffers.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\300\301!\210\300\302!\210\300\303!\210\300\304!\207" [require dvc-utils dvc-ui dvc-defs dvc-register] 2) #@424 Tree containing all dvc buffers. Must be of the form ((tla (type1 ("path1" buffer "original name of buffer") ("path2" buffer2 "original name of buffer2")) (type2 ("path1" buffer3 "original name of buffer3") ("path3" buffer4 "original name of buffer4"))) (bzr (type1 ("path4" buffer5 "original name of buffer5"))) (xhg (type3 (...)))) Used to keep track of all the dvc related buffers. (defvar dvc-buffers-tree nil (#$ . 719)) #@1311 List of (type name mode) used to generate a name for a buffer. TYPE is the type of buffer to create, passed as the first argument to `dvc-get-buffer-create'. NAME is a string, used as a name for the returned buffer. MODE is a symbol defining the way to manage (value of `default-directory' in the created buffer) paths for this type of buffers. It can have the following values: * 'root: `default-directory' will be the tree-root of the specified directory. * 'path: `default-directory' will be the path specified. Can also be a file. For 'root and 'path, `dvc-get-buffer-create' will return the existing buffer for this type and this path if it exists, or create a new one otherwise. * 'single: There is only one buffer of this type for each Emacs instance. If a path is provided, `default-directory' is set to that path. Otherwise, the path is left unchanged when a buffer is reused, and set to the current directory on buffer creation. * 'multiple: `default-directory' is set to the path specified. A new buffer is returned anyway. (No buffer reuse). * 'string: The path specified is actually a string. It won't be used to set `default-directory'. The name of the created buffer will be (format name string). * 'string-multiple: combination of 'string and 'multiple. (defvar dvc-buffer-type-alist '((diff "diff*" root) (revision-diff "diff(%s)*" string) (status "status*" root) (inventory "inventory*" path) (commit "commit*" root) (missing "missing*" single) (bookmark "bookmarks*" single) (tips "tips*" single) (revlog "revlog(%s)*" string-multiple) (file-diff "file-diff*" path) (changelog "changelog*" root) (tree-lint "tree-lint*" root) (log "log*" root) (remote-log "log(%s)*" string) (log-edit "log-edit*" root) (errors "error*" multiple) (generic "process*" multiple) (browse "browse*" single) (annotate "annotate*" path) (changeset "changeset(%s)*" string) (archives "archives*" single) (categories "categories(%s)*" string) (branches "branches(%s)*" string) (versions "versions(%s)*" string) (revisions "revisions(%s)*" string) (manifest "manifest*" root) (unknowns "unknowns*" root) (info "info*" root) (pull "pull*" root) (patch-queue "patch-queue*" root)) (#$ . 1191)) #@38 Remove BUFFER from the buffers tree. (defalias 'dvc-buffers-tree-remove #[(buffer) "\306\211\203S\n@\211A\306\211\203K\f@\211A\306\211\203C@\211\211 A@)\n=\203: \307 A\"\241\210A\211\204!*\fA\211\204*\nA\211\204*\306\207" [dvc-buffers-tree dvc-cons #1=#:--cl-dolist-temp-- type-cons #2=#:--cl-dolist-temp-- path-buffer nil delete #3=#:--cl-dolist-temp-- x buffer] 7 (#$ . 3422)]) #@111 Add a buffer for back-end DVC, of TYPE visiting PATH to the buffers tree. BUFFER should be the buffer to add. (defalias 'dvc-buffers-tree-add #[(dvc type path buffer) " \306 !E\307 \f\"\307 \" \2033 \203' \n AB\241\202= \nD AB\241\202= \nDD\fB\211+\207" [path buffer to-add dvc dvc-buffers-tree dvc-assoc buffer-name assoc type tree-assoc] 4 (#$ . 3840)]) #@100 Create a buffer for a dvc-mode. `create-file-buffer' is used to allow uniquify to modify the name. (defalias 'dvc-create-buffer #[(name) "r\303!q\210 Pp)\207" [name default-directory list-buffers-directory create-file-buffer] 2 (#$ . 4222)]) #@228 Get a buffer of type TYPE for the path PATH. Maybe reuse one if it exists, according to the value of `dvc-buffer-type-alist' (see its docstring), or, call `generate-new-buffer' to create the buffer. See also `dvc-get-buffer' (defalias 'dvc-get-buffer-create #[(dvc type &optional path) "\206 \306\n \"\211\211AA)@\307\n$\206\216\310=\203.\311\312!!\202C\313=\204<\314=\203@\202C\311!\315\316!\317\306\n \"\211A@)R\313=\204d\314=\203n\320\321\"!\202{\322!\206u \323!)rq\210\324\n$\210,+rq\210\325\326 $\210*\207" [path default-directory type dvc-buffer-type-alist elem x assoc dvc-get-buffer root dvc-uniquify-file-name dvc-tree-root string string-multiple "*" symbol-name "-" generate-new-buffer format file-name-directory dvc-create-buffer dvc-buffers-tree-add dvc-trace "create buffer %S with back-end %S in %S" mode dvc name buffer return-buffer] 8 (#$ . 4474)]) #@208 Return the list of all dvc-buffers-tree entries matching DVC, TYPE, PATH. If DVC is nil, it matches any back-end. TYPE must match exactly. PATH matches if the entry in dvc-buffers-tree is a prefix of PATH. (defalias 'dvc-get-matching-buffers #[(dvc type path) "\306\211\n\203\307 \307\n\f\"A\"A\202:\f\306\211 \2039\307  \211\f@A)\"A\310 \" A\211 \204*\203f\211\f@@) \311 \"\211\203_\312U\203_@ BA*\202: *\207" [tree result dvc type dvc-buffers-tree buffers nil assoc append string-match 0 temp x root path index] 6 (#$ . 5419)]) #@214 Get a buffer of type TYPE for the path PATH. Maybe reuse one if it exists, depending on the value of MODE (see `dvc-buffer-type-alist' 's third element), otherwise, return nil. See also `dvc-get-buffer-create'. (defalias 'dvc-get-buffer #[(dvc type &optional path mode) "\206\306 \n\"\211AA)@\f\206 \306\"A\211\307=\203e\306 \"A\211@\205a\310\211A@)!\211AA)@\230\203X\211A@)\202a\306 \"\311\241\210\311+\202\345\f\205\212\312=\203w\313\314\f!!\202\212\315=\204\203\316=\203\207\f\202\212\313\f!\317=\206\224\316=?\205\344\306 \"\306\fA\"\211\211A@)\211\205\343\320!\203\317\310!\211AA)@\230\203\317\202\343\321\306\fA\"A\"\241\210\322 \f#+)+\207" [mode type dvc-buffer-type-alist x path default-directory assoc single buffer-name nil root dvc-uniquify-file-name dvc-tree-root string string-multiple multiple buffer-live-p delq dvc-get-buffer dvc dvc-buffers-tree subtree dvc-path list-path first-elem elem buffer] 6 (#$ . 5994)]) #@62 Define a new TYPE of buffer whose buffer will be named NAME. (defalias 'dvc-add-buffer-type #[(type name) "\303 \"?\205\nD B\211\207" [type dvc-buffer-type-alist name assoc] 3 (#$ . 7019)]) #@30 *Name of the process buffer. (custom-declare-variable 'dvc-process-buffer '" *%s-process*" '(#$ . -7220) :type 'string :group 'dvc-internal) #@66 *Name of the buffer to which the process's stderr is redirected. (custom-declare-variable 'dvc-error-buffer '" *%s-errors*" '(#$ . -7367) :type 'string :group 'dvc-internal) #@369 *Number of process buffers to keep after process termination. When the number of process buffers exceeds this number, the most ancient is killed. This includes both the process buffer and the error buffer (to which stderr is redirected). A nil value here means "Never kill any process buffer". Useful for debugging, but this will eat the memory of your computer ;-) (custom-declare-variable 'dvc-number-of-dead-process-buffer '0 '(#$ . -7548) :type 'integer :group 'dvc-internal) #@60 Toggle display of dead process buffers in the buffer menu. (custom-declare-variable 'dvc-show-internal-buffers-on-menu 'nil '(#$ . 8036) :type 'boolean :group 'dvc-internal) #@85 Width of frame created by `dvc-switch-to-buffer' when `other-frame' arg is non-nil. (custom-declare-variable 'dvc-other-frame-width '80 '(#$ . 8216) :type 'integer :group 'dvc) #@86 Height of frame created by `dvc-switch-to-buffer' when `other-frame' arg is non-nil. (custom-declare-variable 'dvc-other-frame-height '20 '(#$ . 8399) :type 'integer :group 'dvc) #@153 List of process buffers belonging to terminated processes. When the list is greater than `dvc-number-of-dead-process-buffer', the last ones are killed. (defvar dvc-dead-process-buffer-queue nil (#$ . 8585)) #@211 Don't actually kill BUFFER, but add it to `dvc-dead-process-buffer-queue'. It will eventually be killed when the number of buffers in `dvc-dead-process-buffer-queue'exceeds `dvc-number-of-dead-process-buffer'. (defalias 'dvc-kill-process-buffer #[(buffer) "\304\302\305#\210 \205(\nG\306 ]V\205(\n@\307 !\203 \310 !\210)\nA\211\202 \207" [buffer dvc-number-of-dead-process-buffer dvc-dead-process-buffer-queue buf dvc-add-to-list t 2 buffer-live-p kill-buffer] 5 (#$ . 8799)]) #@34 The last created process buffer. (defvar dvc-last-process-buffer nil (#$ . 9289)) #@34 The last created process buffer. (defvar dvc-last-error-buffer nil (#$ . 9377)) #@118 Create a new process buffer. If TO-BE-DELETED is non-nil, make this buffer a candidate for eventually being deleted. (defalias 'dvc-new-process-buffer #[(to-be-deleted back-end) "\305\306 \"!\211\f\203\307\n!\210\n)\207" [dvc-process-buffer back-end buffer dvc-last-process-buffer to-be-deleted generate-new-buffer format dvc-kill-process-buffer] 5 (#$ . 9464)]) #@116 Create a new error buffer. If TO-BE-DELETED is non-nil, make this buffer a candidate for eventually being deleted. (defalias 'dvc-new-error-buffer #[(to-be-deleted back-end) "\305\306 \"!\211\f\203\307\n!\210\n)\207" [dvc-error-buffer back-end buffer dvc-last-error-buffer to-be-deleted generate-new-buffer format dvc-kill-process-buffer] 5 (#$ . 9839)]) #@34 Keymap used in dvc's log buffer. (defvar dvc-process-buffer-mode-map (byte-code "\302 \303\304\305!\306#\210\303 \307#\210)\207" [map dvc-keyvec-quit make-sparse-keymap define-key dvc-prefix-buffer 76 dvc-open-internal-log-buffer dvc-buffer-quit] 4) (#$ . 10205)) (byte-code "\302\303N\204\f\304\302\303\305#\210\306\307!\204\304\307\310\311#\210\307B\312\307!\204(\313\307\314 \"\210\306\315!\2044\304\315\310\311#\210\315B\312\315!\204D\313\315\316 \"\210\304\301\310\311#\210\301B\312\301!\204^\313\301\317\301\320\"\210 \"\210\304\311\321\320#\207" [current-load-list dvc-process-buffer-mode-abbrev-table dvc-process-buffer-mode-hook variable-documentation put "Hook run when entering DVC Process mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp dvc-process-buffer-mode-map definition-name dvc-process-buffer-mode default-boundp set-default make-sparse-keymap dvc-process-buffer-mode-syntax-table make-syntax-table define-abbrev-table nil derived-mode-parent] 5) #@180 Major mode for process buffers. Mainly defines \[bury-buffer] to quit the buffer This mode runs the hook `dvc-process-buffer-mode-hook', as the final step during initialization. (defalias 'dvc-process-buffer-mode #[nil "\306\300!\210\307\310 \210\311\312\313 !\210\314\f!\210 \315 \210\316\317!\210)\320\321!\207" [delay-mode-hooks major-mode mode-name dvc-process-buffer-mode-map dvc-process-buffer-mode-syntax-table dvc-process-buffer-mode-abbrev-table make-local-variable t kill-all-local-variables dvc-process-buffer-mode "DVC Process" use-local-map set-syntax-table dvc-install-buffer-menu toggle-read-only 1 run-mode-hooks dvc-process-buffer-mode-hook local-abbrev-table] 2 (#$ . 11288) nil]) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\304\207" [current-load-list dvc-switched-buffer default-boundp set-default nil dvc-switched-from-buffer] 3) #@108 Switch to BUFFER using the user's preferred method. See `dvc-switch-to-buffer-mode' for possible settings. (defalias 'dvc-switch-to-buffer #[(buffer &optional other-frame) "p \203\306\211\307\nB\310 B\311BB\312!+\207\312=\203'\312!\207\313=\2033\314!\207\315=\203F\312!\210p\312!\207\316\317\"\207" [dvc-switched-from-buffer other-frame dvc-other-frame-width dvc-other-frame-height pop-up-frame-alist pop-up-frames t width height ((minibuffer)) pop-to-buffer single-window switch-to-buffer show-in-other-window error "Switch mode %s not implemented" display-reuse-frames buffer dvc-switch-to-buffer-mode dvc-switched-buffer] 5 (#$ . 12201)]) #@212 Either switch to buffer BUFFER or just set-buffer. Depends on the value of `dvc-switch-to-buffer-first'. When SETUP-AS-PARTNER, set the `dvc-partner-buffer' variable in BUFFER to current-buffer and vice versa. (defalias 'dvc-switch-to-buffer-maybe #[(buffer &optional setup-as-partner) "\203 pr q\210 *\f\203\305 !\207 q\207" [setup-as-partner buffer dvc-partner-buffer cur-buff dvc-switch-to-buffer-first dvc-switch-to-buffer] 2 (#$ . 12879)]) #@137 Executed when showing a changeset. If `dvc-switched-buffer' is non-nil, show this buffer, but keep cursor position in previous buffer. (defalias 'dvc-post-switch-to-buffer #[nil "\205\302!\210\303eb\210\302 !\207" [dvc-switched-buffer dvc-switched-from-buffer pop-to-buffer nil] 2 (#$ . 13340)]) #@58 Show the process buffer of the last started DVC command. (defalias 'dvc-show-process-buffer #[nil "\302!\210\303\304 \"\235?\205\305 \207" [dvc-last-process-buffer dvc-process-running dvc-switch-to-buffer mapcar #[(p) "\301@!\207" [p process-buffer] 2] dvc-process-buffer-mode] 4 (#$ . 13648) nil]) #@279 Switch to the last used process buffer in a new buffer of TYPE. If MODE is specified, it is a function that will be run in the new buffer. Otherwise, the buffer will remain in fundamental mode, in read-only. If PATH is specified, it will be passed to `dvc-get-buffer-create'. (defalias 'dvc-show-last-process-buffer #[(&optional type mode path) "\306!\205,rq\210\307 )\310\311\312\n\206\313 #!\210\314\315 \210 c\210* \203* \207\316 \207" [dvc-last-process-buffer content type path inhibit-read-only mode buffer-live-p buffer-string dvc-switch-to-buffer dvc-get-buffer-create dvc generic t erase-buffer dvc-process-buffer-mode] 5 (#$ . 13959)]) #@186 Pops up the error buffer. Works like `dvc-show-last-process-buffer', but displays BUFFER, of type 'errors if TYPE is not specified. If MODE is specified, the buffer will use that mode. (defalias 'dvc-show-error-buffer #[(buffer &optional type mode) "\305!\205+rq\210\306 )\307\310\311\n\206\312\"!\210\313\314 \210 c\210*\f\203)\f \207\315 \207" [buffer content type inhibit-read-only mode buffer-live-p buffer-string dvc-switch-to-buffer dvc-get-buffer-create dvc errors t erase-buffer dvc-process-buffer-mode] 4 (#$ . 14622)]) #@42 Return menus for buffers managed in DVC. (defalias 'dvc-buffers-menu #[nil "\306\307!\306\310!\311\312\f\"\210\313 \314\315\316\n\317BBB#\210\311\320 \"\210\313 \321\322#\210\313 \323\324#\210\313 \325\326#\210 +\207" [dvc-number-of-dead-process-buffer i submenu menu dvc-dead-process-buffer-queue dvc-buffers-tree make-sparse-keymap "DVC-Buffers" "Queue" mapcar #[(buffer) "\303!\2031\304 \305\306\307!!!\310\311\312\n\313\314!!\203\315\202 \316\307!$\317\320\321\322DF\323BBB#\210\nS\211\207" [buffer submenu i buffer-live-p define-key vector make-symbol buffer-name menu-item format "%d: %s%s" zerop buffer-size "[empty] " "" lambda nil (interactive) switch-to-buffer (:enable t)] 10] define-key [queue] menu-item "Queue(DEBUG)" (:enable dvc-show-internal-buffers-on-menu) #[(item) "@A\306\307 !!\310 !\311\312\n\"\210\n\205&\313 \314 !\315 \f\316BBB#,\207" [item dvc type-list dvc-label submenu menu capitalize symbol-name make-sparse-keymap mapcar #[(type-list) "\305\306\307 @!!Q\310\n!\311\312 A\"\210\313\f\314 @!\315\n \316BBB#*\207" [dvc-label type-list type-label type-submenu submenu "-" capitalize symbol-name make-sparse-keymap mapcar #[(subitem) "@\211A@)\305\n!\205- \204\306\n!\307\f\310\311 !!\312 \313\314\315\316\nDF\317BBB#*\207" [subitem x buffer path type-submenu buffer-live-p buffer-name define-key vector make-symbol menu-item lambda nil (interactive) switch-to-buffer (:enable t)] 11] define-key vector menu-item (:enable t)] 7] define-key vector menu-item (:enable t)] 7] [list-separator] (menu-item "--") [process-buffer] (menu-item "Show Process Bufffer" dvc-show-process-buffer) [log-buffer] (menu-item "Open Log Bufffer" dvc-open-internal-log-buffer)] 7 (#$ . 15165)]) #@26 Install the buffer menu. (defalias 'dvc-install-buffer-menu #[nil "\303\304\"\206 \303\305\"\211\203 \250\204\306 \307\310\311 B#\210)\312 \2053\303\312 \313\"\2063\314\312 \315\316 #\211\203K\317\306!\203B\306\202C\314\n\320\310\311 B#\210)\321\322\323\324\325$\207" [global-map dvc-menu map lookup-key [menu-bar tools dvc] [menu-bar tools DVC] define-key-after [dvc-buffers] "DVC-Buffers" dvc-buffers-menu current-local-map [menu-bar] define-key [menu-bar] make-keymap functionp [dvc-buffers] add-hook menu-bar-update-hook dvc-install-buffer-menu nil t] 6 (#$ . 16905)]) #@188 Window-configuration to return to on buffer quit. If nil, nothing is done special. Otherwise, must be a window-configuration. `dvc-buffer-quit' will restore this window-configuration. (defvar dvc-buffer-previous-window-config nil (#$ . 17499)) (make-variable-buffer-local 'dvc-buffer-previous-window-config) #@134 Store WINDOW-CONFIG in `dvc-buffer-previous-window-config'. When WINDOW-CONFIG is nil, store `current-window-configuration' instead. (defalias 'dvc-buffer-push-previous-window-config #[(&optional window-config) "\206\302 \211\207" [window-config dvc-buffer-previous-window-config current-window-configuration] 2 (#$ . 17817)]) #@111 Quit the current buffer. If `dvc-buffer-quit-mode' is 'kill, then kill the buffer. Otherwise, just bury it. (defalias 'dvc-buffer-quit #[nil "\n\303=\203\304p!\210\202\305 \210 \205\306 !)\207" [dvc-buffer-previous-window-config prev-wind-conf dvc-buffer-quit-mode kill kill-buffer bury-buffer set-window-configuration] 2 (#$ . 18155) nil]) #@23 Kill all dvc buffers. (defalias 'dvc-kill-all-buffers #[nil "\306 \307\211\203P @\211A\307\211\203H @\211A\307\211\203@@T\310\211A@)!\210A\211\204$* A\211\204* A\211\204\n*\311\312\211\313V\203^\314\202_\315#\210)\307\211\207" [number dvc-buffers-tree dvc-kind #1=#:--cl-dolist-temp-- type-cons #2=#:--cl-dolist-temp-- 0 nil kill-buffer message "Killed %d buffer%s" 1 "s" "" path-buffer #3=#:--cl-dolist-temp-- x] 5 (#$ . 18512) nil]) #@43 Save all buffers visiting a file in TREE. (defalias 'dvc-save-some-buffers #[(&optional tree) "\306\307\306\"\206 \204\310\311!\210\312 \313\211\203j @r\nq\210\314 \203b\315 \211\203a\316\307\317\f!\306\"!\316!\211\203` \230\203`\204]\320\321\322 \323Q!\204]\313\211\203`\324 \210*)) A\211\204* *\207" [tree ok buffer #1=#:--cl-dolist-temp-- file tree-exp t dvc-tree-root error "Not in a project tree" buffer-list nil buffer-modified-p buffer-file-name dvc-uniquify-file-name file-name-directory y-or-n-p "Save buffer " buffer-name "? " save-buffer root dvc-do-not-prompt-for-save] 5 (#$ . 18991) nil]) #@105 Reverts all buffers visiting a file in TREE that aren't modified. To be run after an update or a merge. (defalias 'dvc-revert-some-buffers #[(&optional tree) "\306!\307 \310\211\203O\n@r q\210\311 \204G\312 \211\203F\313\306\314 !\315\"!\313\316!!\211\f\230\203E\203E\317 !\203E\320\315\211\"\210*))\nA\211\204 +\310\207" [tree buffer #1=#:--cl-dolist-temp-- file tree-exp root dvc-tree-root buffer-list nil buffer-modified-p buffer-file-name dvc-uniquify-file-name file-name-directory t expand-file-name file-exists-p revert-buffer dvc-automatically-revert-buffers] 5 (#$ . 19633) nil]) #@47 Return non-nil if BUFFER is visible in frame. (defalias 'dvc-buffer-visible-p #[(buffer) "\300\213\207" [((byte-code "p\303 \304\n!\210\304 !\210\305\303 \"*\207" [window-conf buf buffer current-window-configuration pop-to-buffer compare-window-configurations] 3))] 1 (#$ . 20246)]) #@110 If BUFFER is visible, scroll it. Otherwise, show it. if DOWN is non-nil, scroll down, otherwise, scroll up. (defalias 'dvc-buffer-show-or-scroll #[(buffer &optional down) "\301!\203\302!\210\303\304\305\217\207\306!\207" [buffer dvc-buffer-visible-p pop-to-buffer nil (byte-code "\203\301\302!\207\212\303\304!\210d`V\203\305\302!\202\306\307!)\207" [down scroll-down 2 move-to-window-line -1 scroll-up message "end of buffer"] 2) ((error (message "Can't scroll anymore."))) dvc-switch-to-buffer] 3 (#$ . 20539)]) (provide 'dvc-buffers)