;ELC ;;; compiled by jwz@thalidomide on Thu Oct 28 21:55:25 1993 ;;; from file /th/jwz/emacs19/lisp/packages/emerge.el ;;; emacs version 19.9 Lucid. ;;; bytecomp version 2.20; 20-oct-93. ;;; 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 "This file was compiled for Emacs 19.")) (fset 'emerge-eval-in-buffer '(macro . #[(buffer &rest forms) "DD\"EE" [let ((StartBuffer (current-buffer))) unwind-protect append progn set-buffer buffer forms (set-buffer StartBuffer)] 7 "\ 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."])) (defvar emerge-lucid-p (string-match "Lucid" emacs-version) "\ Non-nil if this is Lucid Emacs. Don't alter manually, because it also turns on work-arounds to Lucid bugs.") (fset 'emerge-defvar-local '(macro . #[(var value doc) "\n F\nDD\nDFF" [progn defvar var value doc make-variable-buffer-local quote put (if emerge-lucid-p 'permanent-local 'preserved) t] 7 "\ 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."])) (byte-code "! \"" [boundp emerge-minor-modes-list ((emerge-mode " Emerge") (emerge-fast-mode " F") (emerge-edit-mode " E") (emerge-auto-advance " A") (emerge-skip-prefers " S")) emerge-mode minor-mode-alist append] 3) (defun emerge-mode nil "\ 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.") (defvar emerge-version "5lucid" "\ The version of Emerge.") (fset 'emerge-version #[nil "t \"\n" [message "Emerge version %s" emerge-version] 3 "\ Return string describing the version of Emerge. When called interactively, displays the version." nil]) (defvar emerge-diff-program "diff" "\ *Name of the program which compares two files.") (defvar emerge-diff3-program "diff3" "\ *Name of the program which compares three files. Its arguments are the ancestor file and the two variant files.") (defvar emerge-diff-options "" "\ *Options to pass to `emerge-diff-program' and `emerge-diff3-program'.") (defvar emerge-match-diff-line (byte-code " İ)" ["\\([0-9]+\\)\\(\\|,\\([0-9]+\\)\\)" x "^" "\\([acd]\\)" "$"] 5) "\ *Pattern to match lines produced by diff that describe differences. This is as opposed to lines from the source files.") (defvar emerge-diff-ok-lines-regexp "^\\([0-9,]+[acd][0-9,]+$\\|[<>] \\|---\\)" "\ *Regexp that matches normal output lines from `emerge-diff-program'. Lines that do not match are assumed to be error messages.") (defvar emerge-diff3-ok-lines-regexp "^\\([1-3]:\\|====\\| \\)" "\ *Regexp that matches normal output lines from `emerge-diff3-program'. Lines that do not match are assumed to be error messages.") (defvar emerge-rcs-ci-program "ci" "\ *Name of the program that checks in RCS revisions.") (defvar emerge-rcs-co-program "co" "\ *Name of the program that checks out RCS revisions.") (defvar emerge-process-local-variables nil "\ *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-execute-line-deletions nil "\ *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-startup-hook nil "\ *Hook to run in the merge buffer after the merge has been set up.") (defvar emerge-select-hook nil "\ *Hook to run after a difference has been selected. The variable `n' holds the (internal) number of the difference.") (defvar emerge-unselect-hook nil "\ *Hook to run after a difference has been unselected. The variable `n' holds the (internal) number of the difference.") (defvar emerge-default-last-directories nil "\ *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-last-dir-A nil "\ Last directory for the first file of an `emerge-files...' command.") (defvar emerge-last-dir-B nil "\ Last directory for the second file of an `emerge-files...' command.") (defvar emerge-last-dir-ancestor nil "\ Last directory for the ancestor file of an `emerge-files...' command.") (defvar emerge-last-dir-output nil "\ Last directory for the output file of an `emerge-files...' command.") (defvar emerge-last-revision-A nil "\ Last RCS revision used for first file of an `emerge-revisions...' command.") (defvar emerge-last-revision-B nil "\ Last RCS revision used for second file of an `emerge-revisions...' command.") (defvar emerge-last-revision-ancestor nil "\ Last RCS revision used for ancestor file of an `emerge-revisions...' command.") (defvar emerge-before-flag "vvvvvvvvvvvvvvvvvvvv\n" "\ *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-after-flag "^^^^^^^^^^^^^^^^^^^^\n" "\ *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.") (byte-code "!!\"!" [emerge-lucid-p find-face emerge-highlight-face face-differs-from-default-p copy-face bold-italic boundp emerge-mark-with-text t] 3) (fset '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 "\ 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."]) (fset 'emerge-count-matches-string #[(string regexp) " \n# Tq *" [0 count i string-match regexp string] 4 "\ Return the number of matches in STRING for REGEXP."]) (emerge-new-flags) (defvar emerge-min-visible-lines 3 "\ *Number of lines that we want to show above and below the flags when we are displaying a difference.") (defvar emerge-temp-file-prefix (byte-code "! GV ƉGSHU O P*" [getenv "TMPDIR" nil d env 0 "/tmp" 47 -1 "/emerge"] 4) "\ *Prefix to put on Emerge temporary file names. Do not start with `~/' or `~user-name/'.") (defvar emerge-temp-file-mode 384 "\ *Mode for Emerge temporary files.") (defvar emerge-combine-versions-template "#ifdef NEW\n%b#else /* NEW */\n%a#endif /* NEW */\n" "\ *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-basic-keymap nil "\ Keymap of Emerge commands. Directly available in `fast' mode; must be prefixed by \\\\[emerge-basic-keymap] in `edit' mode.") (defvar emerge-fast-keymap nil "\ Local keymap used in Emerge `fast' mode. Makes Emerge commands directly available.") (defvar emerge-command-prefix "" "\ *Command prefix for Emerge commands in 'edit' mode. Must be set before Emerge is loaded.") (fset 'emerge-setup-fixed-keymaps #[nil "  \" ! # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @# AB# CD# EF# G# HI# JK# LM# NO# PQ# RS# TU# MV WXW \"WW\"WY#WWMZ[\\W] $Z^_W] $" [make-keymap emerge-basic-keymap set-keymap-name 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 "xa" emerge-find-difference-A "xb" emerge-find-difference-B "xc" emerge-combine-versions "xC" emerge-combine-versions-register "xd" "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 make-sparse-keymap emerge-fast-keymap set-keymap-parent emerge-command-prefix emerge-shadow-key-definition write-file emerge-query-write-file current-global-map save-buffer emerge-query-save-buffer] 5]) (defvar emerge-mode nil "\ Indicator for emerge-mode.") (byte-code "! Ī#" [make-variable-buffer-local emerge-mode put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-fast-mode nil "\ Indicator for emerge-mode fast submode.") (byte-code "! Ī#" [make-variable-buffer-local emerge-fast-mode put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-edit-mode nil "\ Indicator for emerge-mode edit submode.") (byte-code "! Ī#" [make-variable-buffer-local emerge-edit-mode put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-A-buffer nil "\ The buffer in which the A variant is stored.") (byte-code "! Ī#" [make-variable-buffer-local emerge-A-buffer put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-B-buffer nil "\ The buffer in which the B variant is stored.") (byte-code "! Ī#" [make-variable-buffer-local emerge-B-buffer put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-merge-buffer nil "\ The buffer in which the merged file is manipulated.") (byte-code "! Ī#" [make-variable-buffer-local emerge-merge-buffer put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-ancestor-buffer nil "\ The buffer in which the ancestor variant is stored, or nil if there is none.") (byte-code "! Ī#" [make-variable-buffer-local emerge-ancestor-buffer put emerge-lucid-p permanent-local preserved t] 4) (defconst emerge-saved-variables '((buffer-modified-p set-buffer-modified-p) buffer-read-only buffer-auto-save-file-name) "\ Variables and properties of a buffer which are saved, modified and restored during a merge.") (defconst emerge-merging-values '(nil t nil) "\ Values to be assigned to emerge-saved-variables during a merge.") (defvar emerge-A-buffer-values nil "\ Remembers emerge-saved-variables for emerge-A-buffer.") (byte-code "! Ī#" [make-variable-buffer-local emerge-A-buffer-values put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-B-buffer-values nil "\ Remembers emerge-saved-variables for emerge-B-buffer.") (byte-code "! Ī#" [make-variable-buffer-local emerge-B-buffer-values put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-difference-list nil "\ 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 prefered choice prefer-B in a three-file merge, the B variant is the prefered choice") (byte-code "! Ī#" [make-variable-buffer-local emerge-difference-list put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-current-difference -1 "\ The difference that is currently selected.") (byte-code "! Ī#" [make-variable-buffer-local emerge-current-difference put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-number-of-differences nil "\ Number of differences found.") (byte-code "! Ī#" [make-variable-buffer-local emerge-number-of-differences put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-edit-keymap nil "\ 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.") (byte-code "! Ī#" [make-variable-buffer-local emerge-edit-keymap put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-old-keymap nil "\ The original local keymap for the merge buffer.") (byte-code "! Ī#" [make-variable-buffer-local emerge-old-keymap put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-auto-advance nil "\ *If non-nil, emerge-select-A and emerge-select-B automatically advance to the next difference.") (byte-code "! Ī#" [make-variable-buffer-local emerge-auto-advance put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-skip-prefers nil "\ *If non-nil, differences for which there is a preference are automatically skipped.") (byte-code "! Ī#" [make-variable-buffer-local emerge-skip-prefers put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-quit-hook nil "\ 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.") (byte-code "! Ī#" [make-variable-buffer-local emerge-quit-hook put emerge-lucid-p permanent-local preserved t] 4) (defvar emerge-output-description nil "\ Describes output destination of emerge, for `emerge-file-names'.") (byte-code "! Ī#MMMMMMMMMM" [make-variable-buffer-local emerge-output-description put emerge-lucid-p permanent-local preserved t emerge-files-internal #[(file-A file-B &optional startup-hooks quit-hooks output-file) " ! \" ! \" ! ! ! !\n  ! p Ύq~ !ed % DEB *p َq~ !ed % DEB *   &*" [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)) emerge-remote-file-p emerge-make-temp-file "A" write-region nil no-message lambda delete-file startup-hooks emerge-verify-file-buffer ((set-buffer StartBuffer)) "B" emerge-setup quit-hooks] 8] emerge-setup #[(buffer-A file-A buffer-B file-B startup-hooks quit-hooks output-file) " !\n! !\"pɎ\nq!* p͎ q\n!!\n  P !P! \n\"!G\"$%& *\n $p q\"Ӊ," [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] emerge-make-diff-list #[(file-A file-B) "!pĎ\nq  \n ! !%\"*\n\"\n!$)" [get-buffer-create "*emerge-diff*" 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] emerge-extract-diffs #[(diff-buffer) "pÎ qeb#ɔɕ{!\n˔˕    {!\n*ϔϕ{єѕ{!Ӕӕ    {!*՘T\nT\n֘TTTT\n% B- * )" [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] emerge-prepare-error-list #[(ok-regexp diff-buffer) "!pĎ\nq ! !*" [get-buffer-create "*emerge-diff-errors*" emerge-diff-error-buffer StartBuffer ((set-buffer StartBuffer)) erase-buffer insert-buffer diff-buffer delete-matching-lines ok-regexp] 2] emerge-files-with-ancestor-internal #[(file-A file-B file-ancestor &optional startup-hooks quit-hooks output-file) " ! \" ! \" ! \" ! ! ! ! ! ! !pю q~ !ed % DEB *p܎q~ !ed % DEB *pގq~ !ed % DEB *   !& +" [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)) emerge-remote-file-p emerge-make-temp-file "A" write-region nil no-message lambda delete-file startup-hooks emerge-verify-file-buffer ((set-buffer StartBuffer)) "B" ((set-buffer StartBuffer)) "anc" emerge-setup-with-ancestor quit-hooks] 10] emerge-setup-with-ancestor #[(buffer-A file-A buffer-B file-B buffer-ancestor file-ancestor &optional startup-hooks quit-hooks output-file) " !\n! ! !\"p ʎ q!* p Ύ q !!   P !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] emerge-make-diff3-list #[(file-A file-B file-ancestor) "!pĎ\nq  \n ! !!&\"*\n\"\n!$)" [get-buffer-create "*emerge-diff*" 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-ancestor file-A 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] emerge-extract-diffs3 #[(diff-buffer) "pÎ q#yȔȕ{ ʘ` ! b!@A@@A@ ͘Ҫ ϘӪ%+ B)/* )" [nil list StartBuffer ((set-buffer StartBuffer)) diff-buffer re-search-forward "^====\\(.?\\)$" t 1 agreement "1" pos emerge-get-diff3-group "2" group-2 "3" group-3 vector prefer-A prefer-B default-A] 8] emerge-get-diff3-group #[(file) "\nQ!yŔŕ{ƘǔĔĕ{!ɔɕ{!TDĔĕ{!\nT)DĔĕ{!TD)" [re-search-forward "^" file ":\\([0-9]+\\)\\(,\\([0-9]+\\)\\)?\\([ac]\\)$" 1 4 "c" 2 string-to-int 3 x] 5]] 4) (fset 'emerge-files #[(arg file-A file-B file-out &optional startup-hooks quit-hooks) " \n DEB %" [emerge-files-internal file-A file-B startup-hooks file-out lambda nil emerge-files-exit quit-hooks] 8 "\ Run Emerge on two files." (byte-code "\n % %\n\n %F)" [nil f current-prefix-arg emerge-read-file-name "File A to merge" emerge-last-dir-A confirm "File B to merge" emerge-last-dir-B "Output file" emerge-last-dir-output] 9)]) (fset 'emerge-files-with-ancestor #[(arg file-A file-B file-ancestor file-out &optional startup-hooks quit-hooks) " \n 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 "\ Run Emerge on two files, giving another file as the ancestor." (byte-code "\n % %\n %\n %)" [nil f current-prefix-arg emerge-read-file-name "File A to merge" emerge-last-dir-A confirm "File B to merge" emerge-last-dir-B "Ancestor file" emerge-last-dir-ancestor "Output file" emerge-last-dir-output] 10)]) (fset 'emerge-files-exit #[(file-out) "?\n!" [emerge-prefix-argument emerge-write-and-delete file-out] 2]) (fset 'emerge-buffers #[(buffer-A buffer-B &optional startup-hooks quit-hooks) "!!pƎqed %*pˎ qed %*!  ! D 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 "\ Run Emerge on two buffers." "bBuffer A to merge: \nbBuffer B to merge: "]) (fset 'emerge-buffers-with-ancestor #[(buffer-A buffer-B buffer-ancestor &optional startup-hooks quit-hooks) "!!!pȎ qed%*p͎qed %*pώqed %* !! ! D D DB& +" [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 "\ Run Emerge on two buffers, giving another buffer as the ancestor." "bBuffer A to merge: \nbBuffer B to merge: \nbAncestor buffer: "]) (byte-code "MMMMMM" [emerge-files-command #[nil "@A@8 \nDEC$+" [command-line-args-left 2 file-out file-b file-a 3 emerge-files-internal nil lambda emerge-command-exit] 8] emerge-files-with-ancestor-command #[nil " @Ƙ 8 8 A@ 8  @ A@ 8 8  \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] emerge-command-exit #[(file-out) " ! Ī!" [emerge-write-and-delete file-out kill-emacs emerge-prefix-argument 1 0] 2] emerge-files-remote #[(file-a file-b file-out) " \nDEEC%\"" [emerge-files-internal file-a file-b nil lambda emerge-remote-exit file-out quote exit-func throw client-wait] 10] emerge-files-with-ancestor-remote #[(file-a file-b file-anc file-out) " \n  DEEC&\"" [emerge-files-with-ancestor-internal file-a file-b file-anc nil lambda emerge-remote-exit file-out quote exit-func throw client-wait] 11] emerge-remote-exit #[(file-out exit-func) " ! ! ƪ!" [emerge-write-and-delete file-out kill-buffer emerge-merge-buffer exit-func emerge-prefix-argument 1 0] 2]] 2) (fset '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 "\ Emerge two RCS revisions of a file." (byte-code "É$\" \"F" [current-prefix-arg read-file-name "File to merge: " nil confirm read-string "Revision A to merge: " emerge-last-revision-A "Revision B to merge: " emerge-last-revision-B] 6)]) (fset 'emerge-revisions-with-ancestor #[(arg file revision-A revision-B ancestor &optional startup-hooks quit-hooks) "\n \n   #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 "\ Emerge two RCS revisions of a file, with another revision as ancestor." (byte-code "É$\" \" \"" [current-prefix-arg read-file-name "File to merge: " nil confirm read-string "Revision A to merge: " emerge-last-revision-A "Revision B to merge: " emerge-last-revision-B "Ancestor: " emerge-last-revision-ancestor] 7)]) (byte-code "MM" [emerge-revisions-internal #[(file revision-A revision-B &optional startup-hooks quit-hooks output-file) " #! #!!! \n  p Ύ q  $\"ed\n%!*p ؎ q  $\"ed %!* \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] emerge-revision-with-ancestor-internal #[(file revision-A revision-B ancestor &optional startup-hooks quit-hooks output-file) " #! #! #!!!!   pҎq  $\"ed %!*p܎q  $\"ed %!*pݎq  $\"ed %!*    D D 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]] 2) (fset 'emerge-execute-line #[nil "m!y!ɕbl!͔͕{ΔΕ{ɕbј!Ә !՘֘ !ؘ٘ !!*! ! !y  # ?? pDFC&  # ?? pDFC& '! )!) \") #)-" [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 "\ 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." nil]) (defvar emerge-merge-directories-filename-regexp "[^.]" "\ Regexp describing files to be processed by `emerge-merge-directories'.") (byte-code "M!MM" [emerge-merge-directories #[(a-dir b-dir ancestor-dir output-dir) "nl!\n\nØ Ø!OɘP\n!\nOɘ\nP\n\n\n!Oɘ\nP !Oɘ P  #\n #\n\n #!!!\"A@A@AAdA`)@A@رA@\nرA@\nرA ر!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 (byte-code "‰$‰$‰$‰$F" [read-file-name "A directory: " nil confirm "B directory: " "Ancestor directory (null for none): " "Output directory (null for none): "] 8)] boundp emerge-split-horizontally t emerge-setup-windows #[(buffer-A buffer-B merge-buffer &optional pos) " =! !   ! eb! ! eb! ebpώq *U? !\"!" [selected-window minibuffer-window other-window 1 delete-other-windows switch-to-buffer merge-buffer emerge-refresh-mode-line split-window emerge-split-horizontally 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] emerge-set-keys #[nil "  ! ### $ $!ԉ" [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 emerge-recursively-substitute-key-definition write-file emerge-query-write-file save-buffer emerge-query-save-buffer emerge-shadow-key-definition current-global-map use-local-map emerge-fast-keymap nil emerge-edit-mode t emerge-fast-mode] 6]] 2) (fset '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 "\ 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'."]) (fset '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 "\ Restores characteristics saved by `emerge-remember-buffer-characteristics'."]) (byte-code "MMMM" [emerge-convert-diffs-to-markers #[(A-buffer B-buffer merge-buffer lineno-list) "pÎ qe*Spǎ q~ \"+\npˎ qe* pΎ q~ \"+@HHHHH p q\n\\! \n\\! *p q\\! \\! * !Z' !Z' & B. AE \"*." [nil marker-list StartBuffer ((set-buffer StartBuffer)) A-buffer A-point-min offset ((set-buffer StartBuffer)) count-lines 1 A-hidden-lines ((set-buffer StartBuffer)) B-buffer B-point-min ((set-buffer StartBuffer)) B-hidden-lines 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)) goto-line point-marker ((set-buffer StartBuffer)) make-marker marker-position merge-buffer vector apply emerge-difference-list] 9] 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] emerge-handle-local-variables #[nil "Ï" [emerge-process-local-variables err (hack-local-variables t) ((error (byte-code " !\"" [message "Local-variables error in merge buffer: %s" prin1-to-string err] 4)))] 3] emerge-write-and-delete #[(file-out) " \n!\n! ! ! ! !!" [delete-other-windows buffer-modified-p emerge-A-buffer kill-buffer emerge-B-buffer emerge-ancestor-buffer file-out write-file] 2]] 2) (fset 'emerge-recenter #[(&optional arg) "\n # Y W \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 window-A window-B merge-window emerge-difference-list diff-vector select-window emerge-position-region emerge-mark-with-text emerge-before-flag-length 1 emerge-after-flag-length 2 3 4 5] 5 "\ 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." "P"]) (fset 'emerge-operate-on-windows #[(operation arg) "\n  ! ! ! !͏!Ϗ  !!." [emerge-merge-buffer merge-buffer emerge-A-buffer buffer-A emerge-B-buffer buffer-B get-buffer-window window-A window-B merge-window select-window nil (funcall operation arg) ((error)) (funcall operation arg) ((error)) operation arg] 3]) (fset 'emerge-scroll-up #[(&optional arg) "\n\nÚ\n!!??! ZZ \n ̥ ))\"" [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 "\ 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." "P"]) (fset 'emerge-scroll-down #[(&optional arg) "\n\nÚ\n!!??! ZZ \n ̥ ))\"" [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 "\ 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." "P"]) (fset 'emerge-scroll-left #[(&optional arg) "\n\nÚ\n!!??!ɥZ \n ɥ ))\"" [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 "\ 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." "P"]) (fset 'emerge-scroll-right #[(&optional arg) "\n\nÚ\n!!??!ɥZ \n ɥ ))\"" [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 "\ 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." "P"]) (fset 'emerge-scroll-reset #[nil "\"" [emerge-operate-on-windows #[(x) " \"" [set-window-hscroll selected-window 0] 3] nil] 3 "\ Reset horizontal scrolling in Emerge. This resets the horizontal scrolling of all three merge buffers to the left margin, if they are in windows." nil]) (fset 'emerge-position-region #[(beg end pos) " !`\nX T[!`X \n\" ! !`VTo\nb !SZT˥!) b" [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]) (fset 'emerge-next-difference #[nil " WT \n W \nHH>\nTj\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 "\ Advance to the next difference." nil]) (fset 'emerge-previous-difference #[nil "VS \nV \nHH>\nSj\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 "\ Go to the previous difference." nil]) (fset 'emerge-jump-to-difference #[(difference-number) "\nSY\n TW\n!!)" [nil buffer-read-only difference-number -1 emerge-number-of-differences emerge-unselect-and-select-difference error "Bad difference number"] 3 "\ Go to the N-th difference." "p"]) (fset 'emerge-abort #[nil "!" [emerge-quit t] 2 "\ Abort the Emerge session." nil]) (fset 'emerge-quit #[(arg) " ª!! !" [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 "\ 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." "P"]) (fset 'emerge-really-quit #[(arg) "! \" !\n   !!)" [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]) (fset 'emerge-select-A #[(&optional force) " \n $*" [#[nil " \n $ " [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 "\ 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." "P"]) (fset 'emerge-select-A-edit #[(merge-begin merge-end A-begin A-end) "p\nq | 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]) (fset 'emerge-select-B #[(&optional force) " \n $*" [#[nil " \n $ " [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 "\ 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." "P"]) (fset 'emerge-select-B-edit #[(merge-begin merge-end B-begin B-end) "p\nq | 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]) (fset 'emerge-default-A #[(force) "\n] W HH= H= \" !I) TѦUF \"? !+!" [nil buffer-read-only emerge-current-difference 0 n selected-difference emerge-number-of-differences emerge-difference-list diff-vector 6 default-B force B emerge-unselect-and-select-difference t emerge-select-A default-A 10 message "Setting default to A...%d" "Default A set"] 4 "\ 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. A prefix argument forces all differences from here down that have selected the B version to become default-A as well." "P"]) (fset 'emerge-default-B #[(force) "\n] W HH= H= \" !I) TѦUF \"? !+!" [nil buffer-read-only emerge-current-difference 0 n selected-difference emerge-number-of-differences emerge-difference-list diff-vector 6 default-A force A emerge-unselect-and-select-difference t emerge-select-B default-B 10 message "Setting default to B...%d" "Default B set"] 4 "\ 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. A prefix argument forces all differences from here down that have selected the A version to become default-B as well." "P"]) (fset '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" set-buffer-modified-p buffer-modified-p] 2 "\ Set fast mode, for Emerge. In this mode ordinary Emacs commands are disabled, and Emerge commands need not be prefixed with \\\\[emerge-basic-keymap]." nil]) (fset '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" set-buffer-modified-p buffer-modified-p] 2 "\ Set edit mode, for Emerge. In this mode ordinary Emacs commands are available, and Emerge commands must be prefixed with \\\\[emerge-basic-keymap]." nil]) (fset 'emerge-auto-advance #[(arg) " ?!V ƪ! !" [arg emerge-auto-advance prefix-numeric-value 0 message emerge-skip-prefers "Auto-advance set" "Auto-advance cleared" set-buffer-modified-p buffer-modified-p] 2 "\ 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." "P"]) (fset 'emerge-skip-prefers #[(arg) " ?!V Ū! !" [arg emerge-skip-prefers prefix-numeric-value 0 message "Skip-prefers set" "Skip-prefers cleared" set-buffer-modified-p buffer-modified-p] 2 "\ 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." "P"]) (fset '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 "\ Put the A variant of this difference in the kill ring." nil]) (fset '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 "\ Put the B variant of this difference in the kill ring." nil]) (fset 'emerge-insert-A #[(arg) " \nHHT HS`\n # !`!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 "\ Insert the A variant of this difference at the point. Leaves point after text, mark before. With prefix argument, puts point before, mark after." "P"]) (fset 'emerge-insert-B #[(arg) " \nHHT HS`\n # !`!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 "\ Insert the B variant of this difference at the point. Leaves point after text, mark before. With prefix argument, puts point before, mark after." "P"]) (fset '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 "\ Leaves the point before this difference and the mark after it. With prefix argument, puts mark before, point after." "P"]) (fset 'emerge-file-names #[nil " ÐpŎq!!! !!*p͎q!!! !!*pҎq!!! !!*!)" [delete-other-windows #[(buf) " !!" [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] 3 "\ Show the names of the buffers or files being operated on by Emerge. Use C-u l to reset the windows afterward." nil]) (fset 'emerge-join-differences #[(arg) "\n S W SY!! S \"\n W\n W  H V  TH  H  TH H HH HH HH H=====ت*&*I T (\n *  ! )" [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 "\ Join the selected difference with the following one. With a prefix argument, join with the preceding one." "P"]) (fset 'emerge-split-difference #[nil " pĎ q *pǎq *  H\n   \nHW \nHV! \nHW \nHV! \nHW \nHV!!T\"W W H TV SH U\nH \nH \nH \nH& !\nH !\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 "\ Split the current difference where the points are in the three windows." nil]) (fset 'emerge-trim-difference #[nil " \n! \nH H! H! H! H! H! H!V Z  ZZ^^^pێq\\{*pݎq  \\{*\\{V\\ \\ \\ʥHVd Z  ZZ^^^pߎq Z {*pq Z {*Z{V Z  Z Zʥpqby I by I*pq by I by I*by Iby I\n! . " [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 "\ 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.)" nil]) (fset 'emerge-find-difference #[(arg) "p=\n!p =\n!\n!" [emerge-A-buffer emerge-find-difference-A arg emerge-B-buffer emerge-find-difference-B emerge-find-difference-merge] 2 "\ 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." "P"]) (fset 'emerge-find-difference-merge #[(arg) " `$" [emerge-find-difference1 arg 4 5] 5 "\ 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." "P"]) (fset 'emerge-find-difference-A #[(arg) " pÎ q`*$" [emerge-find-difference1 arg StartBuffer ((set-buffer StartBuffer)) emerge-A-buffer 0 1] 5 "\ 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." "P"]) (fset 'emerge-find-difference-B #[(arg) " pÎ q`*$" [emerge-find-difference1 arg StartBuffer ((set-buffer StartBuffer)) emerge-B-buffer 2 3] 5 "\ 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." "P"]) (fset 'emerge-find-difference1 #[(arg location begin end) " W \nHH!X\n! \n\n! V\n W\n!\nV\nS!!+" [search (byte-code "\nW H H!X \") Tb)\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]) (fset 'emerge-line-numbers #[nil "Y\nW H\" p\nˎ q\"*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 "\ Display the current line numbers. This function displays the line numbers of the points in the A, B, and merge buffers." nil]) (fset '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]) (fset 'emerge-set-combine-versions-template #[(start end &optional localize) "! { Ǫ!" [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 "\ Copy region into `emerge-combine-versions-template'. This controls how `emerge-combine-versions' will combine the two versions. With prefix argument, `emerge-combine-versions' is made local to this merge buffer. Localization is permanent for any particular merge buffer." "r\nP"]) (fset 'emerge-combine-versions #[(&optional force) " \n\"" [emerge-combine-versions-internal emerge-combine-versions-template force] 3 "\ 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." "P"]) (fset 'emerge-combine-versions-register #[(char &optional force) " !;!\n\")" [get-register char template error "Register does not contain text" emerge-combine-versions-internal force] 4 "\ 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." "cRegister containing template: \nP"]) (byte-code "MM" [emerge-combine-versions-internal #[(template force) " $)" [#[nil " \n & " [emerge-combine-versions-edit merge-begin merge-end A-begin A-end B-begin B-end template emerge-auto-advance emerge-next-difference] 8] operate emerge-select-version force] 5] emerge-combine-versions-edit #[(merge-begin merge-end A-begin A-end B-begin B-end template) "p\nq | bGWHUT̏U#U#Uccc)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]] 2) (fset 'emerge-set-merge-mode #[(mode) " \n " [mode emerge-refresh-mode-line emerge-fast-mode emerge-edit-mode] 1 "\ 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." (byte-code " %!C" [intern completing-read "New major mode for merge buffer: " obarray commandp t nil] 7)]) (byte-code "MMMMMMMMMMMMMMMMMM" [emerge-one-line-window #[nil " Z!)" [1 window-min-height shrink-window window-height 2] 3 nil nil] 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] emerge-place-flags-in-buffer #[(buffer difference before-index after-index) "pŽq #* #" [buffer StartBuffer ((set-buffer StartBuffer)) emerge-place-flags-in-buffer1 difference before-index after-index] 4] emerge-place-flags-in-buffer1 #[(difference before-index after-index) " # H H \nb !` \nSƓ SƉ YH H USƓ H USSJ. H H! bcTƓ TƉ WH H UTƓ H UTTI." [emerge-lucid-p emerge-mark-with-text emerge-place-flags-in-buffer1-lucid difference before-index after-index nil buffer-read-only emerge-globalized-difference-list here before insert-before-markers emerge-before-flag diff-list before-marker after-marker n 0 after marker-position emerge-after-flag emerge-globalized-number-of-differences] 5] emerge-place-flags-in-buffer1-lucid #[(difference before-index after-index) " H\nH H H ! !p#\"\"#+" [emerge-globalized-difference-list difference before-index before after-index after make-extent marker-position extent set-extent-face emerge-highlight-face set-extent-priority 1 set-extent-property emerge t] 4] emerge-unselect-difference #[(n) " H \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] emerge-remove-flags-in-buffer #[(buffer before after) " #pǎ q \nSZb !\n! ! Sb!! !+" [emerge-lucid-p emerge-mark-with-text emerge-remove-flags-in-buffer-lucid buffer before after StartBuffer ((set-buffer StartBuffer)) nil buffer-read-only emerge-before-flag-length looking-at emerge-before-flag-match delete-char ding message "Trouble removing flag" emerge-after-flag-match emerge-after-flag-length] 4] emerge-remove-flags-in-buffer-lucid #[(buffer before after) "\n ! !%" [map-extents #[(x y) " \" !" [extent-property x emerge delete-extent] 3] buffer marker-position before after nil] 6] emerge-unselect-and-select-difference #[(n &optional suppress-display) "Y\nW! Y \nW ! HH =I =I* ? " [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] emerge-select-version #[(force a-version b-version neither-version) "  HHT HS HT HS HT HS &   & U !." [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] emerge-read-file-name #[(prompt alternative-default-dir default-file A-file mustmatch) " \n\n ! !#\n !P $\n\n#\n\n $P\n $" [emerge-default-last-directories A-file alternative-default-dir file-name-directory read-file-name format "%s (default %s): " prompt file-name-nondirectory mustmatch default-file ": " nil] 6] 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 set-buffer-modified-p buffer-modified-p] 6] 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 " W Z^pŎq \\{*pȎ q\n \\{*  \" \\\n \\\n+9χ" [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] emerge-unique-buffer-name #[(prefix suffix) " \nP! \nP \n$! Tq \n$)" [get-buffer prefix suffix 2 n format "%s<%d>%s"] 6] emerge-validate-difference #[nil "Y\nW?!" [emerge-current-difference 0 emerge-number-of-differences error "No difference selected"] 2] emerge-save-variables #[(vars) "\n\"" [mapcar #[(v) "9J@ " [v] 1] vars] 3] emerge-restore-variables #[(vars values) "@ @9 \nL A@\n!*A A^" [vars values value var] 3] 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]] 2) (fset 'emerge-query-write-file #[nil "!" [emerge-query-and-call write-file] 2 "\ 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." nil]) (fset 'emerge-query-save-buffer #[nil "!" [emerge-query-and-call save-buffer] 2 "\ 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." nil]) (fset 'emerge-query-and-call #[(command) "!\nY\n W\n!!\nY\n W\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 "\ 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."]) (byte-code "MMM" [emerge-verify-file-buffer #[nil "p! \"! \" \" \"!ˉ\" \"" [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] emerge-remote-file-p #[nil "! @ \"" [boundp ange-ftp-path-format string-match buffer-file-name] 3] emerge-copy-modes #[(buffer) "p\nq * " [StartBuffer ((set-buffer StartBuffer)) buffer major-mode] 1]] 2) (fset 'emerge-force-define-key #[(keymap key definition) " \n\" \n O#) \n#" [lookup-key keymap key v define-key 0 nil definition] 6 "\ Like `define-key', but forcibly creates prefix characters as needed. If some prefix of KEY has a non-prefix definition, it is redefined."]) (fset 'emerge-shadow-key-definition #[(olddef newdef shadowmap keymap) " !\n@@\n@A \"*\nAl)" [accessible-keymaps keymap maps map prefix map-keymap #[(okey val) " = C\" #)" [val olddef vconcat prefix okey key emerge-define-key-if-possible shadowmap newdef] 4] nil] 4 "\ Shadow OLDDEF with NEWDEF for any keys in KEYMAP with entries in SHADOWMAP. In other words, insert into SHADOWMAP a binding to NEWDEF wherever a binding of OLDDEF appears in KEYMAP. Thus, if KEYMAP is the global map and SHADOWMAP is the local map, OLDDEF will be shadowed everywhere by NEWDEF. Does not affect keys that are already bound in SHADOWMAP, including those whose definition is OLDDEF."]) (fset 'emerge-define-key-if-possible #[(keymap key definition) " \n\" Ə)" [lookup-key keymap key present nil (define-key keymap key definition) ((error))] 4]) (fset 'emerge-recursively-substitute-key-definition #[(olddef newdef keymap) " ! \n@A#\nAr)" [accessible-keymaps keymap maps substitute-key-definition olddef newdef nil] 5 "\ Like substitute-key-definition, but examines and substitutes in all keymaps accessible from KEYMAP. Make sure that subordinate keymaps aren't shared with other keymaps! (copy-keymap will suffice.)"]) (fset 'emerge-show-file-name #[nil " Ë)" [buffer-file-name name "Buffer has no file name." ((byte-code " ! c ? S V!n   !=? ) =?C))" [select-window minibuffer-window erase-buffer name pos-visible-in-window-p 0 echo-keystrokes screen-height window-height enlarge-window 1 emerge-lucid-p next-command-event e event-to-character 32 unread-command-event read-event c unread-command-events] 3))] 2 "\ 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." nil]) (fset 'emerge-make-auto-save-file-name #[nil "!!R ! !!!!°)! !!°!" [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 "\ 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'."]) (byte-code "MM" [emerge-hash-string-into-string #[(s) "%\n GW \nŦ \nŦH_ \nH\\ǦI\nTb #*" [vector 0 i bins s 5 35 65536 mapconcat #[(b) "\\YT!" [b 93 33 47 char-to-string] 3] ""] 7] emerge-unslashify-name #[(s) " # O OŘƪ OQTY) " [0 limit string-match "[/\\]" s "/" "\\!" "\\\\" nil] 5]] 2) (defvar emerge-metachars "[ \n!\"#$&'()*;<=>?[\\^`{|~]" "\ Characters that must be quoted with \\ when used in a shell command line. More precisely, a [...] regexp to match any one such character.") (byte-code "M!" [emerge-protect-metachars #[(s) " # O OQTf) " [0 limit string-match emerge-metachars s "\\" nil] 5] provide emerge] 2)