;ELC ;;; compiled by kwzh@hal.gnu.ai.mit.edu on Tue Apr 25 17:56:31 1995 ;;; from file /gd/gnu/emacs/19.0/lisp/emerge.el ;;; emacs version 19.28.90.40. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19"))) (error "`/gd/gnu/emacs/19.0/lisp/emerge.el' was compiled for Emacs 19")) (byte-code "!\n!\fBJM # # # # # # #" [boundp menu-bar-emerge-menu make-sparse-keymap "Emerge" current-load-list define-key [emerge-merge-directories] ("Merge Directories ..." . emerge-merge-directories) [emerge-revisions-with-ancestor] ("Revisions with Ancestor ..." . emerge-revisions-with-ancestor) [emerge-revisions] ("Revisions ..." . emerge-revisions) [emerge-files-with-ancestor] ("Files with Ancestor ..." . emerge-files-with-ancestor) [emerge-files] ("Files ..." . emerge-files) [emerge-buffers-with-ancestor] ("Buffers with Ancestor ..." . emerge-buffers-with-ancestor) [emerge-buffers] ("Buffers ..." . emerge-buffers)] 4) #@146 Macro to switch to BUFFER, evaluate FORMS, returns to original buffer. Differs from `save-excursion' in that it doesn't save the point and mark. (defalias 'emerge-eval-in-buffer '(macro . #[(buffer &rest forms) " DBBBBE" [let ((StartBuffer (current-buffer))) unwind-protect progn set-buffer buffer forms ((set-buffer StartBuffer))] 6 (#$ . 1155)])) #@277 Defines SYMBOL as an advertised variable. Performs a defvar, then executes `make-variable-buffer-local' on the variable. Also sets the `preserved' property, so that `kill-all-local-variables' (called by major-mode setting commands) won't destroy Emerge control variables. (defalias 'emerge-defvar-local '(macro . #[(var value doc) "\n \fF\nDD\nDBBF" [progn defvar var value doc make-variable-buffer-local quote put ((quote preserved) t)] 6 (#$ . 1520)])) (byte-code "! B  \"" [boundp emerge-minor-modes-list ((emerge-mode " Emerge") (emerge-fast-mode " F") (emerge-edit-mode " E") (emerge-auto-advance " A") (emerge-skip-prefers " S")) current-load-list emerge-mode minor-mode-alist append] 3) #@491 Emerge mode is used by the Emerge file-merging package. It is entered only through one of the functions: `emerge-files' `emerge-files-with-ancestor' `emerge-buffers' `emerge-buffers-with-ancestor' `emerge-files-command' `emerge-files-with-ancestor-command' `emerge-files-remote' `emerge-files-with-ancestor-remote' Commands: \{emerge-basic-keymap} Commands must be prefixed by \\[emerge-basic-keymap] in `edit' mode, but can be invoked directly in `fast' mode. (defalias 'emerge-mode #[nil "" [nil] 1 (#$ . 2252)]) #@24 The version of Emerge. (defvar emerge-version "5fsf" (#$ . 2804)) #@98 Return string describing the version of Emerge. When called interactively, displays the version. (defalias 'emerge-version #[nil "t\n \"\n" [message "Emerge version %s" emerge-version] 3 (#$ . 2876) nil]) #@48 *Name of the program which compares two files. (defvar emerge-diff-program "diff" (#$ . -3094)) #@113 *Name of the program which compares three files. Its arguments are the ancestor file and the two variant files. (defvar emerge-diff3-program "diff3" (#$ . -3197)) #@71 *Options to pass to `emerge-diff-program' and `emerge-diff3-program'. (defvar emerge-diff-options "" (#$ . -3366)) #@120 *Pattern to match lines produced by diff that describe differences. This is as opposed to lines from the source files. (defvar emerge-match-diff-line (byte-code " İ)" ["\\([0-9]+\\)\\(\\|,\\([0-9]+\\)\\)" x "^" "\\([acd]\\)" "$"] 5) (#$ . -3488)) #@128 *Regexp that matches normal output lines from `emerge-diff-program'. Lines that do not match are assumed to be error messages. (defvar emerge-diff-ok-lines-regexp "^\\([0-9,]+[acd][0-9,]+$\\|[<>] \\|---\\)" (#$ . -3750)) #@129 *Regexp that matches normal output lines from `emerge-diff3-program'. Lines that do not match are assumed to be error messages. (defvar emerge-diff3-ok-lines-regexp "^\\([1-3]:\\|====\\| \\)" (#$ . -3978)) #@52 *Name of the program that checks in RCS revisions. (defvar emerge-rcs-ci-program "ci" (#$ . -4191)) #@53 *Name of the program that checks out RCS revisions. (defvar emerge-rcs-co-program "co" (#$ . -4297)) #@174 *Non-nil if Emerge should process local-variables lists in merge buffers. (You can explicitly request processing the local-variables by executing `(hack-local-variables)'.) (defvar emerge-process-local-variables nil (#$ . -4405)) #@339 *If non-nil: `emerge-execute-line' makes no output if an input was deleted. It concludes that an input version has been deleted when an ancestor entry is present, only one A or B entry is present, and an output entry is present. If nil: In such circumstances, the A or B file that is present will be copied to the designated output file. (defvar emerge-execute-line-deletions nil (#$ . -4642)) #@161 *Flag placed above the highlighted block of code. Must end with newline. Must be set before Emerge is loaded, or emerge-new-flags must be run after setting. (defvar emerge-before-flag "vvvvvvvvvvvvvvvvvvvv\n" (#$ . -5043)) #@161 *Flag placed below the highlighted block of code. Must end with newline. Must be set before Emerge is loaded, or emerge-new-flags must be run after setting. (defvar emerge-after-flag "^^^^^^^^^^^^^^^^^^^^\n" (#$ . -5276)) #@67 *Hook to run in the merge buffer after the merge has been set up. (defvar emerge-startup-hook nil (#$ . -5507)) #@116 *Hook to run after a difference has been selected. The variable `n' holds the (internal) number of the difference. (defvar emerge-select-hook nil (#$ . -5626)) #@118 *Hook to run after a difference has been unselected. The variable `n' holds the (internal) number of the difference. (defvar emerge-unselect-hook nil (#$ . -5793)) #@189 *If nil, default dir for filenames in emerge is `default-directory'. If non-nil, filenames complete in the directory of the last argument of the same type to an `emerge-files...' command. (defvar emerge-default-last-directories nil (#$ . -5964)) #@68 Last directory for the first file of an `emerge-files...' command. (defvar emerge-last-dir-A nil (#$ . 6216)) #@69 Last directory for the second file of an `emerge-files...' command. (defvar emerge-last-dir-B nil (#$ . 6332)) #@71 Last directory for the ancestor file of an `emerge-files...' command. (defvar emerge-last-dir-ancestor nil (#$ . 6449)) #@69 Last directory for the output file of an `emerge-files...' command. (defvar emerge-last-dir-output nil (#$ . 6575)) #@76 Last RCS revision used for first file of an `emerge-revisions...' command. (defvar emerge-last-revision-A nil (#$ . 6697)) #@77 Last RCS revision used for second file of an `emerge-revisions...' command. (defvar emerge-last-revision-B nil (#$ . 6826)) #@79 Last RCS revision used for ancestor file of an `emerge-revisions...' command. (defvar emerge-last-revision-ancestor nil (#$ . 6956)) (byte-code " B B B B B B B B B B B B B" [emerge-before-flag-length current-load-list emerge-before-flag-lines emerge-before-flag-match emerge-after-flag-length emerge-after-flag-lines emerge-after-flag-match emerge-diff-buffer emerge-diff-error-buffer emerge-prefix-argument emerge-file-out emerge-exit-func emerge-globalized-difference-list emerge-globalized-number-of-differences] 2) #@152 Function to be called after `emerge-{before,after}-flag'. This is called after these functions are changed to compute values that depend on the flags. (defalias 'emerge-new-flags #[nil "G\"!G\" !\n" [emerge-before-flag emerge-before-flag-length emerge-count-matches-string "\n" emerge-before-flag-lines regexp-quote emerge-before-flag-match emerge-after-flag emerge-after-flag-length emerge-after-flag-lines emerge-after-flag-match] 3 (#$ . 7510)]) #@52 Return the number of matches in STRING for REGEXP. (defalias 'emerge-count-matches-string #[(string regexp) "\f \n# T *" [0 count i string-match regexp string] 4 (#$ . 7990)]) (emerge-new-flags) #@102 *Number of lines that we want to show above and below the flags when we are displaying a difference. (defvar emerge-min-visible-lines 3 (#$ . -8208)) #@89 *Prefix to put on Emerge temporary file names. Do not start with `~/' or `~user-name/'. (defvar emerge-temp-file-prefix (byte-code "!!!$GV$%ȉGSHU5 O P*" [getenv "TMPDIR" "TMP" "TEMP" nil d env 0 "/tmp" 47 -1 "/emerge"] 4) (#$ . -8364)) #@35 *Mode for Emerge temporary files. (defvar emerge-temp-file-mode 384 (#$ . -8645)) #@428 *Template for `emerge-combine-versions' to combine the two versions. The template is inserted as a string, with the following interpolations: %a the A version of the difference %b the B version of the difference %% the character `%' Don't forget to end the template with a newline. Note that this variable can be made local to a particular merge buffer by giving a prefix argument to `emerge-set-combine-versions-template'. (defvar emerge-combine-versions-template "#ifdef NEW\n%b#else /* NEW */\n%a#endif /* NEW */\n" (#$ . -8734)) #@143 Keymap of Emerge commands. Directly available in `fast' mode; must be prefixed by \\[emerge-basic-keymap] in `edit' mode. (defvar emerge-basic-keymap nil (#$ . 9277)) #@84 Local keymap used in Emerge `fast' mode. Makes Emerge commands directly available. (defvar emerge-fast-keymap nil (#$ . 9470)) (byte-code "!\n!\fB!!\fB!'!\fB" [boundp emerge-options-menu make-sparse-keymap "Options" current-load-list emerge-merge-menu "Merge" emerge-move-menu "Move"] 2) #@90 *Command prefix for Emerge commands in `edit' mode. Must be set before Emerge is loaded. (defvar emerge-command-prefix "" (#$ . -9795)) (defalias 'emerge-setup-fixed-keymaps #[nil "  ! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @A# BC# DE# FG# HI# JK# LM# NO# MP !QQR#QQMSTUQV $SWXQV $ YZ #Q[\\]B#Q^_`B#QabcB#cde#cfg#chi#cjk#clm#cno#cpq#crs#ctu#cvw#cxy#]z{#]|}#]~#]#]#]#]#]#]#`#`#`#`#`#`#`#`#`#`#`#`#" [make-keymap emerge-basic-keymap suppress-keymap define-key "p" emerge-previous-difference "n" emerge-next-difference "a" emerge-select-A "b" emerge-select-B "j" emerge-jump-to-difference "." emerge-find-difference "q" emerge-quit "" emerge-abort "f" emerge-fast-mode "e" emerge-edit-mode "s" nil "sa" emerge-auto-advance "ss" emerge-skip-prefers "l" emerge-recenter "d" "da" emerge-default-A "db" emerge-default-B "c" "ca" emerge-copy-as-kill-A "cb" emerge-copy-as-kill-B "i" "ia" emerge-insert-A "ib" emerge-insert-B "m" emerge-mark-difference "v" emerge-scroll-up "^" emerge-scroll-down "<" emerge-scroll-left ">" emerge-scroll-right "|" emerge-scroll-reset "x" "x1" emerge-one-line-window "xc" emerge-combine-versions "xC" emerge-combine-versions-register "xf" emerge-file-names "xj" emerge-join-differences "xl" emerge-line-numbers "xm" emerge-set-merge-mode "xs" emerge-split-difference "xt" emerge-trim-difference "xx" emerge-set-combine-versions-template copy-keymap emerge-fast-keymap emerge-command-prefix substitute-key-definition write-file emerge-query-write-file current-global-map save-buffer emerge-query-save-buffer [menu-bar] make-sparse-keymap [menu-bar options] "Options" emerge-options-menu [menu-bar merge] "Merge" emerge-merge-menu [menu-bar move] "Move" emerge-move-menu [emerge-scroll-reset] ("Scroll Reset" . emerge-scroll-reset) [emerge-scroll-right] ("Scroll Right" . emerge-scroll-right) [emerge-scroll-left] ("Scroll Left" . emerge-scroll-left) [emerge-scroll-down] ("Scroll Down" . emerge-scroll-down) [emerge-scroll-up] ("Scroll Up" . emerge-scroll-up) [emerge-recenter] ("Recenter" . emerge-recenter) [emerge-mark-difference] ("Mark Difference" . emerge-mark-difference) [emerge-jump-to-difference] ("Jump To Difference" . emerge-jump-to-difference) [emerge-find-difference] ("Find Difference" . emerge-find-difference) [emerge-previous-difference] ("Previous Difference" . emerge-previous-difference) [emerge-next-difference] ("Next Difference" . emerge-next-difference) [emerge-one-line-window] ("One Line Window" . emerge-one-line-window) [emerge-set-merge-mode] ("Set Merge Mode" . emerge-set-merge-mode) [emerge-set-combine-template] ("Set Combine Template..." . emerge-set-combine-template) [emerge-default-B] ("Default B" . emerge-default-B) [emerge-default-A] ("Default A" . emerge-default-A) [emerge-skip-prefers] ("Skip Prefers" . emerge-skip-prefers) [emerge-auto-advance] ("Auto Advance" . emerge-auto-advance) [emerge-edit-mode] ("Edit Mode" . emerge-edit-mode) [emerge-fast-mode] ("Fast Mode" . emerge-fast-mode) [emerge-abort] ("Abort" . emerge-abort) [emerge-quit] ("Quit" . emerge-quit) [emerge-split-difference] ("Split Difference" . emerge-split-difference) [emerge-join-differences] ("Join Differences" . emerge-join-differences) [emerge-trim-difference] ("Trim Difference" . emerge-trim-difference) [emerge-combine-versions] ("Combine Versions" . emerge-combine-versions) [emerge-copy-as-kill-B] ("Copy B as Kill" . emerge-copy-as-kill-B) [emerge-copy-as-kill-A] ("Copy A as Kill" . emerge-copy-as-kill-A) [emerge-insert-B] ("Insert B" . emerge-insert-B) [emerge-insert-A] ("Insert A" . emerge-insert-A) [emerge-select-B] ("Select B" . emerge-select-B) [emerge-select-A] ("Select A" . emerge-select-A)] 5]) #@28 Indicator for emerge-mode. (defvar emerge-mode nil (#$ . 13993)) (byte-code "!#" [make-variable-buffer-local emerge-mode put preserved t] 4) #@41 Indicator for emerge-mode fast submode. (defvar emerge-fast-mode nil (#$ . 14148)) (byte-code "!#" [make-variable-buffer-local emerge-fast-mode put preserved t] 4) #@41 Indicator for emerge-mode edit submode. (defvar emerge-edit-mode nil (#$ . 14326)) (byte-code "!#" [make-variable-buffer-local emerge-edit-mode put preserved t] 4) #@46 The buffer in which the A variant is stored. (defvar emerge-A-buffer nil (#$ . 14504)) (byte-code "!#" [make-variable-buffer-local emerge-A-buffer put preserved t] 4) #@46 The buffer in which the B variant is stored. (defvar emerge-B-buffer nil (#$ . 14685)) (byte-code "!#" [make-variable-buffer-local emerge-B-buffer put preserved t] 4) #@53 The buffer in which the merged file is manipulated. (defvar emerge-merge-buffer nil (#$ . 14866)) (byte-code "!#" [make-variable-buffer-local emerge-merge-buffer put preserved t] 4) #@78 The buffer in which the ancestor variant is stored, or nil if there is none. (defvar emerge-ancestor-buffer nil (#$ . 15062)) (byte-code "!#" [make-variable-buffer-local emerge-ancestor-buffer put preserved t] 4) #@93 Variables and properties of a buffer which are saved, modified and restored during a merge. (defconst emerge-saved-variables (quote ((buffer-modified-p set-buffer-modified-p) buffer-read-only buffer-auto-save-file-name)) (#$ . 15289)) #@65 Values to be assigned to emerge-saved-variables during a merge. (defconst emerge-merging-values (quote (nil t nil)) (#$ . 15530)) #@55 Remembers emerge-saved-variables for emerge-A-buffer. (defvar emerge-A-buffer-values nil (#$ . 15666)) (byte-code "!#" [make-variable-buffer-local emerge-A-buffer-values put preserved t] 4) #@55 Remembers emerge-saved-variables for emerge-B-buffer. (defvar emerge-B-buffer-values nil (#$ . 15870)) (byte-code "!#" [make-variable-buffer-local emerge-B-buffer-values put preserved t] 4) #@1405 Vector of differences between the variants, and markers in the buffers to show where they are. Each difference is represented by a vector of seven elements. The first two are markers to the beginning and end of the difference section in the A buffer, the second two are markers for the B buffer, the third two are markers for the merge buffer, and the last element is the "state" of that difference in the merge buffer. A section of a buffer is described by two markers, one to the beginning of the first line of the section, and one to the beginning of the first line after the section. (If the section is empty, both markers point to the same point.) If the section is part of the selected difference, then the markers are moved into the flags, so the user can edit the section without disturbing the markers. The "states" are: A the merge buffer currently contains the A variant B the merge buffer currently contains the B variant default-A the merge buffer contains the A variant by default, but this difference hasn't been selected yet, so change-default commands can alter it default-B the merge buffer contains the B variant by default, but this difference hasn't been selected yet, so change-default commands can alter it prefer-A in a three-file merge, the A variant is the preferred choice prefer-B in a three-file merge, the B variant is the preferred choice (defvar emerge-difference-list nil (#$ . 16076)) (byte-code "!#" [make-variable-buffer-local emerge-difference-list put preserved t] 4) #@44 The difference that is currently selected. (defvar emerge-current-difference -1 (#$ . 17630)) (byte-code "!#" [make-variable-buffer-local emerge-current-difference put preserved t] 4) #@30 Number of differences found. (defvar emerge-number-of-differences nil (#$ . 17828)) (byte-code "!#" [make-variable-buffer-local emerge-number-of-differences put preserved t] 4) #@186 The local keymap for the merge buffer, with the emerge commands defined in it. Used to save the local keymap during fast mode, when the local keymap is replaced by emerge-fast-keymap. (defvar emerge-edit-keymap nil (#$ . 18020)) (byte-code "!#" [make-variable-buffer-local emerge-edit-keymap put preserved t] 4) #@49 The original local keymap for the merge buffer. (defvar emerge-old-keymap nil (#$ . 18347)) (byte-code "!#" [make-variable-buffer-local emerge-old-keymap put preserved t] 4) #@96 *If non-nil, emerge-select-A and emerge-select-B automatically advance to the next difference. (defvar emerge-auto-advance nil (#$ . -18535)) (byte-code "!#" [make-variable-buffer-local emerge-auto-advance put preserved t] 4) #@85 *If non-nil, differences for which there is a preference are automatically skipped. (defvar emerge-skip-prefers nil (#$ . -18775)) (byte-code "!#" [make-variable-buffer-local emerge-skip-prefers put preserved t] 4) #@228 Hooks to run in the merge buffer after the merge has been finished. `emerge-prefix-argument' will hold the prefix argument of the `emerge-quit' command. This is *not* a user option, since Emerge uses it for its own processing. (defvar emerge-quit-hook nil (#$ . 19005)) (byte-code "!#" [make-variable-buffer-local emerge-quit-hook put preserved t] 4) #@66 Describes output destination of emerge, for `emerge-file-names'. (defvar emerge-output-description nil (#$ . 19370)) (byte-code "!#" [make-variable-buffer-local emerge-output-description put preserved t] 4) (defalias 'emerge-files-internal #[(file-A file-B &optional startup-hooks quit-hooks output-file) " ! \"\f!\f\" !\f! ! \f!\n 5 !\fp Ύq~ !Z DEB] +p ֎q~\f!\fDEB + \f &*" [file-readable-p file-A error "File `%s' does not exist or is not readable" file-B find-file-noselect buffer-B buffer-A file-name-directory emerge-last-dir-A emerge-last-dir-B output-file emerge-last-dir-output StartBuffer ((set-buffer StartBuffer)) file-local-copy temp lambda nil delete-file startup-hooks emerge-verify-file-buffer ((set-buffer StartBuffer)) emerge-setup quit-hooks] 9]) (defalias 'emerge-setup #[(buffer-A file-A buffer-B file-B startup-hooks quit-hooks output-file) " !\n!  !\"pɎ\nq!*\fp͎\fq\n!!\n\f W P]\f!P! \n\"!G\"$%& *\n\f$p\fq\"Ӊ," [expand-file-name file-A file-B output-file emerge-unique-buffer-name "*merge" "*" merge-buffer-name StartBuffer ((set-buffer StartBuffer)) buffer-A get-buffer-create merge-buffer ((set-buffer StartBuffer)) emerge-copy-modes nil buffer-read-only auto-save-mode 1 t emerge-mode emerge-A-buffer buffer-B emerge-B-buffer emerge-ancestor-buffer emerge-merge-buffer "Output to file: " "Output to buffer: " buffer-name emerge-output-description insert-buffer emerge-set-keys emerge-make-diff-list emerge-difference-list emerge-number-of-differences -1 emerge-current-difference quit-hooks emerge-quit-hook emerge-remember-buffer-characteristics emerge-handle-local-variables emerge-setup-windows ((set-buffer StartBuffer)) run-hooks startup-hooks emerge-startup-hook] 6]) (defalias 'emerge-make-diff-list #[(file-A file-B) "!pĎ\nq  \n\f! !%\"*!\n!$" [get-buffer-create "*emerge-diff*" emerge-diff-buffer StartBuffer ((set-buffer StartBuffer)) erase-buffer shell-command format "%s %s %s %s" emerge-diff-program emerge-diff-options emerge-protect-metachars file-A file-B t emerge-prepare-error-list emerge-diff-ok-lines-regexp emerge-convert-diffs-to-markers emerge-A-buffer emerge-B-buffer emerge-merge-buffer emerge-extract-diffs] 8]) (defalias 'emerge-extract-diffs #[(diff-buffer) "pÎ\fqeb#ɔɕ{!\n˔˕\f 4 \f{!6\n*ϔϕ{єѕ{!Ӕӕ\f _ \f{!a*՘{T\nT\n֘TTTT\n% B-\f* )" [nil list StartBuffer ((set-buffer StartBuffer)) diff-buffer re-search-forward emerge-match-diff-line t string-to-int 1 a-begin 3 e b a-end 4 diff-type 5 b-begin 7 b-end "a" "d" vector default-A] 7]) (defalias 'emerge-prepare-error-list #[(ok-regexp) "!pĎ\nq ! !*" [get-buffer-create "*emerge-diff-errors*" emerge-diff-error-buffer StartBuffer ((set-buffer StartBuffer)) erase-buffer insert-buffer emerge-diff-buffer delete-matching-lines ok-regexp] 2]) (defalias 'emerge-files-with-ancestor-internal #[(file-A file-B file-ancestor &optional startup-hooks quit-hooks output-file) " ! \"\f!\f\" !! \" !\f! ! ! \f!\f ! J!pю q~ !o DEBr +pَq~\f!\fDEB +pڎq~ ! DEB + \f & +" [file-readable-p file-A error "File `%s' does not exist or is not readable" file-B file-ancestor find-file-noselect buffer-ancestor buffer-B buffer-A file-name-directory emerge-last-dir-A emerge-last-dir-B emerge-last-dir-ancestor output-file emerge-last-dir-output StartBuffer ((set-buffer StartBuffer)) file-local-copy temp lambda nil delete-file startup-hooks emerge-verify-file-buffer ((set-buffer StartBuffer)) ((set-buffer StartBuffer)) emerge-setup-with-ancestor quit-hooks] 11]) (defalias 'emerge-setup-with-ancestor #[(buffer-A file-A buffer-B file-B buffer-ancestor file-ancestor &optional startup-hooks quit-hooks output-file) " !\n! !\f\f!\"p ʎ q!* p Ύ q !!  \f\\\fPb !P! \n ##G$&'( *  $p  q\"ԉ," [expand-file-name file-A file-B file-ancestor output-file emerge-unique-buffer-name "*merge" "*" merge-buffer-name StartBuffer ((set-buffer StartBuffer)) buffer-A get-buffer-create merge-buffer ((set-buffer StartBuffer)) emerge-copy-modes nil buffer-read-only auto-save-mode 1 t emerge-mode emerge-A-buffer buffer-B emerge-B-buffer buffer-ancestor emerge-ancestor-buffer emerge-merge-buffer "Output to file: " "Output to buffer: " buffer-name emerge-output-description insert-buffer emerge-set-keys emerge-make-diff3-list emerge-difference-list emerge-number-of-differences -1 emerge-current-difference quit-hooks emerge-quit-hook emerge-remember-buffer-characteristics emerge-select-prefer-Bs emerge-handle-local-variables emerge-setup-windows ((set-buffer StartBuffer)) run-hooks startup-hooks emerge-startup-hook] 6]) (defalias 'emerge-make-diff3-list #[(file-A file-B file-ancestor) "!pĎ\nq  \n\f! !!&\"*!\n!$" [get-buffer-create "*emerge-diff*" emerge-diff-buffer StartBuffer ((set-buffer StartBuffer)) erase-buffer shell-command format "%s %s %s %s %s" emerge-diff3-program emerge-diff-options emerge-protect-metachars file-A file-ancestor file-B t emerge-prepare-error-list emerge-diff3-ok-lines-regexp emerge-convert-diffs-to-markers emerge-A-buffer emerge-B-buffer emerge-merge-buffer emerge-extract-diffs3] 9]) (defalias 'emerge-extract-diffs3 #[(diff-buffer) "pÎ\fq#jyȔȕ{ ʘf \f ` !  b!\f @ A@\f@\fA@ ϘU҂a И`ӂa%+ B) * )" [nil list StartBuffer ((set-buffer StartBuffer)) diff-buffer re-search-forward "^====\\(.?\\)$" t 1 agreement "2" pos group-3 group-1 emerge-get-diff3-group "1" "3" vector prefer-A prefer-B default-A] 8]) (defalias 'emerge-get-diff3-group #[(file) "\nQ!yŔŕ{Ƙ>ǔ-Ĕĕ{!ɔɕ{!TDHĔĕ{!\nT)DHĔĕ{!TD)" [re-search-forward "^" file ":\\([0-9]+\\)\\(,\\([0-9]+\\)\\)?\\([ac]\\)$" 1 4 "c" 2 string-to-int 3 x] 5]) #@26 Run Emerge on two files. (defalias 'emerge-files #[(arg file-A file-B file-out &optional startup-hooks quit-hooks) " \n \f\fDEB\f%" [emerge-files-internal file-A file-B startup-hooks file-out lambda nil emerge-files-exit quit-hooks] 8 (#$ . 25623) (byte-code "\n % %\n \n %F)" [nil f current-prefix-arg emerge-read-file-name "File A to merge" emerge-last-dir-A t "File B to merge" emerge-last-dir-B "Output file" emerge-last-dir-output] 9)]) #@63 Run Emerge on two files, giving another file as the ancestor. (defalias 'emerge-files-with-ancestor #[(arg file-A file-B file-ancestor file-out &optional startup-hooks quit-hooks) " \n \f  DE B &" [emerge-files-with-ancestor-internal file-A file-B file-ancestor startup-hooks file-out lambda nil emerge-files-exit quit-hooks] 9 (#$ . 26109) (byte-code "\n % %\n %\n(\f %)" [nil f current-prefix-arg emerge-read-file-name "File A to merge" emerge-last-dir-A t "File B to merge" emerge-last-dir-B "Ancestor file" emerge-last-dir-ancestor "Output file" emerge-last-dir-output] 10)]) (defalias 'emerge-files-exit #[(file-out) "?\n!" [emerge-prefix-argument emerge-write-and-delete file-out] 2]) #@28 Run Emerge on two buffers. (defalias 'emerge-buffers #[(buffer-A buffer-B &optional startup-hooks quit-hooks) "!!pƎqed\f%*pˎ\fqed %*!\f\f! \fD DFB&*" [emerge-make-temp-file "A" "B" emerge-file-B emerge-file-A StartBuffer ((set-buffer StartBuffer)) buffer-A write-region nil no-message ((set-buffer StartBuffer)) buffer-B emerge-setup get-buffer lambda delete-file startup-hooks quit-hooks] 10 (#$ . 26857) "bBuffer A to merge: \nbBuffer B to merge: "]) #@67 Run Emerge on two buffers, giving another buffer as the ancestor. (defalias 'emerge-buffers-with-ancestor #[(buffer-A buffer-B buffer-ancestor &optional startup-hooks quit-hooks) "!!!pȎ qed%*p͎qed %*pώqed\f%* !! !\fD D\fDB& +" [emerge-make-temp-file "A" "B" "anc" emerge-file-ancestor emerge-file-B emerge-file-A StartBuffer ((set-buffer StartBuffer)) buffer-A write-region nil no-message ((set-buffer StartBuffer)) buffer-B ((set-buffer StartBuffer)) buffer-ancestor emerge-setup-with-ancestor get-buffer lambda delete-file startup-hooks quit-hooks] 13 (#$ . 27356) "bBuffer A to merge: \nbBuffer B to merge: \nbAncestor buffer: "]) (defalias 'emerge-files-command #[nil "@A@8\f \nDEC$+" [command-line-args-left 2 file-out file-b file-a 3 emerge-files-internal nil lambda emerge-command-exit] 8]) (defalias 'emerge-files-with-ancestor-command #[nil " @Ƙ& 8 8 A@ 8 9 @ A@ 8 8 \f \n DEC%," [nil file-out file-anc file-b file-a command-line-args-left "-a" 2 3 4 5 emerge-files-with-ancestor-internal lambda emerge-command-exit] 9]) (defalias 'emerge-command-exit #[(file-out) " ! Ă!" [emerge-write-and-delete file-out kill-emacs emerge-prefix-argument 1 0] 2]) (defalias 'emerge-files-remote #[(file-a file-b file-out) " \f DEEC%\"" [file-out emerge-file-out emerge-files-internal file-a file-b nil lambda emerge-remote-exit quote emerge-exit-func throw client-wait] 10]) (defalias 'emerge-files-with-ancestor-remote #[(file-a file-b file-anc file-out) " \f \nDEEC&\"" [file-out emerge-file-out emerge-files-with-ancestor-internal file-a file-b file-anc nil lambda emerge-remote-exit quote emerge-exit-func throw client-wait] 11]) (defalias 'emerge-remote-exit #[(file-out emerge-exit-func) " ! !\f Ƃ!" [emerge-write-and-delete file-out kill-buffer emerge-merge-buffer emerge-exit-func emerge-prefix-argument 1 0] 2]) #@37 Emerge two RCS revisions of a file. (defalias 'emerge-revisions #[(arg file revision-A revision-B &optional startup-hooks quit-hooks) "\n \n  #DEB\"%" [revision-A emerge-last-revision-A revision-B emerge-last-revision-B emerge-revisions-internal file startup-hooks arg lambda nil shell-command format "%s %s" emerge-rcs-ci-program quit-hooks] 12 (#$ . 29356) (list current-prefix-arg (read-file-name "File to merge: " nil nil (quote confirm)) (read-string "Revision A to merge: " emerge-last-revision-A) (read-string "Revision B to merge: " emerge-last-revision-B))]) #@72 Emerge two RCS revisions of a file, with another revision as ancestor. (defalias 'emerge-revisions-with-ancestor #[(arg file revision-A revision-B ancestor &optional startup-hooks quit-hooks) "\n\f\n\f ) #DE)B+&" [revision-A emerge-last-revision-A revision-B emerge-last-revision-B ancestor emerge-last-revision-ancestor emerge-revision-with-ancestor-internal file startup-hooks arg nil cmd lambda shell-command format "%s %s" emerge-rcs-ci-program quit-hooks] 13 (#$ . 29955) (list current-prefix-arg (read-file-name "File to merge: " nil nil (quote confirm)) (read-string "Revision A to merge: " emerge-last-revision-A) (read-string "Revision B to merge: " emerge-last-revision-B) (read-string "Ancestor: " emerge-last-revision-ancestor))]) (defalias 'emerge-revisions-internal #[(file revision-A revision-B &optional startup-hooks quit-hooks output-file) " \f#! #!!! \n \fp Ύ\fq \f $\"ed\n%!*p ؎ q  $\"ed %!*\f\n  \nD DFB DEB&," [get-buffer-create format "%s,%s" file revision-A revision-B emerge-make-temp-file "A" "B" emerge-file-B emerge-file-A buffer-B buffer-A StartBuffer ((set-buffer StartBuffer)) erase-buffer shell-command "%s -q -p%s %s" emerge-rcs-co-program t write-region nil no-message set-buffer-modified-p ((set-buffer StartBuffer)) emerge-setup lambda delete-file startup-hooks emerge-files-exit quit-hooks] 10]) (defalias 'emerge-revision-with-ancestor-internal #[(file revision-A revision-B ancestor &optional startup-hooks quit-hooks output-file) " \f#! #! #!!!! \f pҎq \f $\"ed %!*p܎q  $\"ed\f%!*pݎq  $\"ed %!* \f  D\fD D!B DE#B$& ." [get-buffer-create format "%s,%s" file revision-A revision-B ancestor emerge-make-temp-file "A" "B" "ancestor" emerge-ancestor emerge-file-B emerge-file-A buffer-ancestor buffer-B buffer-A StartBuffer ((set-buffer StartBuffer)) erase-buffer shell-command "%s -q -p%s %s" emerge-rcs-co-program t write-region nil no-message set-buffer-modified-p ((set-buffer StartBuffer)) ((set-buffer StartBuffer)) emerge-setup-with-ancestor lambda delete-file startup-hooks emerge-files-exit quit-hooks output-file] 13]) #@541 Run Emerge using files named in current text line. Looks in that line for whitespace-separated entries of these forms: a=file1 b=file2 ancestor=file3 output=file4 to specify the files to use in Emerge. In addition, if only one of `a=file' or `b=file' is present, and `output=file' is present: If `emerge-execute-line-deletions' is non-nil and `ancestor=file' is present, it is assumed that the file in question has been deleted, and it is not copied to the output file. Otherwise, the A or B file present is copied to the output file. (defalias 'emerge-execute-line #[nil "m!y! ɕbl!͔͕{ΔΕ{ɕbјTM!Әi c!՘w֘\f!ؘ٘ !!* !  ! !y \f # ?? \f pDBBBC&N& & # ?? pDBBBC&N\f5'5!N; )!) \") #)-" [nil t case-fold-search file-out file-ancestor file-B file-A error "At end of buffer" 0 looking-at "[ ]*" "\\([a-z]+\\)=\\([^ \n]+\\)[ ]*" 1 2 file tag "a" "This line has two `A' entries" "b" "This line has two `B' entries" "anc" "ancestor" "This line has two `ancestor' entries" "out" "output" "This line has two `output' entries" "Unrecognized entry" "Unparsable entry" "Must have both `A' and `B' entries" "Must have `A' or `B' entry" message "Merging %s and %s..." emerge-files-with-ancestor lambda switch-to-buffer ((message "Merge done.")) emerge-files ((message "Merge done.")) emerge-execute-line-deletions "No action." input-file "Copying..." copy-file "%s copied to %s."] 11 (#$ . 32264) nil]) #@72 Regexp describing files to be processed by `emerge-merge-directories'. (defvar emerge-merge-directories-filename-regexp "[^.]" (#$ . 33898)) (defalias 'emerge-merge-directories #[(a-dir b-dir ancestor-dir output-dir) "nl\f!\n\nØ $ Ø$!Oɘ9P\n!\nOɘN\nP\n\nc\n!Oɘc\nP x !Oɘx P  #\n #\n\n #!!!\"A@A@AAA)R@A@رA @ \nرA;@;\nرA G ر!c)," [error "There is text on this line" ancestor-dir "" nil output-dir expand-file-name a-dir -1 "/" b-dir push-mark directory-files emerge-merge-directories-filename-regexp a-dir-files b-dir-files ancestor-dir-files sort copy-sequence string-lessp all-files p f "A=" " " "B=" "ancestor=" "output=" backward-delete-char 1 "\n"] 5 nil (list (read-file-name "A directory: " nil nil (quote confirm)) (read-file-name "B directory: " nil nil (quote confirm)) (read-file-name "Ancestor directory (null for none): " nil nil (quote confirm)) (read-file-name "Output directory (null for none): " nil nil (quote confirm)))]) (defalias 'emerge-setup-windows #[(buffer-A buffer-B merge-buffer &optional pos) " =\f! ! \n! *eb!\f! ;eb! Gebp Ύq *U?h !\"!" [selected-window minibuffer-window other-window 1 delete-other-windows switch-to-buffer merge-buffer emerge-refresh-mode-line split-window-vertically split-window-horizontally buffer-A pos buffer-B StartBuffer ((set-buffer StartBuffer)) emerge-diff-error-buffer buffer-size 0 ding message "Errors found in diff/diff3 output. Merge buffer is %s." buffer-name emerge-merge-buffer] 4]) (defalias 'emerge-set-keys #[nil "  ! # # B#B#B### $ $!މ" [emerge-basic-keymap emerge-setup-fixed-keymaps current-local-map emerge-old-keymap copy-keymap make-sparse-keymap emerge-edit-keymap emerge-force-define-key emerge-command-prefix define-key [menu-bar] [menu-bar options] "Options" emerge-options-menu [menu-bar merge] "Merge" emerge-merge-menu [menu-bar move] "Move" emerge-move-menu substitute-key-definition write-file emerge-query-write-file save-buffer emerge-query-save-buffer current-global-map use-local-map emerge-fast-keymap nil emerge-edit-mode t emerge-fast-mode] 6]) #@316 Record certain properties of the buffers being merged. Must be called in the merge buffer. Remembers read-only, modified, auto-save, and saves them in buffer local variables. Sets the buffers read-only and turns off `auto-save-mode'. These characteristics are restored by `emerge-restore-buffer-characteristics'. (defalias 'emerge-remember-buffer-characteristics #[nil " pŽ q ! \"*pɎ\nq ! \"* " [do-auto-save StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer emerge-save-variables emerge-saved-variables emerge-restore-variables emerge-merging-values emerge-A-buffer-values ((set-buffer StartBuffer)) emerge-B-buffer emerge-B-buffer-values] 4 (#$ . 36349)]) #@77 Restores characteristics saved by `emerge-remember-buffer-characteristics'. (defalias 'emerge-restore-buffer-characteristics #[nil " pŎq \"*pɎ\nq\n\"," [emerge-A-buffer-values emerge-B-buffer-values B-values A-values StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer emerge-restore-variables emerge-saved-variables ((set-buffer StartBuffer)) emerge-B-buffer] 3 (#$ . 37044)]) (defalias 'emerge-goto-line #[(desired-line current-line) " Zy" [desired-line current-line] 2]) (defalias 'emerge-convert-diffs-to-markers #[(A-buffer B-buffer merge-buffer lineno-list) "pÎ\fqe*Spǎqe*  \fp͎\fqeb*pΎqeb*@HHHHHp\fq \"  \" *pq\f\"\f \f\"\f * !Z& !Z&& B.\fA> \")." [nil marker-list StartBuffer ((set-buffer StartBuffer)) A-buffer A-point-min offset ((set-buffer StartBuffer)) B-buffer B-point-min 1 a-line b-line ((set-buffer StartBuffer)) ((set-buffer StartBuffer)) lineno-list list-element a-begin-marker a-end-marker b-begin-marker b-end-marker merge-begin-marker merge-end-marker 0 a-begin a-end 2 b-begin 3 b-end 4 state ((set-buffer StartBuffer)) emerge-goto-line point-marker ((set-buffer StartBuffer)) make-marker marker-position merge-buffer vector apply emerge-difference-list] 9]) (defalias 'emerge-select-prefer-Bs #[nil "\nW( HH=! \" HI T)!" [0 n emerge-number-of-differences emerge-difference-list 6 prefer-B emerge-unselect-and-select-difference t emerge-select-B -1] 4]) (defalias 'emerge-handle-local-variables #[nil "Ï" [emerge-process-local-variables err (hack-local-variables) ((error (byte-code " !\"" [message "Local-variables error in merge buffer: %s" prin1-to-string err] 4)))] 3]) (defalias 'emerge-write-and-delete #[(file-out) " \n! \n!\f!\f! % !% !.!" [delete-other-windows buffer-modified-p emerge-A-buffer kill-buffer emerge-B-buffer emerge-ancestor-buffer file-out write-file] 2]) #@190 Bring the highlighted region of all three merge buffers into view. This brings the buffers into view if they are in windows. With an argument, reestablish the default three-window display. (defalias 'emerge-recenter #[(&optional arg) "\n\n \f# Y W\f\n \n \" \n\"! H \\ !HSZHS\\HT#~!HSZHS\\HT#!HSZHS\\HT#." [arg emerge-setup-windows emerge-A-buffer emerge-B-buffer emerge-merge-buffer emerge-current-difference 0 emerge-number-of-differences merge-buffer buffer-A buffer-B get-buffer-window visible window-A window-B merge-window emerge-difference-list diff-vector select-window emerge-position-region emerge-before-flag-length 1 emerge-after-flag-length 2 3 4 5] 5 (#$ . 39125) "P"]) (defalias 'emerge-operate-on-windows #[(operation arg) "\n\f \" \" !\n&!Ώ 5 !Џ\nD\n!!." [emerge-merge-buffer merge-buffer emerge-A-buffer buffer-A emerge-B-buffer buffer-B get-buffer-window visible window-A window-B merge-window select-window nil (funcall operation arg) ((error)) (funcall operation arg) ((error)) operation arg] 3]) #@223 Scroll up all three merge buffers, if they are in windows. With argument N, scroll N lines; otherwise scroll by nearly the height of the merge window. `C-u -' alone as argument scrolls half the height of the merge window. (defalias 'emerge-scroll-up #[(&optional arg) "\n\nÚ\n!8!??7! ZZ \n4 ̥6 ))\"" [emerge-operate-on-windows scroll-up arg - prefix-numeric-value get-buffer-window emerge-merge-buffer merge-window window-height next-screen-context-lines 1 default-amount 2] 5 (#$ . 40304) "P"]) #@225 Scroll down all three merge buffers, if they are in windows. With argument N, scroll N lines; otherwise scroll by nearly the height of the merge window. `C-u -' alone as argument scrolls half the height of the merge window. (defalias 'emerge-scroll-down #[(&optional arg) "\n\nÚ\n!8!??7! ZZ \n4 ̥6 ))\"" [emerge-operate-on-windows scroll-down arg - prefix-numeric-value get-buffer-window emerge-merge-buffer merge-window window-height next-screen-context-lines 1 default-amount 2] 5 (#$ . 40841) "P"]) #@246 Scroll left all three merge buffers, if they are in windows. If an argument is given, that is how many columns are scrolled, else nearly the width of the A and B windows. `C-u -' alone as argument scrolls half the width of the A and B windows. (defalias 'emerge-scroll-left #[(&optional arg) "\n\nÚ\n!7!??6!ɥZ \n3 ɥ5 ))\"" [emerge-operate-on-windows scroll-left arg - prefix-numeric-value get-buffer-window emerge-merge-buffer merge-window window-width 2 3 default-amount] 5 (#$ . 41384) "P"]) #@247 Scroll right all three merge buffers, if they are in windows. If an argument is given, that is how many columns are scrolled, else nearly the width of the A and B windows. `C-u -' alone as argument scrolls half the width of the A and B windows. (defalias 'emerge-scroll-right #[(&optional arg) "\n\nÚ\n!7!??6!ɥZ \n3 ɥ5 ))\"" [emerge-operate-on-windows scroll-right arg - prefix-numeric-value get-buffer-window emerge-merge-buffer merge-window window-width 2 3 default-amount] 5 (#$ . 41920) "P"]) #@147 Reset horizontal scrolling in Emerge. This resets the horizontal scrolling of all three merge buffers to the left margin, if they are in windows. (defalias 'emerge-scroll-reset #[nil "\"" [emerge-operate-on-windows #[(x) " \"" [set-window-hscroll selected-window 0] 3] nil] 3 (#$ . 42459) nil]) (defalias 'emerge-position-region #[(beg end pos) " !`\nX T[!`XJ \n\" !J !`V8T%\nb !SZT˥!)\fb" [move-to-window-line emerge-min-visible-lines beg end set-window-start selected-window pos-visible-in-window-p 0 lines recenter window-height 2 pos] 3]) #@33 Advance to the next difference. (defalias 'emerge-next-difference #[nil " W+T #\n W#\f\nHH>#\nT \n!*!" [emerge-current-difference emerge-number-of-differences n emerge-skip-prefers emerge-difference-list 6 (prefer-A prefer-B) nil buffer-read-only emerge-unselect-and-select-difference error "At end"] 2 (#$ . 43057) nil]) #@32 Go to the previous difference. (defalias 'emerge-previous-difference #[nil "V+S #\nV#\f\nHH>#\nS \n!*!" [emerge-current-difference -1 n emerge-skip-prefers emerge-difference-list 6 (prefer-A prefer-B) nil buffer-read-only emerge-unselect-and-select-difference error "At beginning"] 2 (#$ . 43409) nil]) #@28 Go to the N-th difference. (defalias 'emerge-jump-to-difference #[(difference-number) "\nSY\n\fTW\n!!)" [nil buffer-read-only difference-number -1 emerge-number-of-differences emerge-unselect-and-select-difference error "Bad difference number"] 3 (#$ . 43744) "p"]) #@27 Abort the Emerge session. (defalias 'emerge-abort #[nil "!" [emerge-quit t] 2 (#$ . 44034) nil]) #@564 Finish the Emerge session and exit Emerge. Prefix argument means to abort rather than successfully finish. The difference depends on how the merge was started, but usually means to not write over one of the original files, or to signal to some process which invoked Emerge a failure code. Unselects the selected difference, if any, restores the read-only and modified flags of the merged file buffers, restores the local keymap of the merge buffer, and sets off various emerge flags. Using Emerge commands in this buffer after this will cause serious problems. (defalias 'emerge-quit #[(arg) " ‚\n!! !" [y-or-n-p arg "Do you really want to successfully finish this merge? " "Do you really want to abort this merge? " message "" emerge-really-quit] 3 (#$ . 44141) "P"]) (defalias 'emerge-really-quit #[(arg) "! \" !\n \f !!)" [nil buffer-read-only emerge-unselect-and-select-difference -1 emerge-restore-buffer-characteristics mapcar #[(d) "H‰H‰H‰H‰H‰H‰" [d 0 nil 1 2 3 4 5] 3] emerge-difference-list use-local-map emerge-old-keymap emerge-mode emerge-fast-mode emerge-edit-mode emerge-auto-advance emerge-skip-prefers kill-local-variable mode-line-buffer-identification arg emerge-prefix-argument run-hooks emerge-quit-hook] 3]) #@240 Select the A variant of this difference. Refuses to function if this difference has been edited, i.e., if it is neither the A nor the B variant. A prefix argument forces the variant to be selected even if the difference has been edited. (defalias 'emerge-select-A #[(&optional force) " \n $*" [#[nil " \n \f$ " [emerge-select-A-edit merge-begin merge-end A-begin A-end emerge-auto-advance emerge-next-difference] 5] #[nil " " [emerge-auto-advance emerge-next-difference] 1] operate-no-change operate emerge-select-version force] 5 (#$ . 45463) "P"]) (defalias 'emerge-select-A-edit #[(merge-begin merge-end A-begin A-end) "p\nq \f| b# b I *" [StartBuffer ((set-buffer StartBuffer)) emerge-merge-buffer merge-begin merge-end insert-buffer-substring emerge-A-buffer A-begin A-end diff-vector 6 A emerge-refresh-mode-line] 4]) #@238 Select the B variant of this difference. Refuses to function if this difference has been edited, i.e., if it is neither the A nor the B variant. A prefix argument forces the variant to be selected even if the difference has been edited. (defalias 'emerge-select-B #[(&optional force) " \n $*" [#[nil " \n \f$ " [emerge-select-B-edit merge-begin merge-end B-begin B-end emerge-auto-advance emerge-next-difference] 5] #[nil " " [emerge-auto-advance emerge-next-difference] 1] operate-no-change operate emerge-select-version force] 5 (#$ . 46338) "P"]) (defalias 'emerge-select-B-edit #[(merge-begin merge-end B-begin B-end) "p\nq \f| b# b I *" [StartBuffer ((set-buffer StartBuffer)) emerge-merge-buffer merge-begin merge-end insert-buffer-substring emerge-B-buffer B-begin B-end diff-vector 6 B emerge-refresh-mode-line] 4]) #@227 Make the A variant the default from here down. This selects the A variant for all differences from here down in the buffer which are still defaulted, i.e., which the user has not selected and for which there is no preference. (defalias 'emerge-default-A #[nil "\n]\fW?\fHH=+\f\" I)\fTϦU\f\" !+!" [nil buffer-read-only emerge-current-difference 0 n selected-difference emerge-number-of-differences emerge-difference-list diff-vector 6 default-B emerge-unselect-and-select-difference t emerge-select-A default-A 10 message "Setting default to A...%d" "Default choice is now A"] 4 (#$ . 47211) nil]) #@227 Make the B variant the default from here down. This selects the B variant for all differences from here down in the buffer which are still defaulted, i.e., which the user has not selected and for which there is no preference. (defalias 'emerge-default-B #[nil "\n]\fW?\fHH=+\f\" I)\fTϦU\f\" !+!" [nil buffer-read-only emerge-current-difference 0 n selected-difference emerge-number-of-differences emerge-difference-list diff-vector 6 default-A emerge-unselect-and-select-difference t emerge-select-B default-B 10 message "Setting default to B...%d" "Default choice is now B"] 4 (#$ . 47862) nil]) #@170 Set fast mode, for Emerge. In this mode ordinary Emacs commands are disabled, and Emerge commands need not be prefixed with \\[emerge-basic-keymap]. (defalias 'emerge-fast-mode #[nil " !! " [t buffer-read-only use-local-map emerge-fast-keymap emerge-mode emerge-fast-mode nil emerge-edit-mode message "Fast mode set" force-mode-line-update] 2 (#$ . 48513) nil]) #@167 Set edit mode, for Emerge. In this mode ordinary Emacs commands are available, and Emerge commands must be prefixed with \\[emerge-basic-keymap]. (defalias 'emerge-edit-mode #[nil " !! " [nil buffer-read-only use-local-map emerge-edit-keymap t emerge-mode emerge-fast-mode emerge-edit-mode message "Edit mode set" force-mode-line-update] 2 (#$ . 48918) nil]) #@252 Toggle Auto-Advance mode, for Emerge. This mode causes `emerge-select-A' and `emerge-select-B' to automatically advance to the next difference. With a positive argument, turn on Auto-Advance mode. With a negative argument, turn off Auto-Advance mode. (defalias 'emerge-auto-advance #[(arg) " ?!V ł! " [arg emerge-auto-advance prefix-numeric-value 0 message "Auto-advance set" "Auto-advance cleared" force-mode-line-update] 2 (#$ . 49321) "P"]) #@293 Toggle Skip-Prefers mode, for Emerge. This mode causes `emerge-next-difference' and `emerge-previous-difference' to automatically skip over differences for which there is a preference. With a positive argument, turn on Skip-Prefers mode. With a negative argument, turn off Skip-Prefers mode. (defalias 'emerge-skip-prefers #[(arg) " ?!V ł! " [arg emerge-skip-prefers prefix-numeric-value 0 message "Skip-prefers set" "Skip-prefers cleared" force-mode-line-update] 2 (#$ . 49794) "P"]) #@56 Put the A variant of this difference in the kill ring. (defalias 'emerge-copy-as-kill-A #[nil " \nHHT HS \nq \"-" [emerge-validate-difference emerge-difference-list emerge-current-difference diff-vector 0 A-begin 1 A-end nil this-command emerge-A-buffer copy-region-as-kill] 4 (#$ . 50307) nil]) #@56 Put the B variant of this difference in the kill ring. (defalias 'emerge-copy-as-kill-B #[nil " \nHHT HS \nq \"-" [emerge-validate-difference emerge-difference-list emerge-current-difference diff-vector 2 B-begin 3 B-end nil this-command emerge-B-buffer copy-region-as-kill] 4 (#$ . 50628) nil]) #@146 Insert the A variant of this difference at the point. Leaves point after text, mark before. With prefix argument, puts point before, mark after. (defalias 'emerge-insert-A #[(arg) " \nHHT HS`\n\f # ,!3`!b-" [emerge-validate-difference emerge-difference-list emerge-current-difference diff-vector 0 A-begin 1 A-end opoint nil buffer-read-only insert-buffer-substring emerge-A-buffer arg set-mark] 5 (#$ . 50950) "P"]) #@146 Insert the B variant of this difference at the point. Leaves point after text, mark before. With prefix argument, puts point before, mark after. (defalias 'emerge-insert-B #[(arg) " \nHHT HS`\n\f # ,!3`!b-" [emerge-validate-difference emerge-difference-list emerge-current-difference diff-vector 2 B-begin 3 B-end opoint nil buffer-read-only insert-buffer-substring emerge-B-buffer arg set-mark] 5 (#$ . 51406) "P"]) #@117 Leaves the point before this difference and the mark after it. With prefix argument, puts mark before, point after. (defalias 'emerge-mark-difference #[(arg) " \nHHT HS! b!(b !+" [emerge-validate-difference emerge-difference-list emerge-current-difference diff-vector 4 merge-begin 5 merge-end arg set-mark] 3 (#$ . 51862) "P"]) #@111 Show the names of the buffers or files being operated on by Emerge. Use C-u l to reset the windows afterward. (defalias 'emerge-file-names #[nil " ÐpŎq !!)! !!*p͎qG!!P! !!*pҎqs!!|! !!*!q ))" [delete-other-windows #[(buf) " \n!!" [split-window-vertically switch-to-buffer buf other-window 1] 2] temp-buffer-show-function "*Help*" StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer buffer-file-name princ "File A is: " "Buffer A is: " buffer-name "\n" ((set-buffer StartBuffer)) emerge-B-buffer "File B is: " "Buffer B is: " emerge-ancestor-buffer ((set-buffer StartBuffer)) "Ancestor file is: " "Ancestor buffer is: " emerge-output-description standard-output help-mode] 3 (#$ . 52223) nil]) #@107 Join the selected difference with the following one. With a prefix argument, join with the preceding one. (defalias 'emerge-join-differences #[(arg) "\n S W \fSY!!\fS\f\"\n \fW\n WB\f H VR\f TH\f H\f TH H HH HH HH H=====؂*&*I T +\n\f*  ! )" [emerge-current-difference n arg 0 emerge-number-of-differences error "Incorrect differences to join" emerge-unselect-difference make-vector nil new-differences i emerge-difference-list next prev vector 1 2 3 4 5 6 ns ps B prefer-B A emerge-refresh-mode-line emerge-select-difference emerge-recenter] 13 (#$ . 53034) "P"]) #@73 Split the current difference where the points are in the three windows. (defalias 'emerge-split-difference #[nil " pĎ q *pǎq *  H\n \f \nHW; \nHV?!\f\nHWS\f\nHVW! \nHWk \nHVo!!T\"W W H TV SH U\nH \nH\f\nH \nH& !\nH\f!\nH !\nH\nH&IT *  ! -" [emerge-current-difference n emerge-validate-difference StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer point-marker ((set-buffer StartBuffer)) emerge-B-buffer emerge-difference-list old-diff merge-point B-point A-point 0 1 error "Point outside of difference in A buffer" 2 3 "Point outside of difference in B buffer" 4 5 "Point outside of difference in merge buffer" emerge-unselect-difference emerge-number-of-differences make-vector nil new-differences i vector 6 copy-marker emerge-refresh-mode-line emerge-select-difference emerge-recenter] 12 (#$ . 53741) nil]) #@240 Trim lines off top and bottom of difference that are the same. If lines are the same in both the A and the B versions, strip them off. (This can happen when the A and B versions have common lines that the ancestor version does not share.) (defalias 'emerge-trim-difference #[nil " \n! \nH\fH!\fH! \fH! \fH! \fH!\fH!V Z  ZZ^^^pێq\\{*pݎq  \\{*\\{VP\\ \\ \\PʥHVnd Z  ZZ^^^pߎq Z {*pq Z {*Z{VFF Z  Z Zʥpqby\f I by\f I*pq by\f I by\f I*by\f Iby\f I\n! .\f" [emerge-validate-difference emerge-unselect-difference emerge-current-difference emerge-difference-list diff marker-position 0 top-a 1 bottom-a 2 top-b 3 bottom-b 4 top-m 5 bottom-m nil size success sa sb sm 1000 t StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer ((set-buffer StartBuffer)) emerge-B-buffer ((set-buffer StartBuffer)) ((set-buffer StartBuffer)) ((set-buffer StartBuffer)) point-marker ((set-buffer StartBuffer)) emerge-select-difference emerge-recenter] 6 (#$ . 54727) nil]) #@251 Find the difference containing the current position of the point. If there is no containing difference and the prefix argument is positive, it finds the nearest following difference. A negative prefix argument finds the nearest previous difference. (defalias 'emerge-find-difference #[(arg) "p=\n\n!p =\n!\n!" [emerge-A-buffer emerge-find-difference-A arg emerge-B-buffer emerge-find-difference-B emerge-find-difference-merge] 2 (#$ . 56008) "P"]) #@244 Find the difference containing point, in the merge buffer. If there is no containing difference and the prefix argument is positive, it finds the nearest following difference. A negative prefix argument finds the nearest previous difference. (defalias 'emerge-find-difference-merge #[(arg) " `$" [emerge-find-difference1 arg 4 5] 5 (#$ . 56476) "P"]) #@291 Find the difference containing point, in the A buffer. This command must be executed in the merge buffer. If there is no containing difference and the prefix argument is positive, it finds the nearest following difference. A negative prefix argument finds the nearest previous difference. (defalias 'emerge-find-difference-A #[(arg) " pÎ\fq`*$" [emerge-find-difference1 arg StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer 0 1] 5 (#$ . 56839) "P"]) #@291 Find the difference containing point, in the B buffer. This command must be executed in the merge buffer. If there is no containing difference and the prefix argument is positive, it finds the nearest following difference. A negative prefix argument finds the nearest previous difference. (defalias 'emerge-find-difference-B #[(arg) " pÎ\fq`*$" [emerge-find-difference1 arg StartBuffer ((set-buffer StartBuffer)) emerge-B-buffer 2 3] 5 (#$ . 57309) "P"]) (defalias 'emerge-find-difference1 #[(arg location begin end) " W \nHH!X\n! '\nW\n2!W VI\n WC\nW!W\nVT\nSW!!+" [search (byte-code "\nW$ H \fH!X \") T)\n" [0 n emerge-number-of-differences emerge-difference-list diff-vector location marker-position end throw search] 5) index emerge-number-of-differences marker-position emerge-difference-list begin location contains prefix-numeric-value arg arg-value emerge-unselect-and-select-difference error "No difference contains point" 0 "No difference contains or follows point" "No difference contains or precedes point"] 4]) #@121 Display the current line numbers. This function displays the line numbers of the points in the A, B, and merge buffers. (defalias 'emerge-line-numbers #[nil "Y \nW\fH\" p\nˎ\fq\"*p\nώq\"* $-" [emerge-current-difference 0 emerge-number-of-differences valid-diff emerge-difference-list diff emerge-line-number-in-buf 4 5 merge-line StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer 1 A-line ((set-buffer StartBuffer)) emerge-B-buffer 2 3 B-line message "At lines: merge = %d, A = %d, B = %d"] 6 (#$ . 58422) nil]) (defalias 'emerge-line-number-in-buf #[(begin-marker end-marker) "y`\"T) /`HV Z` HV/ \nZ )" [nil temp 0 count-lines 1 valid-diff diff begin-marker emerge-before-flag-lines end-marker emerge-after-flag-lines] 3]) #@281 Set `emerge-combine-versions-template' to STRING. This value controls how `emerge-combine-versions' combines the two versions. With prefix argument, `emerge-combine-versions-template' is made local to this merge buffer. Localization is permanent for any particular merge buffer. (defalias 'emerge-set-combine-template #[(string &optional localize) "!  Ƃ!" [localize make-local-variable emerge-combine-versions-template string message buffer-local-variables "emerge-set-combine-versions-template set locally" "emerge-set-combine-versions-template set"] 3 (#$ . 59229) "s\nP"]) #@282 Copy region into `emerge-combine-versions-template'. This controls how `emerge-combine-versions' will combine the two versions. With prefix argument, `emerge-combine-versions-template' is made local to this merge buffer. Localization is permanent for any particular merge buffer. (defalias 'emerge-set-combine-versions-template #[(start end &optional localize) "! \f{ ǂ!" [localize make-local-variable emerge-combine-versions-template start end message buffer-local-variables "emerge-set-combine-versions-template set locally." "emerge-set-combine-versions-template set."] 3 (#$ . 59833) "r\nP"]) #@266 Combine versions using the template in `emerge-combine-versions-template'. Refuses to function if this difference has been edited, i.e., if it is neither the A nor the B variant. An argument forces the variant to be selected even if the difference has been edited. (defalias 'emerge-combine-versions #[(&optional force) " \n\"" [emerge-combine-versions-internal emerge-combine-versions-template force] 3 (#$ . 60458) "P"]) #@358 Combine the two versions using the template in register REG. See documentation of the variable `emerge-combine-versions-template' for how the template is interpreted. Refuses to function if this difference has been edited, i.e., if it is neither the A nor the B variant. An argument forces the variant to be selected even if the difference has been edited. (defalias 'emerge-combine-versions-register #[(char &optional force) " !; !\n\")" [get-register char template error "Register does not contain text" emerge-combine-versions-internal force] 4 (#$ . 60890) "cRegister containing template: \nP"]) (defalias 'emerge-combine-versions-internal #[(template force) " $)" [#[nil " \n \f & " [emerge-combine-versions-edit merge-begin merge-end A-begin A-end B-begin B-end emerge-auto-advance emerge-next-difference] 7] operate emerge-select-version force] 5]) (defalias 'emerge-combine-versions-edit #[(merge-begin merge-end A-begin A-end B-begin B-end) "p\nq \f| bGWxHUjT̏UC#nUV#nUccncnc)T) bI *" [StartBuffer ((set-buffer StartBuffer)) emerge-merge-buffer merge-begin merge-end 0 i template c 37 nil (aref template i) ((error 37)) 97 insert-buffer-substring emerge-A-buffer A-begin A-end 98 emerge-B-buffer B-begin B-end diff-vector 6 combined emerge-refresh-mode-line] 5]) #@147 Set the major mode in a merge buffer. Overrides any change that the mode might make to the mode line or local keymap. Leaves merge in fast mode. (defalias 'emerge-set-merge-mode #[(mode) " \n " [mode emerge-refresh-mode-line emerge-fast-mode emerge-edit-mode] 1 (#$ . 62295) (list (intern (completing-read "New major mode for merge buffer: " obarray (quote commandp) t nil)))]) (defalias 'emerge-one-line-window #[nil " Z!)" [1 window-min-height shrink-window window-height 2] 3 nil nil]) (defalias 'emerge-select-difference #[(n) "  $ $$*!" [emerge-difference-list emerge-number-of-differences emerge-globalized-number-of-differences emerge-globalized-difference-list emerge-place-flags-in-buffer emerge-A-buffer n 0 1 emerge-B-buffer 2 3 nil 4 5 run-hooks emerge-select-hook] 5]) (defalias 'emerge-place-flags-in-buffer #[(buffer difference before-index after-index) "pŽq\f #*\f #" [buffer StartBuffer ((set-buffer StartBuffer)) emerge-place-flags-in-buffer1 difference before-index after-index] 4]) (defalias 'emerge-place-flags-in-buffer1 #[(difference before-index after-index) "\n H\fHb!`S S \n \fYb\n\fH H Ub S \fH\n UY\nS\n\fS\f*.\n HH!bcT T  \n\fW\n\fH \fH\n U\nT H U T \fT\f." [nil buffer-read-only emerge-globalized-difference-list difference before-index here before insert-before-markers emerge-before-flag diff-list before-marker after-marker n 0 after-index after marker-position emerge-after-flag emerge-globalized-number-of-differences] 5]) (defalias 'emerge-unselect-difference #[(n) " H\f\nH\nH#\nH\nH#\n\nH\nH#)!" [emerge-difference-list n diff-vector emerge-remove-flags-in-buffer emerge-A-buffer 0 1 emerge-B-buffer 2 3 emerge-merge-buffer 4 5 run-hooks emerge-unselect-hook] 5]) (defalias 'emerge-remove-flags-in-buffer #[(buffer before after) "p\nq SZb!!& ! Sb!9!? !+" [StartBuffer ((set-buffer StartBuffer)) buffer nil buffer-read-only before emerge-before-flag-length looking-at emerge-before-flag-match delete-char ding message "Trouble removing flag" after emerge-after-flag-match emerge-after-flag-length] 2]) (defalias 'emerge-unselect-and-select-difference #[(n &optional suppress-display) "Y\nW!\fYH\f\nWH\f!\fHH =:IG =GI*\f?U " [emerge-current-difference 0 emerge-number-of-differences emerge-unselect-difference n emerge-select-difference emerge-difference-list diff-vector 6 selection-type default-A A default-B B suppress-display emerge-recenter emerge-refresh-mode-line] 4]) (defalias 'emerge-select-version #[(force a-version b-version neither-version) "  \fHHT HS HT HS HT HS &E s  &] sjUp s!." [emerge-validate-difference nil buffer-read-only emerge-difference-list emerge-current-difference diff-vector 0 A-begin 1 A-end 2 B-begin 3 B-end 4 merge-begin 5 merge-end emerge-compare-buffers emerge-A-buffer emerge-merge-buffer a-version emerge-B-buffer b-version force neither-version error "This difference region has been edited"] 8]) (defalias 'emerge-read-file-name #[(prompt alternative-default-dir default-file A-file must-match) "+ +\n+\n !+ !#\n !P )$ G #=\n  E$PQ\n X$" [emerge-default-last-directories A-file alternative-default-dir file-name-directory read-file-name format "%s (default %s): " prompt file-name-nondirectory must-match confirm default-file ": " nil] 6]) (defalias 'emerge-refresh-mode-line #[nil "\nT \nY\n W \nHHǞA$C " [format "Emerge: %%b diff %d of %d%s" emerge-current-difference emerge-number-of-differences 0 emerge-difference-list 6 ((A . " - A") (B . " - B") (prefer-A . " - A*") (prefer-B . " - B*") (combined . " - comb")) "" mode-line-buffer-identification force-mode-line-update] 6]) (defalias 'emerge-compare-buffers #[(buffer-x x-begin x-end buffer-y y-begin y-end) " Z\n ZU??ō" [x-end x-begin y-end y-begin exit (byte-code " WK Z^pŎq \\{*pȎ q\n \\{*  =\"G \\\n \\\n+χ" [x-begin x-end 1000 compare-length StartBuffer ((set-buffer StartBuffer)) buffer-x x-string ((set-buffer StartBuffer)) buffer-y y-begin y-string throw exit nil t] 3)] 3]) (defalias 'emerge-unique-buffer-name #[(prefix suffix) " \nP!\f \nP \f\n$!\fT \f\n$)" [get-buffer prefix suffix 2 n format "%s<%d>%s"] 6]) (defalias 'emerge-validate-difference #[nil "Y \nW?!" [emerge-current-difference 0 emerge-number-of-differences error "No difference selected"] 2]) (defalias 'emerge-save-variables #[(vars) "\n\"" [mapcar #[(v) "9J@ " [v] 1] vars] 3]) (defalias 'emerge-restore-variables #[(vars values) "&@ @9 \nL A@\n!*A A" [vars values value var] 3]) (defalias 'emerge-make-temp-file #[(prefix) " \nP!ee % \" )" [make-temp-name emerge-temp-file-prefix prefix f write-region nil no-message set-file-modes emerge-temp-file-mode] 6]) #@168 Ask the user whether to write out an incomplete merge. If answer is yes, call `write-file' to do so. See `emerge-query-and-call' for details of the querying process. (defalias 'emerge-query-write-file #[nil "!" [emerge-query-and-call write-file] 2 (#$ . 67459) nil]) #@164 Ask the user whether to save an incomplete merge. If answer is yes, call `save-buffer' to do so. See `emerge-query-and-call' for details of the querying process. (defalias 'emerge-query-save-buffer #[nil "!" [emerge-query-and-call save-buffer] 2 (#$ . 67737) nil]) #@182 Ask the user whether to save or write out the incomplete merge. If answer is yes, call COMMAND interactively. During the call, the flags around the current difference are removed. (defalias 'emerge-query-and-call #[(command) "!.\nY\n\fW\n!!\nY-\n\fW1\n! !" [yes-or-no-p "Do you really write to write out this unfinished merge? " emerge-current-difference 0 emerge-number-of-differences emerge-unselect-difference call-interactively command emerge-select-difference emerge-recenter message "Not written"] 2 (#$ . 68013)]) (defalias 'emerge-verify-file-buffer #[nil "p! 8 \"! \" & \" \"!4ˉ\" \"" [verify-visited-file-modtime buffer-modified-p yes-or-no-p format "Save file %s? " buffer-file-name save-buffer error "Buffer out of sync for file %s" "Revert file %s? " revert-buffer t] 4]) (defalias 'emerge-copy-modes #[(buffer) "p\nq * " [StartBuffer ((set-buffer StartBuffer)) buffer major-mode] 1]) #@138 Like `define-key', but forcibly creates prefix characters as needed. If some prefix of KEY has a non-prefix definition, it is redefined. (defalias 'emerge-force-define-key #[(keymap key definition) " \n\" \n O#) \n#" [lookup-key keymap key v define-key 0 nil definition] 6 (#$ . 68989)]) (defalias 'emerge-define-key-if-possible #[(keymap key definition) " \n\" \n O\"?) \n#) ?) \n#)" [lookup-key keymap key present 0 define-key definition] 6]) #@285 Displays the name of the file loaded into the current buffer. If the name won't fit on one line, the minibuffer is expanded to hold it, and the command waits for a keystroke from the user. If the keystroke is SPC, it is ignored; if it is anything else, it is processed as a command. (defalias 'emerge-show-file-name #[nil "  Ë)" [buffer-file-name name "Buffer has no file name." ((byte-code " ! c ?; ) S V)! \f=?:\fC*" [select-window minibuffer-window erase-buffer name pos-visible-in-window-p 0 echo-keystrokes screen-height window-height enlarge-window 1 read-event c 32 unread-command-events] 3))] 2 (#$ . 69478) nil]) #@229 Return file name to use for auto-saves of current buffer. Does not consider `auto-save-visited-file-name'; that is checked before calling this function. You can redefine this for customization. See also `auto-save-file-name-p'. (defalias 'emerge-make-auto-save-file-name #[nil "*!!R\f!\f(!!!!°)! !!°!" [buffer-file-name file-name-directory "#" file-name-nondirectory f file-writable-p getenv "HOME" "/#&" "&" emerge-hash-string-into-string expand-file-name "/#%" emerge-unslashify-name buffer-name "%" make-temp-name ""] 7 (#$ . 70154)]) (defalias 'emerge-hash-string-into-string #[(s) "%\n\fGW+ \nŦ \nŦH_\f\nH\\ǦI\nT #*" [vector 0 i bins s 5 35 65536 mapconcat #[(b) "\\YT!" [b 93 33 47 char-to-string] 3] ""] 7]) (defalias 'emerge-unslashify-name #[(s) "\f #-\fO\fOŘƂ\fOQT)\f" [0 limit string-match "[/\\]" s "/" "\\!" "\\\\" nil] 5]) #@138 Characters that must be quoted with \ when used in a shell command line. More precisely, a [...] regexp to match any one such character. (defvar emerge-metachars "[ \n!\"#$&'()*;<=>?[\\^`{|~]" (#$ . 71110)) (defalias 'emerge-protect-metachars #[(s) " \f #\fO\fOQT)\f" [0 limit string-match emerge-metachars s "\\" nil] 5]) (provide (quote emerge))