;ELC ;;; Compiled by cyd@localhost on Mon Apr 23 22:20:44 2007 ;;; from file /home/cyd/emacs/lisp/ediff.el ;;; in Emacs version 22.0.99 ;;; 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 "`ediff.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@30 The current version of Ediff (defconst ediff-version "2.81.1" (#$ . 557)) #@21 Date of last update (defconst ediff-date "October 23, 2006" (#$ . 637)) (byte-code "\210\301\302!\210\301\303!\210\304\305\306\307\310\311\312\313&\207" [noninteractive require ediff-init ediff-mult custom-declare-group ediff nil "A comprehensive visual interface to diff & patch." :tag "Ediff" :group tools] 8) #@77 *If t, Ediff will use previous directory as default when reading file name. (custom-declare-variable 'ediff-use-last-dir 'nil '(#$ . -957) :type 'boolean :group 'ediff) (byte-code "\301B\302\301!\204\303\301\304\"\210\305B\302\305!\204\303\305\304\"\210\306B\302\306!\204-\303\306\304\"\210\307B\302\307!\204<\303\307\304\"\210\310B\302\310!\204K\303\310\304\"\210\304\207" [current-load-list ediff-last-dir-A default-boundp set-default nil ediff-last-dir-B ediff-last-dir-C ediff-last-dir-ancestor ediff-last-merge-autostore-dir] 3) (defalias 'ediff-set-read-only-in-buf-A #[nil "\203\303!\203\304\303!!\203rq\210\305\306!)\207 \307=\206$\310\n!\207" [ediff-buffer-A this-command ediff-KILLED-VITAL-BUFFER get-buffer buffer-name toggle-read-only 1 ediff-quit error] 3]) (defalias 'ediff-get-default-file-name #[(&optional default fileno) "\306=\203J\307\310\311\"\310\312\313\217\310\211\211\250\204\314;\203* B ;\2039\315 !\2049 B\f \244\211\234\211\206H-\207;\203S\207\316p!\205^\317\316p!!\207" [major-mode result choices aux-list marked current dired-mode dired-get-filename nil no-error (byte-code "\300\301!\207" [dired-get-marked-files no-dir] 2) ((error)) 0 file-directory-p buffer-file-name file-name-nondirectory fileno default] 6]) #@50 Run Ediff on a pair of files, FILE-A and FILE-B. (defalias 'ediff-files #[(file-A file-B &optional startup-hooks) "\303\304 !\203\305\306! \"\202 \307\n\310%\207" [file-A file-B startup-hooks ediff-files-internal file-directory-p expand-file-name file-name-nondirectory nil ediff-files] 6 (#$ . 2271) (let ((dir-A (if ediff-use-last-dir ediff-last-dir-A default-directory)) dir-B f) (list (setq f (ediff-read-file-name "File A to compare" dir-A (ediff-get-default-file-name) 'no-dirs)) (ediff-read-file-name "File B to compare" (setq dir-B (if ediff-use-last-dir ediff-last-dir-B (file-name-directory f))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory f) dir-B))) (ediff-get-default-file-name f 1)))))]) #@55 Run Ediff on three files, FILE-A, FILE-B, and FILE-C. (defalias 'ediff-files3 #[(file-A file-B file-C &optional startup-hooks) "\304\305 !\203\306\307! \"\202 \305\n!\203!\306\307!\n\"\202\"\n \310%\207" [file-A file-B file-C startup-hooks ediff-files-internal file-directory-p expand-file-name file-name-nondirectory ediff-files3] 6 (#$ . 3059) (let ((dir-A (if ediff-use-last-dir ediff-last-dir-A default-directory)) dir-B dir-C f ff) (list (setq f (ediff-read-file-name "File A to compare" dir-A (ediff-get-default-file-name) 'no-dirs)) (setq ff (ediff-read-file-name "File B to compare" (setq dir-B (if ediff-use-last-dir ediff-last-dir-B (file-name-directory f))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory f) dir-B))) (ediff-get-default-file-name f 1)))) (ediff-read-file-name "File C to compare" (setq dir-C (if ediff-use-last-dir ediff-last-dir-C (file-name-directory ff))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory ff) dir-C))) (ediff-get-default-file-name ff 2)))))]) (defalias 'ediff3 'ediff-files3) (defalias 'ediff-find-file #[(file-var buffer-name &optional last-dir hooks-var) "J\306 !\307 !\310 !\204\311\312 \"\210\202$\313 !\203$\311\314 \"\210\315 !\f\2034\f\315\316 !!L\210 \317 !L\210 J\203\234\320 J!\203\234\305\320 J!!\203\234r Jq\210~\210\n\203t\321\322!\210\323p \"\324\325\326 DEJBL\210\202\230\327 !\327\330 !\232\204\225\323p \"\324\325\326 DEJBL\210\202\230\321 \210)\202\250\331=\204\250\311!\210 L+\207" [file-var file file-magic temp-file-name-prefix last-dir buffer-name ediff-filename-magic-p file-name-nondirectory file-readable-p error "File `%s' does not exist or is not readable" file-directory-p "File `%s' is a directory" expand-file-name file-name-directory find-file-noselect get-buffer ediff-verify-file-buffer magic ediff-make-temp-file lambda nil delete-file file-truename buffer-file-name ediff-quit hooks-var this-command ediff-KILLED-VITAL-BUFFER] 5]) (defalias 'ediff-files-internal #[(file-A file-B file-C startup-hooks job-name &optional merge-buffer-file) "\306\211\211 \f\230\203\307\310!\210 ;\203+ \230\203!\307\311!\204+\f \230\203+\307\312!\210\313\314 \"\210\315\303\302\316\317$\210\313\314\f\"\210\315\304\301\320\317$\210 ;\203_\313\314 \"\210\315\305\300\321=\203[\322\202\\\323\317$\210\324\n \f \325BC& +\207" [buf-C buf-B buf-A file-A file-B file-C nil error "Files A and B are the same" "Files A and C are the same" "Files B and C are the same" message "Reading file %s ... " ediff-find-file ediff-last-dir-A startup-hooks ediff-last-dir-B ediff-merge-files-with-ancestor ediff-last-dir-ancestor ediff-last-dir-C ediff-setup ediff-job-name job-name merge-buffer-file] 10]) (defalias 'ediff 'ediff-files) #@160 Run Ediff on FILE and its backup file. Uses the latest backup, if there are several numerical backups. If this file is a backup, `ediff' it with its original. (defalias 'ediff-backup #[(file) "\303\304!\210\305\211\306\n!\203\n\307\n!\202$\310\n!\206!\311\312\n\"\n\313 \"*\207" [ori bak file require diff nil backup-file-name-p file-name-sans-versions diff-latest-backup-file error "No backup found for %s" ediff-files] 3 (#$ . 5954) (list (read-file-name "Ediff (file with backup): "))]) #@56 Run Ediff on a pair of buffers, BUFFER-A and BUFFER-B. (defalias 'ediff-buffers #[(buffer-A buffer-B &optional startup-hooks job-name) "\204\304\305 \n\306 %\207" [job-name buffer-A buffer-B startup-hooks ediff-buffers ediff-buffers-internal nil] 6 (#$ . 6461) (let (bf) (list (setq bf (read-buffer "Buffer A to compare: " (ediff-other-buffer "") t)) (read-buffer "Buffer B to compare: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)))]) (defalias 'ebuffers 'ediff-buffers) #@63 Run Ediff on three buffers, BUFFER-A, BUFFER-B, and BUFFER-C. (defalias 'ediff-buffers3 #[(buffer-A buffer-B buffer-C &optional startup-hooks job-name) "\204\305\306 \n \f%\207" [job-name buffer-A buffer-B buffer-C startup-hooks ediff-buffers3 ediff-buffers-internal] 6 (#$ . 6976) (let (bf bff) (list (setq bf (read-buffer "Buffer A to compare: " (ediff-other-buffer "") t)) (setq bff (read-buffer "Buffer B to compare: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)) (read-buffer "Buffer C to compare: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer (list bf bff))) t)))]) (defalias 'ebuffers3 'ediff-buffers3) (defalias 'ediff-buffers-internal #[(buf-A buf-B buf-C startup-hooks job-name &optional merge-buffer-file) "\306\307!!\306\307\n!!\f\205\307\f!\205\310\307\f!!\211\205%\306\307\n!!\311\211\311\203B\307!\203B\310\307!!\204G\312\313\"\210\n\203Y\307\n!\203Y\310\307\n!!\204^\312\313\n\"\210\203p \204p\312\313\f\"\210) ;\203z\314 ! ;\203\203\314 !;\203\217\314!\315 \"\315\n \" \203\246\315\f\"\316\307!\307\n! \205\270\307\f!\317\311\320D\320D\321\322D\320DE\257B\323BC& .\207" [buf-A buf-A-file-name buf-B buf-B-file-name buf-C buf-C-is-alive buffer-file-name get-buffer buffer-name nil error "Buffer %S doesn't exist" file-name-nondirectory ediff-make-temp-file ediff-setup lambda delete-file if stringp ediff-job-name buf-C-file-name file-A file-B file-C job-name ediff-3way-comparison-job startup-hooks merge-buffer-file] 16]) (defalias 'ediff-get-default-directory-name #[nil "\203 \207\n\305=\203#\306\307\310\"\211;\203 \311 !\203 \202!\f)\207\f\207" [ediff-use-last-dir ediff-last-dir-A major-mode f default-directory dired-mode dired-get-filename nil noerror file-directory-p] 4]) #@216 Run Ediff on a pair of directories, DIR1 and DIR2, comparing files that have the same name in both. The third argument, REGEXP, is nil or a regular expression; only file names that match the regexp are considered. (defalias 'ediff-directories #[(dir1 dir2 regexp) "\303 \304\n\305\306&\207" [dir1 dir2 regexp ediff-directories-internal nil ediff-files ediff-directories] 7 (#$ . 8832) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp)) f) (list (setq f (read-directory-name "Directory A to compare:" dir-A nil 'must-match)) (read-directory-name "Directory B to compare:" (if ediff-use-last-dir ediff-last-dir-B (ediff-strip-last-dir f)) nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (defalias 'edirs 'ediff-directories) #@229 Run Ediff on a directory, DIR1, comparing its files with their revisions. The second argument, REGEXP, is a regular expression that filters the file names. Only the files that are under revision control are taken into account. (defalias 'ediff-directory-revisions #[(dir1 regexp) "\302 \303\304$\207" [dir1 regexp ediff-directory-revisions-internal ediff-revision ediff-directory-revisions] 5 (#$ . 9821) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp))) (list (read-directory-name "Directory to compare with revision:" dir-A nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (defalias 'edir-revisions 'ediff-directory-revisions) #@223 Run Ediff on three directories, DIR1, DIR2, and DIR3, comparing files that have the same name in all three. The last argument, REGEXP, is nil or a regular expression; only file names that match the regexp are considered. (defalias 'ediff-directories3 #[(dir1 dir2 dir3 regexp) "\304 \n \305\306&\207" [dir1 dir2 dir3 regexp ediff-directories-internal ediff-files3 ediff-directories3] 7 (#$ . 10717) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp)) f) (list (setq f (read-directory-name "Directory A to compare:" dir-A nil)) (setq f (read-directory-name "Directory B to compare:" (if ediff-use-last-dir ediff-last-dir-B (ediff-strip-last-dir f)) nil 'must-match)) (read-directory-name "Directory C to compare:" (if ediff-use-last-dir ediff-last-dir-C (ediff-strip-last-dir f)) nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (defalias 'edirs3 'ediff-directories3) #@214 Run Ediff on a pair of directories, DIR1 and DIR2, merging files that have the same name in both. The third argument, REGEXP, is nil or a regular expression; only file names that match the regexp are considered. (defalias 'ediff-merge-directories #[(dir1 dir2 regexp &optional merge-autostore-dir) "\304 \305\n\306\307\305 &\207" [dir1 dir2 regexp merge-autostore-dir ediff-directories-internal nil ediff-merge-files ediff-merge-directories] 9 (#$ . 11849) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp)) f) (list (setq f (read-directory-name "Directory A to merge:" dir-A nil 'must-match)) (read-directory-name "Directory B to merge:" (if ediff-use-last-dir ediff-last-dir-B (ediff-strip-last-dir f)) nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (defalias 'edirs-merge 'ediff-merge-directories) #@374 Merge files in directories DIR1 and DIR2 using files in ANCESTOR-DIR as ancestors. Ediff merges files that have identical names in DIR1, DIR2. If a pair of files in DIR1 and DIR2 doesn't have an ancestor in ANCESTOR-DIR, Ediff will merge without ancestor. The fourth argument, REGEXP, is nil or a regular expression; only file names that match the regexp are considered. (defalias 'ediff-merge-directories-with-ancestor #[(dir1 dir2 ancestor-dir regexp &optional merge-autostore-dir) "\305 \n \306\307\310\f&\207" [dir1 dir2 ancestor-dir regexp merge-autostore-dir ediff-directories-internal ediff-merge-files-with-ancestor ediff-merge-directories-with-ancestor nil] 9 (#$ . 12918) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp)) f) (list (setq f (read-directory-name "Directory A to merge:" dir-A nil)) (setq f (read-directory-name "Directory B to merge:" (if ediff-use-last-dir ediff-last-dir-B (ediff-strip-last-dir f)) nil 'must-match)) (read-directory-name "Ancestor directory:" (if ediff-use-last-dir ediff-last-dir-C (ediff-strip-last-dir f)) nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) #@227 Run Ediff on a directory, DIR1, merging its files with their revisions. The second argument, REGEXP, is a regular expression that filters the file names. Only the files that are under revision control are taken into account. (defalias 'ediff-merge-directory-revisions #[(dir1 regexp &optional merge-autostore-dir) "\303 \304\305\306\n&\207" [dir1 regexp merge-autostore-dir ediff-directory-revisions-internal ediff-merge-revisions ediff-merge-directory-revisions nil] 7 (#$ . 14287) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp))) (list (read-directory-name "Directory to merge with revisions:" dir-A nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (defalias 'edir-merge-revisions 'ediff-merge-directory-revisions) #@241 Run Ediff on a directory, DIR1, merging its files with their revisions and ancestors. The second argument, REGEXP, is a regular expression that filters the file names. Only the files that are under revision control are taken into account. (defalias 'ediff-merge-directory-revisions-with-ancestor #[(dir1 regexp &optional merge-autostore-dir) "\303 \304\305\306\n&\207" [dir1 regexp merge-autostore-dir ediff-directory-revisions-internal ediff-merge-revisions-with-ancestor ediff-merge-directory-revisions-with-ancestor nil] 7 (#$ . 15273) (let ((dir-A (ediff-get-default-directory-name)) (default-regexp (eval ediff-default-filtering-regexp))) (list (read-directory-name "Directory to merge with revisions and ancestors:" dir-A nil 'must-match) (read-string (if (stringp default-regexp) (format "Filter through regular expression (default %s): " default-regexp) "Filter through regular expression: ") nil 'ediff-filtering-regexp-history (eval ediff-default-filtering-regexp))))]) (byte-code "\300\301\302\"\210\300\303\304\"\207" [defalias edir-merge-revisions-with-ancestor ediff-merge-directory-revisions-with-ancestor edirs-merge-with-ancestor ediff-merge-directories-with-ancestor] 3) (defalias 'ediff-directories-internal #[(dir1 dir2 dir3 regexp action jobname &optional startup-hooks merge-autostore-dir) ";\203\306!\203\202\307! \n\230\203!\310\311 \"\210\202F \312=\2035 \230\2035\310\313 \"\210\202F \312=\203F\n\230\203F\310\314 \"\210\f\203T\f;\204T\310\315 \"\210\316\211%&\203\204 \211'\206g(\317>)\203\204\f\204\204\320\321)\203}*\202\200\322 !\316\323$\f\203\315 ;\203\240\f \230\203\240\324\325!\204\315\310\326!\210\202\315\n;\203\270\f\n\230\203\270\324\327!\204\315\310\326!\210\202\315;\203\315\f\230\203\315\324\330!\204\315\310\326!\210\331 + \n\f&%\332\316\333\334\335,DE\333\336\337\335%DDEF-B-\340\341%@\342\343 -&\344 !*\207" [dir3 dir1 dir2 jobname merge-autostore-dir meta-buf file-directory-p file-name-directory error "Directories A and B are the same: %s" ediff-directories3 "Directories A and C are the same: %s" "Directories B and C are the same: %s" "%s: Directory for storing merged files must be a string" nil (ediff-merge-directories ediff-merge-directories-with-ancestor ediff-merge-directory-revisions ediff-merge-directory-revisions-with-ancestor ediff-merge-filegroups-with-ancestor) read-directory-name "Save merged files in directory: " ediff-strip-last-dir must-match y-or-n-p "Directory for saving merged files = Directory A. Sure? " "Directory merge aborted" "Directory for saving merged files = Directory B. Sure? " "Directory for saving merged files = Ancestor Directory. Sure? " ediff-intersect-directories lambda setq ediff-session-action-function quote ediff-dir-difference-list cdr ediff-prepare-meta-buffer ediff-filegroup-action "*Ediff Session Group Panel" ediff-redraw-directory-group-buffer ediff-show-meta-buffer dir-diff-struct ediff-autostore-merges metajob ediff-metajob-name ediff-use-last-dir ediff-last-merge-autostore-dir regexp action startup-hooks] 9]) (defalias 'ediff-directory-revisions-internal #[(dir1 regexp action jobname &optional startup-hooks merge-autostore-dir) "\306!\203\n\202 \307! \203 ;\204\310\311\n\"\210\312\211 \203J\n\211\206-\313>)\203J \204J\314\315\203C \202F\316!\312\317$ \203c;\203c \230\203c\320\321!\204c\310\322!\210\323\n! $\324\312\325\326\327\"DEE#B#\330\331\f\332\333\n#&\334 !*\207" [dir1 merge-autostore-dir jobname meta-buf file-list ediff-autostore-merges file-directory-p file-name-directory error "%S: Directory for storing merged files must be a string" nil (ediff-merge-directories ediff-merge-directories-with-ancestor ediff-merge-directory-revisions ediff-merge-directory-revisions-with-ancestor ediff-merge-filegroups-with-ancestor) read-directory-name "Save merged files in directory: " ediff-strip-last-dir must-match y-or-n-p "Directory for saving merged file = directory A. Sure? " "Merge of directory revisions aborted" ediff-get-directory-files-under-revision lambda setq ediff-session-action-function quote ediff-prepare-meta-buffer ediff-filegroup-action "*Ediff Session Group Panel" ediff-redraw-directory-group-buffer ediff-show-meta-buffer metajob ediff-metajob-name ediff-use-last-dir ediff-last-merge-autostore-dir regexp action startup-hooks] 8]) #@236 Compare WIND-A and WIND-B, which are selected by clicking, wordwise. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. If WIND-B is nil, use window next to WIND-A. (defalias 'ediff-windows-wordwise #[(dumb-mode &optional wind-A wind-B startup-hooks) "\304 \n \305\306&\207" [dumb-mode wind-A wind-B startup-hooks ediff-windows ediff-windows-wordwise word-mode] 7 (#$ . 19666) "P"]) #@236 Compare WIND-A and WIND-B, which are selected by clicking, linewise. With prefix argument, DUMB-MODE, or on a non-windowing display, works as follows: If WIND-A is nil, use selected window. If WIND-B is nil, use window next to WIND-A. (defalias 'ediff-windows-linewise #[(dumb-mode &optional wind-A wind-B startup-hooks) "\304 \n \305\306&\207" [dumb-mode wind-A wind-B startup-hooks ediff-windows ediff-windows-linewise nil] 7 (#$ . 20128) "P"]) (defalias 'ediff-windows #[(dumb-mode wind-A wind-B startup-hooks job-name word-mode) "\204 \306 \204D \307\310 !\203 \202#\n\203!\311 !\202#\312 *\f \310 !\2033 \202?\n\203=\311 !\202?\312 *\202P\313 \307\314#\313\f \315#\316 !\316\f!\307\211\211\211\212\317\213\210)\320 \321#\320\f\322#\323 \307&\n.\207" [dumb-mode wind-A prev-wind wind wind-B end-B ediff-window-display-p nil window-live-p next-window selected-window ediff-get-window-by-clicking 1 2 window-buffer ((byte-code "\306\307!\210\310!\210\311 \312 \310 !\210\311 \312 \306\207" [wind-A beg-A end-A wind-B beg-B end-B sit-for 0 select-window window-start window-end] 2)) ediff-clone-buffer-for-window-comparison "-Window.A-" "-Window.B-" ediff-regions-internal beg-B end-A beg-A buffer-B buffer-A startup-hooks job-name word-mode] 11]) #@261 Run Ediff on a pair of regions in specified buffers. Regions (i.e., point and mark) can be set in advance or marked interactively. This function is effective only for relatively small regions, up to 200 lines. For large regions, use `ediff-regions-linewise'. (defalias 'ediff-regions-wordwise #[(buffer-A buffer-B &optional startup-hooks) "\203\306!\203\307\306!!\204\310\311\"\210 \203)\306 !\203)\307\306 !!\204.\310\311 \"\210\312\313\"\312 \314\"\315\211\211\211\212q\210\316 \317  q\210\316 \317 )\320\306! \f\306 ! \n\321\322\315&\n.\207" [buffer-A buffer-B reg-B-end reg-B-beg reg-A-end reg-A-beg get-buffer buffer-name error "Buffer %S doesn't exist" ediff-clone-buffer-for-region-comparison "-Region.A-" "-Region.B-" nil region-beginning region-end ediff-regions-internal ediff-regions-wordwise word-mode startup-hooks] 11 (#$ . 21448) (let (bf) (list (setq bf (read-buffer "Region's A buffer: " (ediff-other-buffer "") t)) (read-buffer "Region's B buffer: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)))]) #@295 Run Ediff on a pair of regions in specified buffers. Regions (i.e., point and mark) can be set in advance or marked interactively. Each region is enlarged to contain full lines. This function is effective for large regions, over 100-200 lines. For small regions, use `ediff-regions-wordwise'. (defalias 'ediff-regions-linewise #[(buffer-A buffer-B &optional startup-hooks) "\203\306!\203\307\306!!\204\310\311\"\210 \203)\306 !\203)\307\306 !!\204.\310\311 \"\210\312\313\"\312 \314\"\315\211\211\211\212q\210\316 \317  b\210\320 \210`\fb\210\315\210m\204_\315u\210` q\210\316 \317  b\210\320 \210`\nb\210\315\210m\204\315u\210`)\321\306! \f\306 ! \n\322\315\211&\n.\207" [buffer-A buffer-B reg-B-end reg-B-beg reg-A-end reg-A-beg get-buffer buffer-name error "Buffer %S doesn't exist" ediff-clone-buffer-for-region-comparison "-Region.A-" "-Region.B-" nil region-beginning region-end beginning-of-line ediff-regions-internal ediff-regions-linewise startup-hooks] 11 (#$ . 22533) (let (bf) (list (setq bf (read-buffer "Region A's buffer: " (ediff-other-buffer "") t)) (read-buffer "Region B's buffer: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)))]) (defalias 'ediff-regions-internal #[(buffer-A beg-A end-A buffer-B beg-B end-B startup-hooks job-name word-mode setup-parameters) "\306!\307\211\211\211\203:\310!\203:\311\310!!\203:rq\210\312 \307\223\312 \307\223)\202F\313=\204F\314!\210\203t\310!\203t\311\310!!\203trq\210\312  \307\223 \312 !\307\223!)\202\200\313=\204\200\314!\210\"\203\222\315 $\210\202\234\316 $\210\317 \320\"\"\203\263\315 ! $\210\202\275\316 ! $\210\317 \321\"\322#\322 !#\323\n \307\211\324\307\325\nD\325 DF#B\326\327\"B\330\f DB\331$BE%\"&-\207" [ediff-tmp-buffer file-B file-A overl-B overl-A tmp-buffer get-buffer-create nil get-buffer buffer-name make-marker ediff-quit error ediff-wordify ediff-copy-to-buffer ediff-make-temp-file "regA" "regB" ediff-make-bullet-proof-overlay ediff-setup lambda delete-file append ediff-word-mode ediff-narrow-bounds ediff-job-name buffer-A beg-A end-A this-command ediff-KILLED-VITAL-BUFFER buffer-B beg-B end-B word-mode startup-hooks job-name setup-parameters] 13]) (defalias 'ediff-merge 'ediff-merge-files) (defalias 'ediff-merge-on-startup #[nil "\300\301!\207" [ediff-do-merge 0] 2]) (put 'ediff-merge-on-startup 'byte-optimizer 'byte-compile-inline-expand) #@35 Merge two files without ancestor. (defalias 'ediff-merge-files #[(file-A file-B &optional startup-hooks merge-buffer-file) "\304B\305 \306\n!\203\307\310 !\n\"\202\n\311\312 &\207" [startup-hooks file-A file-B merge-buffer-file ediff-merge-on-startup ediff-files-internal file-directory-p expand-file-name file-name-nondirectory nil ediff-merge-files] 7 (#$ . 25046) (let ((dir-A (if ediff-use-last-dir ediff-last-dir-A default-directory)) dir-B f) (list (setq f (ediff-read-file-name "File A to merge" dir-A (ediff-get-default-file-name) 'no-dirs)) (ediff-read-file-name "File B to merge" (setq dir-B (if ediff-use-last-dir ediff-last-dir-B (file-name-directory f))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory f) dir-B))) (ediff-get-default-file-name f 1)))))]) #@32 Merge two files with ancestor. (defalias 'ediff-merge-files-with-ancestor #[(file-A file-B file-ancestor &optional startup-hooks merge-buffer-file) "\305B\306 \307\n!\203\310\311 !\n\"\202\n \312\f&\207" [startup-hooks file-A file-B file-ancestor merge-buffer-file ediff-merge-on-startup ediff-files-internal file-directory-p expand-file-name file-name-nondirectory ediff-merge-files-with-ancestor] 7 (#$ . 25898) (let ((dir-A (if ediff-use-last-dir ediff-last-dir-A default-directory)) dir-B dir-ancestor f ff) (list (setq f (ediff-read-file-name "File A to merge" dir-A (ediff-get-default-file-name) 'no-dirs)) (setq ff (ediff-read-file-name "File B to merge" (setq dir-B (if ediff-use-last-dir ediff-last-dir-B (file-name-directory f))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory f) dir-B))) (ediff-get-default-file-name f 1)))) (ediff-read-file-name "Ancestor file" (setq dir-ancestor (if ediff-use-last-dir ediff-last-dir-ancestor (file-name-directory ff))) (progn (ediff-add-to-history 'file-name-history (ediff-abbreviate-file-name (expand-file-name (file-name-nondirectory ff) dir-ancestor))) (ediff-get-default-file-name ff 2)))))]) (defalias 'ediff-merge-with-ancestor 'ediff-merge-files-with-ancestor) #@33 Merge buffers without ancestor. (defalias 'ediff-merge-buffers #[(buffer-A buffer-B &optional startup-hooks job-name merge-buffer-file) "\305B \204\n\306\307\n \310 \f&\207" [startup-hooks job-name buffer-A buffer-B merge-buffer-file ediff-merge-on-startup ediff-merge-buffers ediff-buffers-internal nil] 7 (#$ . 27200) (let (bf) (list (setq bf (read-buffer "Buffer A to merge: " (ediff-other-buffer "") t)) (read-buffer "Buffer B to merge: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)))]) #@30 Merge buffers with ancestor. (defalias 'ediff-merge-buffers-with-ancestor #[(buffer-A buffer-B buffer-ancestor &optional startup-hooks job-name merge-buffer-file) "\306B \204\n\307\310\n \f &\207" [startup-hooks job-name buffer-A buffer-B buffer-ancestor merge-buffer-file ediff-merge-on-startup ediff-merge-buffers-with-ancestor ediff-buffers-internal] 7 (#$ . 27735) (let (bf bff) (list (setq bf (read-buffer "Buffer A to merge: " (ediff-other-buffer "") t)) (setq bff (read-buffer "Buffer B to merge: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer bf)) t)) (read-buffer "Ancestor buffer: " (progn (save-window-excursion (other-window 1)) (ediff-other-buffer (list bf bff))) t)))]) #@129 Run Ediff by merging two revisions of a file. The file is the optional FILE argument or the file visited by the current buffer. (defalias 'ediff-merge-revisions #[(&optional file startup-hooks merge-buffer-file) ";\203 \306!\210\307\211\310\311\312;\203\313!\202\314\"!\310\311\315;\203-\313!\202.\314\"!\316 \210\317\311\320 \"!\n \307\f %*\207" [file rev2 rev1 ediff-version-control-package startup-hooks merge-buffer-file find-file nil read-string format "Version 1 to merge (default %s's working version): " file-name-nondirectory "current buffer" "Version 2 to merge (default %s): " ediff-load-version-control intern "ediff-%S-merge-internal"] 6 (#$ . 28456) nil]) #@152 Run Ediff by merging two revisions of a file with a common ancestor. The file is the optional FILE argument or the file visited by the current buffer. (defalias 'ediff-merge-revisions-with-ancestor #[(&optional file startup-hooks merge-buffer-file) ";\203 \306!\210\307\211\211\310\311\312;\203\313!\202\314\"!\310\311\315;\203/\313!\2020\314\"!\310\311\316;\203A\313!\202B\314\"!\317 \210\320\311\321\f\"! \n %+\207" [file ancestor-rev rev2 rev1 ediff-version-control-package startup-hooks find-file nil read-string format "Version 1 to merge (default %s's working version): " file-name-nondirectory "current buffer" "Version 2 to merge (default %s): " "Ancestor version (default %s's base revision): " ediff-load-version-control intern "ediff-%S-merge-internal" merge-buffer-file] 6 (#$ . 29150) nil]) #@191 Run Ediff-merge on appropriate revisions of the selected file. First run after `M-x cvs-update'. Then place the cursor on a line describing a file and then run `run-ediff-from-cvs-buffer'. (defalias 'run-ediff-from-cvs-buffer #[(pos) "\303 \210\304 \"\211\203\305\n!\202\306\307!)\207" [cvs-cookie-handle pos tin ediff-load-version-control tin-locate cvs-run-ediff-on-file-descriptor error "There is no file to merge"] 4 (#$ . 29987) "d"]) #@241 Run Ediff by patching SOURCE-FILENAME. If optional PATCH-BUF is given, use the patch in that buffer and don't ask the user. If prefix argument, then: if even argument, assume that the patch is in a buffer. If odd -- assume it is in a file. (defalias 'ediff-patch-file #[(&optional arg patch-buf) "\306\211\307\310!\210\311\n\205\312\n! \"\f\203 \2022\2040\313 !\2030\314\315\313 !!!\2022\316\317 \306\211\320 %\321 \"*\207" [source-file source-dir arg patch-buf ediff-use-last-dir ediff-last-dir-patch nil require ediff-ptch ediff-get-patch-buffer prefix-numeric-value buffer-file-name file-name-directory expand-file-name read-file-name "File to patch (directory, if multifile patch): " ediff-get-default-file-name ediff-dispatch-file-patching-job ediff-patch-default-directory default-directory] 6 (#$ . 30441) "P"]) #@485 Run Ediff by patching the buffer specified at prompt. Without the optional prefix ARG, asks if the patch is in some buffer and prompts for the buffer or a file, depending on the answer. With ARG=1, assumes the patch is in a file and prompts for the file. With ARG=2, assumes the patch is in a buffer and prompts for the buffer. PATCH-BUF is an optional argument, which specifies the buffer that contains the patch. If not given, the user is prompted according to the prefix argument. (defalias 'ediff-patch-buffer #[(&optional arg patch-buf) "\302\303!\210\304\205\f\305! \"\306 \307\310\311 !\"\"\207" [arg patch-buf require ediff-ptch ediff-get-patch-buffer prefix-numeric-value ediff-patch-buffer-internal read-buffer "Which buffer to patch? " ediff-other-buffer] 6 (#$ . 31285) "P"]) (byte-code "\300\301\302\"\210\300\303\304\"\207" [defalias epatch ediff-patch-file epatch-buffer ediff-patch-buffer] 3) #@237 Run Ediff by comparing versions of a file. The file is an optional FILE argument or the file entered at the prompt. Default: the file visited by the current buffer. Uses `vc.el' or `rcs.el' depending on `ediff-version-control-package'. (defalias 'ediff-revision #[(&optional file startup-hooks) ";\204\306\307 \203\n\202 \310 \311$\312!\210\313 \203,\314\315\316\317 \"!\203,\320p!\210\321\211\322\315\323\324!\"!\322\315\325\324!\"!\326 \210\327\315\330\"! \f#*\207" [file ediff-use-last-dir ediff-last-dir-A default-directory rev2 rev1 ediff-read-file-name "Compare revisions for file" ediff-get-default-file-name no-dirs find-file buffer-modified-p y-or-n-p format "Buffer %s is modified. Save buffer? " buffer-name save-buffer nil read-string "Revision 1 to compare (default %s's latest revision): " file-name-nondirectory "Revision 2 to compare (default %s's current state): " ediff-load-version-control intern "ediff-%S-internal" ediff-version-control-package startup-hooks] 5 (#$ . 32205) "P"]) (defalias 'erevision 'ediff-revision) (defalias 'ediff-load-version-control #[(&optional silent) "\302\303!\210\304!\206\"\305\306!!\203\307\310!\210\302!\207 \206\"\311\312\"\207" [ediff-version-control-package silent require ediff-vers featurep locate-library symbol-name message "" error "Version control package %S.el not found. Use vc.el instead"] 3]) #@97 Return string describing the version of Ediff. When called interactively, displays the version. (defalias 'ediff-version #[nil "t\203 \302\300 !\207\303\304 #\207" [ediff-version ediff-date message format "Ediff %s of %s"] 4 (#$ . 33600) nil]) #@64 Display Ediff's manual. With optional NODE, goes to that node. (defalias 'ediff-documentation #[(&optional node) " \304 \210\305\306\307\217*\207" [ediff-control-window ediff-control-buffer ctl-buf ctl-window ediff-skip-unsuitable-frames nil (byte-code "\302\303\304!!\210\305\203\306\202\307!\210 \203\310 !\210\202!\311\312!\210\313\314 !\207" [ediff-xemacs-p node pop-to-buffer get-buffer-create "*info*" info "ediff.info" "ediff" Info-goto-node message "Type `i' to search for a specific topic" raise-frame selected-frame] 3) ((error (byte-code "\306\307!\210\220 \203#\310 !\203#\311\310 !!\203#r q\210\312 \210)\202-\n\313=\204-\314 !\210\315\f!\221\210\316 !\205A\317 !\210\320 \"\207" [ediff-msg-buffer standard-output this-command ediff-KILLED-VITAL-BUFFER ediff-BAD-INFO ctl-window beep 1 get-buffer buffer-name fundamental-mode ediff-quit error princ window-live-p select-window set-window-buffer ctl-buf] 4)))] 3 (#$ . 33852) nil]) (byte-code "\302\303\211\203 @\304\305\"\210 A\211\204*\306\307!\210\310\311!\210\312\313!\207" [mess #:--cl-dolist-temp-- ("^Errors in diff output. Diff output is in " "^Hmm... I don't see an Ediff command around here...$" "^Undocumented command! Type `G' in Ediff Control Panel to drop a note to the Ediff maintainer$" ": This command runs in Ediff Control Buffer only!$" ": Invalid op in ediff-check-version$" "^ediff-shrink-window-C can be used only for merging jobs$" "^Lost difference info on these directories$" "^This command is inapplicable in the present context$" "^This session group has no parent$" "^Can't hide active session, $" "^Ediff: something wrong--no multiple diffs buffer$" "^Can't make context diff for Session $" "^The patch buffer wasn't found$" "^Aborted$" "^This Ediff session is not part of a session group$" "^No active Ediff sessions or corrupted session registry$" "^No session info in this line$" "^`.*' is not an ordinary file$" "^Patch appears to have failed$" "^Recomputation of differences cancelled$" "^No fine differences in this mode$" "^Lost connection to ancestor buffer...sorry$" "^Not merging with ancestor$" "^Don't know how to toggle read-only in buffer " "Emacs is not running as a window application$" "^This command makes sense only when merging with an ancestor$" "^At end of the difference list$" "^At beginning of the difference list$" "^Nothing saved for diff .* in buffer " "^Buffer is out of sync for file " "^Buffer out of sync for file " "^Output from `diff' not found$" "^You forgot to specify a region in buffer " "^All right. Make up your mind and come back...$" "^Current buffer is not visiting any file$" "^Failed to retrieve revision: $" "^Can't determine display width.$" "^File `.*' does not exist or is not readable$" "^File `.*' is a directory$" "^Buffer .* doesn't exist$" "^Directories . and . are the same: " "^Directory merge aborted$" "^Merge of directory revisions aborted$" "^Buffer .* doesn't exist$" "^There is no file to merge$" "^Version control package .*.el not found. Use vc.el instead$") nil add-to-list debug-ignored-errors require ediff-util run-hooks ediff-load-hook provide ediff] 4)