mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-23 07:19:15 +00:00
* ediff-diff.el (ediff-install-fine-diff-if-necessary): take
the current highlighting style into account. (ediff-forward-word-function,ediff-whitespace,ediff-word-1, ediff-word-2,ediff-word-3,ediff-word-4): make them buffer local. * ediff-init.el (ediff-patch-job): new macro. * ediff-mult.el (ediff-make-new-meta-list-header): new API function. (ediff-intersect-directories): use ediff-make-new-meta-list-header. * ediff-ptch.el (ediff-map-patch-buffer): use ediff-make-new-meta-list-header. (ediff-fixup-patch-map): use the meta-list API from ediff-mult.el. * ediff-util.el (ediff-toggle-hilit): fix toggling of highliting. (ediff-select-difference): take highlighting style into account. (ediff-clone-buffer-for-region-comparison): new function. (ediff-inferior-compare-regions): added comparison of current diff regions. * ediff.el (ediff-clone-buffer-for-region-comparison, ediff-clone-buffer-for-window-comparison): moved to ediff-util.el.
This commit is contained in:
parent
c45d9dcf15
commit
743a79af65
@ -1,3 +1,28 @@
|
||||
2002-03-20 Michael Kifer <kifer@cs.stonybrook.edu>
|
||||
|
||||
* ediff-diff.el (ediff-install-fine-diff-if-necessary): take
|
||||
the current highlighting style into account.
|
||||
(ediff-forward-word-function,ediff-whitespace,ediff-word-1,
|
||||
ediff-word-2,ediff-word-3,ediff-word-4): make them buffer local.
|
||||
|
||||
* ediff-init.el (ediff-patch-job): new macro.
|
||||
|
||||
* ediff-mult.el (ediff-make-new-meta-list-header): new API function.
|
||||
(ediff-intersect-directories): use ediff-make-new-meta-list-header.
|
||||
|
||||
* ediff-ptch.el (ediff-map-patch-buffer): use
|
||||
ediff-make-new-meta-list-header.
|
||||
(ediff-fixup-patch-map): use the meta-list API from ediff-mult.el.
|
||||
|
||||
* ediff-util.el (ediff-toggle-hilit): fix toggling of highliting.
|
||||
(ediff-select-difference): take highlighting style into account.
|
||||
(ediff-clone-buffer-for-region-comparison): new function.
|
||||
(ediff-inferior-compare-regions): added comparison of current diff
|
||||
regions.
|
||||
|
||||
* ediff.el (ediff-clone-buffer-for-region-comparison,
|
||||
ediff-clone-buffer-for-window-comparison): moved to ediff-util.el.
|
||||
|
||||
2002-03-19 pmr-sav <pmr-sav@hamm.pajato.com>
|
||||
|
||||
* mail-utils.el (rmail-dont-reply-to):
|
||||
|
@ -36,9 +36,9 @@
|
||||
(put 'woman-faces 'custom-loads '("woman"))
|
||||
(put 'ps-print-vertical 'custom-loads '("ps-print"))
|
||||
(put 'supercite-hooks 'custom-loads '("supercite"))
|
||||
(put 'chinese-calendar 'custom-loads '("cal-china"))
|
||||
(put 'vhdl-menu 'custom-loads '("vhdl-mode"))
|
||||
(put 'gnus-newsrc 'custom-loads '("gnus-start"))
|
||||
(put 'chinese-calendar 'custom-loads '("cal-china"))
|
||||
(put 'expand 'custom-loads '("expand"))
|
||||
(put 'bookmark 'custom-loads '("bookmark"))
|
||||
(put 'icon 'custom-loads '("icon"))
|
||||
@ -130,7 +130,7 @@
|
||||
(put 'iso-acc 'custom-loads '("iso-acc"))
|
||||
(put 'gnus-summary-pick 'custom-loads '("gnus-salt"))
|
||||
(put 'gnus-thread 'custom-loads '("gnus-sum"))
|
||||
(put 'languages 'custom-loads '("cus-edit" "info-look" "ada-mode" "antlr-mode" "asm-mode" "cperl-mode" "dcl-mode" "delphi" "f90" "fortran" "hideshow" "icon" "idlwave" "m4-mode" "meta-mode" "modula2" "octave-mod" "pascal" "perl-mode" "prolog" "ps-mode" "sh-script" "simula" "tcl" "vhdl-mode" "sgml-mode"))
|
||||
(put 'languages 'custom-loads '("cus-edit" "info-look" "ada-mode" "antlr-mode" "asm-mode" "cperl-mode" "dcl-mode" "delphi" "f90" "fortran" "hideshow" "icon" "idlwave" "m4-mode" "meta-mode" "modula2" "octave-mod" "pascal" "perl-mode" "prolog" "ps-mode" "sh-script" "simula" "tcl" "vhdl-mode" "sgml-mode" "xml-lite"))
|
||||
(put 'reftex-miscellaneous-configurations 'custom-loads '("reftex-vars"))
|
||||
(put 'pong 'custom-loads '("pong"))
|
||||
(put 'ediff-ptch 'custom-loads '("ediff-ptch"))
|
||||
@ -144,14 +144,15 @@
|
||||
(put 'nnmail-various 'custom-loads '("nnmail" "nntp"))
|
||||
(put 'smiley 'custom-loads '("smiley-ems"))
|
||||
(put 'extensions 'custom-loads '("generic" "time-stamp" "wid-edit" "cust-print" "eldoc" "page-ext"))
|
||||
(put 'ebnf-displacement 'custom-loads '("ebnf2ps"))
|
||||
(put 'tetris 'custom-loads '("tetris"))
|
||||
(put 'appt 'custom-loads '("appt"))
|
||||
(put 'ebnf-displacement 'custom-loads '("ebnf2ps"))
|
||||
(put 'snmp 'custom-loads '("snmp-mode"))
|
||||
(put 'speedbar-faces 'custom-loads '("speedbar" "vhdl-mode"))
|
||||
(put 'rmail 'custom-loads '("paths" "rmail" "undigest"))
|
||||
(put 'ps-print-n-up 'custom-loads '("ps-print"))
|
||||
(put 'eshell-arg 'custom-loads '("esh-arg"))
|
||||
(put 'ps-print-printer 'custom-loads '("ps-print"))
|
||||
(put 'ps-print-printer 'custom-loads '("lpr" "ps-print"))
|
||||
(put 'message-various 'custom-loads '("message"))
|
||||
(put 'term 'custom-loads '("terminal" "term"))
|
||||
(put 'gnus-summary-exit 'custom-loads '("gnus-sum" "gnus"))
|
||||
@ -245,6 +246,7 @@
|
||||
(put 'cperl-indentation-details 'custom-loads '("cperl-mode"))
|
||||
(put 'mail-extr 'custom-loads '("mail-extr"))
|
||||
(put 'double 'custom-loads '("double"))
|
||||
(put 'xml-lite 'custom-loads '("xml-lite"))
|
||||
(put 'imenu 'custom-loads '("imenu"))
|
||||
(put 'eshell-var 'custom-loads '("esh-var"))
|
||||
(put 'scribe 'custom-loads '("scribe"))
|
||||
@ -273,7 +275,7 @@
|
||||
(put 'generic-x 'custom-loads '("generic-x"))
|
||||
(put 'partial-completion 'custom-loads '("complete"))
|
||||
(put 'whitespace 'custom-loads '("whitespace"))
|
||||
(put 'maint 'custom-loads '("gulp" "lisp-mnt" "emacsbug"))
|
||||
(put 'maint 'custom-loads '("emacsbug" "gulp" "lisp-mnt"))
|
||||
(put 'pages 'custom-loads '("page-ext"))
|
||||
(put 'message-interface 'custom-loads '("message"))
|
||||
(put 'diary 'custom-loads '("calendar" "diary-lib"))
|
||||
@ -300,7 +302,7 @@
|
||||
(put 'apropos 'custom-loads '("apropos"))
|
||||
(put 'gomoku 'custom-loads '("gomoku"))
|
||||
(put 'eshell-pred 'custom-loads '("em-pred"))
|
||||
(put 'tools 'custom-loads '("add-log" "calculator" "compare-w" "diff-mode" "diff" "ediff" "elide-head" "emerge" "gud" "pcvs-defs" "smerge-mode" "speedbar" "tempo" "tooltip" "vc" "which-func" "copyright" "rcompile" "compile" "ebrowse" "etags" "glasses" "make-mode"))
|
||||
(put 'tools 'custom-loads '("add-log" "calculator" "compare-w" "diff-mode" "diff" "ediff" "elide-head" "emerge" "gud" "pcvs-defs" "smerge-mode" "speedbar" "tempo" "tooltip" "vc" "which-func" "rcompile" "copyright" "compile" "ebrowse" "etags" "glasses" "make-mode"))
|
||||
(put 'gnus-topic 'custom-loads '("gnus-topic"))
|
||||
(put 'sgml 'custom-loads '("sgml-mode"))
|
||||
(put 'keyboard 'custom-loads '("mule" "chistory" "type-break"))
|
||||
@ -359,7 +361,7 @@
|
||||
(put 'gnus-article-mime 'custom-loads '("gnus-art" "mm-uu"))
|
||||
(put 'emulations 'custom-loads '("crisp" "tpu-edt" "vip" "viper"))
|
||||
(put 'compression 'custom-loads '("jka-compr"))
|
||||
(put 'games 'custom-loads '("5x5" "bruce" "decipher" "dunnet" "fortune" "gametree" "gomoku" "handwrite" "hanoi" "landmark" "mpuz" "pong" "solitaire" "spook" "yow"))
|
||||
(put 'games 'custom-loads '("5x5" "bruce" "decipher" "dunnet" "fortune" "gametree" "gomoku" "handwrite" "hanoi" "landmark" "mpuz" "pong" "solitaire" "spook" "tetris" "yow"))
|
||||
(put 'nnmail-retrieve 'custom-loads '("nnmail"))
|
||||
(put 'gnus-duplicate 'custom-loads '("gnus-dup"))
|
||||
(put 'find-function 'custom-loads '("find-func"))
|
||||
@ -393,7 +395,8 @@
|
||||
(put 'change-log 'custom-loads '("add-log"))
|
||||
(put 'gnus-group-levels 'custom-loads '("gnus-group" "gnus-start" "gnus"))
|
||||
(put 'cperl 'custom-loads '("cperl-mode"))
|
||||
(put 'bs-appearance 'custom-loads '("bs" "button"))
|
||||
(put 'bs-appearance 'custom-loads '("bs"))
|
||||
(put 'nil 'custom-loads '("button"))
|
||||
(put 'pcmpl-cvs 'custom-loads '("pcmpl-cvs"))
|
||||
(put 'eshell-mode 'custom-loads '("esh-mode"))
|
||||
(put 'files 'custom-loads '("mule" "files" "autoinsert" "autorevert" "cus-edit" "filecache" "recentf" "shadow" "ange-ftp"))
|
||||
@ -420,7 +423,7 @@
|
||||
(put 'gnus-article-hiding 'custom-loads '("gnus-art" "gnus-sum"))
|
||||
(put 'vhdl-mode 'custom-loads '("vhdl-mode"))
|
||||
(put 'lpr 'custom-loads '("lpr"))
|
||||
(put 'ispell 'custom-loads '("ispell"))
|
||||
(put 'ispell 'custom-loads '("flyspell" "ispell"))
|
||||
(put 'auto-revert 'custom-loads '("autorevert"))
|
||||
(put 'advice 'custom-loads '("advice"))
|
||||
(put 'picture 'custom-loads '("picture"))
|
||||
@ -495,7 +498,7 @@
|
||||
(put 'reftex-index-support 'custom-loads '("reftex-vars"))
|
||||
(put 'pascal 'custom-loads '("pascal"))
|
||||
(put 'rmail-retrieve 'custom-loads '("rmail" "rmailsum"))
|
||||
(put 'data 'custom-loads '("text-mode" "arc-mode" "forms" "hexl" "jka-compr" "saveplace" "sort" "tar-mode" "time-stamp" "timeclock" "snmp-mode"))
|
||||
(put 'data 'custom-loads '("text-mode" "arc-mode" "forms" "hexl" "jka-compr" "saveplace" "sort" "tar-mode" "time-stamp" "snmp-mode" "timeclock"))
|
||||
(put 'mail 'custom-loads '("simple" "startup" "time" "gnus" "mail-utils" "mm-decode" "message" "imap" "starttls" "emacsbug" "feedmail" "mail-extr" "mail-hist" "mailalias" "metamail" "mh-e" "mspools" "rmail" "sendmail" "smtpmail" "supercite" "uce" "eudc-vars" "fortune"))
|
||||
(put 'paren-blinking 'custom-loads '("simple"))
|
||||
(put 'gnus-summary-sort 'custom-loads '("gnus-sum"))
|
||||
@ -682,12 +685,8 @@
|
||||
(custom-put-if-not 'elide-head 'group-documentation "Eliding copyright headers and the like in source files.")
|
||||
(custom-put-if-not 'ps-line-number-color 'custom-version "21.1")
|
||||
(custom-put-if-not 'ps-line-number-color 'standard-value t)
|
||||
(custom-put-if-not 'sgml-xml 'custom-version "21.2")
|
||||
(custom-put-if-not 'sgml-xml 'standard-value t)
|
||||
(custom-put-if-not 'confirm-kill-emacs 'custom-version "21.1")
|
||||
(custom-put-if-not 'confirm-kill-emacs 'standard-value t)
|
||||
(custom-put-if-not 'vc-rcs-checkout-switches 'custom-version "21.1")
|
||||
(custom-put-if-not 'vc-rcs-checkout-switches 'standard-value t)
|
||||
(custom-put-if-not 'change-log-conditionals-face 'custom-version "21.1")
|
||||
(custom-put-if-not 'change-log-conditionals-face 'group-documentation nil)
|
||||
(custom-put-if-not 'mail-source 'custom-version "21.1")
|
||||
@ -734,10 +733,16 @@ the tasks accomplished by such tools.")
|
||||
(custom-put-if-not 'ps-line-spacing 'standard-value t)
|
||||
(custom-put-if-not 'help-highlight-p 'custom-version "20.3")
|
||||
(custom-put-if-not 'help-highlight-p 'standard-value t)
|
||||
(custom-put-if-not 'ange-ftp-raw-login 'custom-version "21.3")
|
||||
(custom-put-if-not 'ange-ftp-raw-login 'standard-value t)
|
||||
(custom-put-if-not 'ps-paragraph-spacing 'custom-version "21.1")
|
||||
(custom-put-if-not 'ps-paragraph-spacing 'standard-value t)
|
||||
(custom-put-if-not 'auto-hscroll-mode 'custom-version "21.1")
|
||||
(custom-put-if-not 'auto-hscroll-mode 'standard-value t)
|
||||
(custom-put-if-not 'flyspell-incorrect-hook 'custom-version "21.1")
|
||||
(custom-put-if-not 'flyspell-incorrect-hook 'standard-value t)
|
||||
(custom-put-if-not 'mode-line-inactive 'custom-version "21.2")
|
||||
(custom-put-if-not 'mode-line-inactive 'group-documentation nil)
|
||||
(custom-put-if-not 'browse-url-mosaic-program 'custom-version "20.3")
|
||||
(custom-put-if-not 'browse-url-mosaic-program 'standard-value t)
|
||||
(custom-put-if-not 'vc-cvs-register-switches 'custom-version "21.1")
|
||||
@ -770,8 +775,6 @@ the tasks accomplished by such tools.")
|
||||
(custom-put-if-not 'ps-print-footer-frame 'standard-value t)
|
||||
(custom-put-if-not 'tildify 'custom-version "21.1")
|
||||
(custom-put-if-not 'tildify 'group-documentation "Adding missing hard spaces or other text fragments into texts.")
|
||||
(custom-put-if-not 'vc-rcs-checkin-switches 'custom-version "21.1")
|
||||
(custom-put-if-not 'vc-rcs-checkin-switches 'standard-value t)
|
||||
(custom-put-if-not 'normal-erase-is-backspace 'custom-version "21.1")
|
||||
(custom-put-if-not 'normal-erase-is-backspace 'standard-value t)
|
||||
(custom-put-if-not 'gnus-article-banner-alist 'custom-version "21.1")
|
||||
@ -823,8 +826,6 @@ as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>.")
|
||||
(custom-put-if-not 'gnus-auto-expirable-marks 'standard-value t)
|
||||
(custom-put-if-not 'sql-interbase-options 'custom-version "20.8")
|
||||
(custom-put-if-not 'sql-interbase-options 'standard-value t)
|
||||
(custom-put-if-not 'automatic-hscrolling 'custom-version "21.1")
|
||||
(custom-put-if-not 'automatic-hscrolling 'standard-value t)
|
||||
(custom-put-if-not 'custom-buffer-done-function 'custom-version "21.1")
|
||||
(custom-put-if-not 'custom-buffer-done-function 'standard-value t)
|
||||
(custom-put-if-not 'gnus-article-mime-match-handle-function 'custom-version "21.1")
|
||||
@ -833,6 +834,8 @@ as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>.")
|
||||
(custom-put-if-not 'sql-db2-options 'standard-value t)
|
||||
(custom-put-if-not 'cwarn 'custom-version "21.1")
|
||||
(custom-put-if-not 'cwarn 'group-documentation "Highlight suspicious C and C++ constructions.")
|
||||
(custom-put-if-not 'sgml-xml-mode 'custom-version "21.2")
|
||||
(custom-put-if-not 'sgml-xml-mode 'standard-value t)
|
||||
(custom-put-if-not 'message-buffer-naming-style 'custom-version "21.1")
|
||||
(custom-put-if-not 'message-buffer-naming-style 'standard-value t)
|
||||
(custom-put-if-not 'ps-footer-font-size 'custom-version "21.1")
|
||||
@ -1041,6 +1044,8 @@ as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>.")
|
||||
(custom-put-if-not 'keyboard-coding-system 'standard-value t)
|
||||
(custom-put-if-not 'sql-sybase-options 'custom-version "20.8")
|
||||
(custom-put-if-not 'sql-sybase-options 'standard-value t)
|
||||
(custom-put-if-not 'vc-cvs-sticky-tag-display 'custom-version "21.3")
|
||||
(custom-put-if-not 'vc-cvs-sticky-tag-display 'standard-value t)
|
||||
(custom-put-if-not 'gnus-read-newsrc-file 'custom-version "21.1")
|
||||
(custom-put-if-not 'gnus-read-newsrc-file 'standard-value t)
|
||||
(custom-put-if-not 'recentf 'custom-version "21.1")
|
||||
@ -1137,6 +1142,8 @@ as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>.")
|
||||
(custom-put-if-not 'vc-dired-terse-display 'standard-value t)
|
||||
(custom-put-if-not 'server-kill-new-buffers 'custom-version "21.1")
|
||||
(custom-put-if-not 'server-kill-new-buffers 'standard-value t)
|
||||
(custom-put-if-not 'vc-cvs-sticky-date-format-string 'custom-version "21.3")
|
||||
(custom-put-if-not 'vc-cvs-sticky-date-format-string 'standard-value t)
|
||||
(custom-put-if-not 'speedbar-hide-button-brackets-flag 'custom-version "21.1")
|
||||
(custom-put-if-not 'speedbar-hide-button-brackets-flag 'standard-value t)
|
||||
(custom-put-if-not 'delphi 'custom-version "21.1")
|
||||
@ -1144,7 +1151,7 @@ as a PDF file <URL:http://www.ecma.ch/ecma1/STAND/ECMA-048.HTM>.")
|
||||
(custom-put-if-not 'eval-expression-print-level 'custom-version "21.1")
|
||||
(custom-put-if-not 'eval-expression-print-level 'standard-value t)
|
||||
|
||||
(defvar custom-versions-load-alist '((20.3 "xscheme") ("20.3.3" "dos-vars") (21.1 "ange-ftp") ("21.3" "replace") ("20.4" "files" "help" "sh-script" "compile") (21.3 "ange-ftp") ("21.2" "add-log" "sgml-mode") ("20.3" "desktop" "easymenu" "hscroll" "dabbrev" "ffap" "rmail" "paren" "mailabbrev" "frame" "uce" "mouse" "diary-lib" "sendmail" "simple" "debug" "hexl" "vcursor" "vc" "compile" "etags" "help-mode" "browse-url" "add-log" "find-func" "cus-edit" "replace") ("21.1" "server" "debug" "rmailedit" "dabbrev" "isearch" "gnus-start" "mule" "hideshow" "sendmail" "paths" "sgml-mode" "net-utils" "cperl-mode" "rmail" "font-lock" "gnus-nocem" "vc-hooks" "paren" "faces" "fortran" "vc" "etags" "cus-edit" "frame" "vc-sccs" "gnus-group" "gnus-sum" "add-log" "find-func" "wid-edit" "smtpmail" "vc-rcs" "files" "nnmail" "message" "ps-print" "vc-cvs" "simple" "gnus-agent" "flyspell" "gnus-art" "browse-url" "speedbar") ("20.8" "sql"))
|
||||
(defvar custom-versions-load-alist '((20.3 "xscheme") ("20.3.3" "dos-vars") (21.1 "ange-ftp") ("20.4" "files" "help" "sh-script" "compile") ("21.2" "add-log" "sgml-mode") ("21.3" "vc-cvs" "replace" "ange-ftp") (21.3 "ange-ftp") ("20.3" "desktop" "easymenu" "hscroll" "dabbrev" "ffap" "rmail" "paren" "mailabbrev" "frame" "uce" "mouse" "diary-lib" "sendmail" "simple" "debug" "hexl" "vcursor" "vc" "compile" "etags" "help-mode" "browse-url" "add-log" "find-func" "cus-edit" "replace") ("21.1" "server" "debug" "rmailedit" "dabbrev" "isearch" "gnus-start" "mule" "hideshow" "sendmail" "paths" "sgml-mode" "net-utils" "cperl-mode" "rmail" "font-lock" "gnus-nocem" "vc-hooks" "paren" "faces" "vc-rcs" "fortran" "vc" "etags" "cus-edit" "vc-sccs" "gnus-group" "gnus-sum" "add-log" "find-func" "frame" "wid-edit" "smtpmail" "files" "nnmail" "message" "ps-print" "vc-cvs" "simple" "gnus-agent" "flyspell" "gnus-art" "browse-url" "speedbar") ("20.8" "sql"))
|
||||
"For internal use by custom.")
|
||||
|
||||
(provide 'cus-load)
|
||||
|
@ -783,7 +783,10 @@ one optional arguments, diff-number to refine.")
|
||||
|
||||
;; Interface to ediff-make-fine-diffs. Checks for auto-refine limit, etc.
|
||||
(defun ediff-install-fine-diff-if-necessary (n)
|
||||
(cond ((eq ediff-auto-refine 'on)
|
||||
(cond ((and (eq ediff-auto-refine 'on)
|
||||
ediff-use-faces
|
||||
(not (eq ediff-highlighting-style 'off))
|
||||
(not (eq ediff-highlighting-style 'ascii)))
|
||||
(if (and
|
||||
(> ediff-auto-refine-limit
|
||||
(- (ediff-get-diff-posn 'A 'end n)
|
||||
@ -1215,32 +1218,38 @@ delimiter regions"))
|
||||
(defvar ediff-forward-word-function 'ediff-forward-word
|
||||
"*Function to call to move to the next word.
|
||||
Used for splitting difference regions into individual words.")
|
||||
(make-variable-buffer-local 'ediff-forward-word-function)
|
||||
|
||||
(defvar ediff-whitespace " \n\t\f"
|
||||
"*Characters constituting white space.
|
||||
These characters are ignored when differing regions are split into words.")
|
||||
(make-variable-buffer-local 'ediff-whitespace)
|
||||
|
||||
(defvar ediff-word-1
|
||||
(ediff-cond-compile-for-xemacs-or-emacs "a-zA-Z---_" "-[:word:]_")
|
||||
"*Characters that constitute words of type 1.
|
||||
More precisely, [ediff-word-1] is a regexp that matches type 1 words.
|
||||
See `ediff-forward-word' for more details.")
|
||||
(make-variable-buffer-local 'ediff-word-1)
|
||||
|
||||
(defvar ediff-word-2 "0-9.,"
|
||||
"*Characters that constitute words of type 2.
|
||||
More precisely, [ediff-word-2] is a regexp that matches type 2 words.
|
||||
See `ediff-forward-word' for more details.")
|
||||
(make-variable-buffer-local 'ediff-word-2)
|
||||
|
||||
(defvar ediff-word-3 "`'?!:;\"{}[]()"
|
||||
"*Characters that constitute words of type 3.
|
||||
More precisely, [ediff-word-3] is a regexp that matches type 3 words.
|
||||
See `ediff-forward-word' for more details.")
|
||||
(make-variable-buffer-local 'ediff-word-3)
|
||||
|
||||
(defvar ediff-word-4
|
||||
(concat "^" ediff-word-1 ediff-word-2 ediff-word-3 ediff-whitespace)
|
||||
"*Characters that constitute words of type 4.
|
||||
More precisely, [ediff-word-4] is a regexp that matches type 4 words.
|
||||
See `ediff-forward-word' for more details.")
|
||||
(make-variable-buffer-local 'ediff-word-4)
|
||||
|
||||
;; Split region along word boundaries. Each word will be on its own line.
|
||||
;; Output to buffer out-buffer.
|
||||
|
@ -78,7 +78,8 @@ that Ediff doesn't know about.")
|
||||
(ediff-force-faces)
|
||||
((ediff-color-display-p))
|
||||
(ediff-emacs-p (memq (ediff-device-type) '(pc)))
|
||||
(ediff-xemacs-p (memq (ediff-device-type) '(tty pc)))))
|
||||
(ediff-xemacs-p (memq (ediff-device-type) '(tty pc)))
|
||||
))
|
||||
|
||||
;; toolbar support for emacs hasn't been implemented in ediff
|
||||
(defun ediff-has-toolbar-support-p ()
|
||||
@ -289,6 +290,9 @@ It needs to be killed when we quit the session.")
|
||||
ediff-merge-revisions-with-ancestor)))
|
||||
(ediff-defvar-local ediff-merge-job nil "")
|
||||
|
||||
(defmacro ediff-patch-job ()
|
||||
`(eq ediff-job-name 'epatch))
|
||||
|
||||
(defmacro ediff-merge-with-ancestor-job ()
|
||||
`(memq
|
||||
ediff-job-name
|
||||
@ -630,11 +634,6 @@ shown in brighter colors."
|
||||
:type 'boolean
|
||||
:group 'ediff-highlighting)
|
||||
|
||||
;; A var local to each control panel buffer. Indicates highlighting style
|
||||
;; in effect for this buffer: `face', `ascii', nil -- temporarily
|
||||
;; unhighlighted, `off' -- turned off \(on a dumb terminal only\).
|
||||
(ediff-defvar-local ediff-highlighting-style nil "")
|
||||
|
||||
|
||||
;; The suffix of the control buffer name.
|
||||
(ediff-defvar-local ediff-control-buffer-suffix nil "")
|
||||
@ -809,6 +808,14 @@ to temp files when Ediff needs to find fine differences."
|
||||
(error nil)))
|
||||
|
||||
|
||||
;; A var local to each control panel buffer. Indicates highlighting style
|
||||
;; in effect for this buffer: `face', `ascii',
|
||||
;; `off' -- turned off \(on a dumb terminal only\).
|
||||
(ediff-defvar-local ediff-highlighting-style
|
||||
(if (and (ediff-has-face-support-p) ediff-use-faces) 'face 'ascii)
|
||||
"")
|
||||
|
||||
|
||||
(if (ediff-has-face-support-p)
|
||||
(ediff-cond-compile-for-xemacs-or-emacs
|
||||
(progn ; xemacs
|
||||
|
@ -40,17 +40,25 @@
|
||||
;; 3. Provide a list of pairs or triples of file names (or buffers,
|
||||
;; depending on the particular Ediff operation you want to invoke)
|
||||
;; in the following format:
|
||||
;; (descriptor-header (nil nil (obj1 nil) (obj2 nil) (obj3 nil))
|
||||
;; (HEADER (nil nil (obj1 nil) (obj2 nil) (obj3 nil))
|
||||
;; (...) ...)
|
||||
;; The function ediff-make-new-meta-list-element can be used to create
|
||||
;; 2nd and subsequent elements of that list.
|
||||
;; Actually, the format of this list is pretty much up to the
|
||||
;; developer. The only thing is that it must be a list of lists,
|
||||
;; and the first list must describe the meta session, and subsequent
|
||||
;; elements must describe individual sessions.
|
||||
;; This descriptor-header must be a list of SIX elements (nil or
|
||||
;; string). The function ediff-redraw-registry-buffer displays the
|
||||
;; 2nd and subsequent elements of that list (i.e., after the
|
||||
;; description header). See ediff-make-new-meta-list-element for the
|
||||
;; explanation of the two nil placeholders in such elements.
|
||||
;;
|
||||
;; There is API for extracting the components of the members of the
|
||||
;; above list. Search for `API for ediff-meta-list' for details.
|
||||
;;
|
||||
;; HEADER must be a list of SIX elements (nil or string):
|
||||
;; (regexp metaobj1 metaobj2 metaobj3 merge-save-buffer
|
||||
;; comparison-function)
|
||||
;; The function ediff-redraw-registry-buffer displays the
|
||||
;; 1st - 4th of these in the registry buffer.
|
||||
;; For some jobs some of the members of the header might be nil.
|
||||
;; The meaning of metaobj1, metaobj2, and metaobj3 depend on the job.
|
||||
;; Typically these are directories where the files to be compared are
|
||||
;; found.
|
||||
;; Also, keep in mind that the function ediff-prepare-meta-buffer
|
||||
;; (which see) prepends the session group buffer to the descriptor, so
|
||||
;; the descriptor becomes 7-long.
|
||||
@ -61,12 +69,16 @@
|
||||
;; to any of Ediff major entries (such as ediff-files, epatch, etc.).
|
||||
;; See how this is done in ediff-filegroup-action.
|
||||
;;
|
||||
;; Session descriptions are of the form (obj1 obj2 obj3), which
|
||||
;; describe objects relevant to the session. Usually they are names of
|
||||
;; files, but sometimes they may be other things. For instance, obj3
|
||||
;; is nil for jobs that involve only two files. For patch jobs, obj2
|
||||
;; and obj3 are markers that specify the patch corresponding to the
|
||||
;; file (whose name is obj1).
|
||||
;; Session descriptions are of the form
|
||||
;; (nil nil (obj1 . nil) (obj2 . nil) (obj3 . nil))
|
||||
;; which describe the objects relevant to the session.
|
||||
;; Use ediff-make-new-meta-list-element to create these things.
|
||||
;; Usually obj1/2/3 are names of files, but they may also be other
|
||||
;; things for some jobs. For instance, obj3 is nil for jobs that
|
||||
;; involve only two files. For patch jobs, obj2 and obj3 are markers
|
||||
;; that specify the patch corresponding to the file
|
||||
;; (whose name is obj1).
|
||||
;; The nil's are placeholders, which are used internally by ediff.
|
||||
;; 4. Write a function that makes a call to ediff-prepare-meta-buffer
|
||||
;; passing all this info.
|
||||
;; You may be able to use ediff-directories-internal as a template.
|
||||
@ -278,6 +290,8 @@ buffers."
|
||||
(nth 3 elt))
|
||||
(defsubst ediff-get-session-objC (elt)
|
||||
(nth 4 elt))
|
||||
;; Take the "name" component of the object into acount. ObjA/C/B is of the form
|
||||
;; (name . equality-indicator)
|
||||
(defsubst ediff-get-session-objA-name (elt)
|
||||
(car (nth 2 elt)))
|
||||
(defsubst ediff-get-session-objB-name (elt)
|
||||
@ -293,17 +307,27 @@ buffers."
|
||||
;; Create a new element for the meta list out of obj1/2/3, which usually are
|
||||
;; files
|
||||
;;
|
||||
;; The first nil in such an is later replaced with the session buffer. The
|
||||
;; second nil is reserved for session status.
|
||||
;; The first nil in such an element is later replaced with the session buffer.
|
||||
;; The second nil is reserved for session status.
|
||||
;;
|
||||
;; Also, session objects A/B/C are turned into lists of the form (obj nil).
|
||||
;; This nill is a placeholder for eq-indicator. It is either nil or =.
|
||||
;; This nil is a placeholder for eq-indicator. It is either nil or =.
|
||||
;; If it is discovered that this file is = to some other
|
||||
;; file in the same session, eq-indicator is changed to `='.
|
||||
;; Curently, the eq-indicator is used only for 2 and 3-file jobs.
|
||||
(defun ediff-make-new-meta-list-element (obj1 obj2 obj3)
|
||||
(list nil nil (list obj1 nil) (list obj2 nil) (list obj3 nil)))
|
||||
|
||||
;; Constructs a meta list header.
|
||||
;; OBJA, OBJB, OBJC are usually directories involved, but can be different for
|
||||
;; different jobs. For instance, multifile patch has only OBJA, which is the
|
||||
;; patch buffer.
|
||||
(defun ediff-make-new-meta-list-header (regexp
|
||||
objA objB objC
|
||||
merge-auto-store-dir
|
||||
comparison-func)
|
||||
(list regexp objA objB objC merge-auto-store-dir comparison-func))
|
||||
|
||||
;; The activity marker is either or + (active session, i.e., ediff is currently
|
||||
;; run in it), or - (finished session, i.e., we've ran ediff in it and then
|
||||
;; exited). Return nil, if session is neither active nor finished
|
||||
@ -485,18 +509,31 @@ behavior."
|
||||
;; If a file is a directory in dir1 but not dir2 (or vice versa), it is not
|
||||
;; included in the intersection. However, a regular file that is a dir in dir3
|
||||
;; is included, since dir3 files are supposed to be ancestors for merging.
|
||||
;; Returns a list of the form:
|
||||
;; (DIFF-LIST META-HEADER (f1 f2 f3) (f1 f2 f3) ...)
|
||||
;; dir3, f3 can be nil if intersecting only 2 directories.
|
||||
;; If COMPARISON-FUNC is given, use it. Otherwise, use string=
|
||||
;;
|
||||
;; Returns a list of the form:
|
||||
;; (COMMON-PART DIFF-LIST)
|
||||
;; COMMON-PART is car and DIFF-LIST is cdr.
|
||||
;;
|
||||
;; COMMON-PART is of the form:
|
||||
;; (META-HEADER (f1 f2 f3) (f1 f2 f3) ...)
|
||||
;; f3 can be nil if intersecting only 2 directories.
|
||||
;; Each triple (f1 f2 f3) represents the files to be compared in the
|
||||
;; corresponding ediff subsession.
|
||||
;;
|
||||
;; DIFF-LIST is of the form:
|
||||
;; (META-HEADER (file . num) (file . num)...)
|
||||
;; where num encodes the set of dirs where the file is found:
|
||||
;; 2 - only dir1; 3 - only dir2; 5 - only dir3; 6 - dir1&2; 10 - dir1&3; etc.
|
||||
;; META-HEADER is of the form
|
||||
;; It contains the meta info about this ediff operation
|
||||
;; META-HEADER:
|
||||
;; Contains the meta info about this ediff operation
|
||||
;; (regexp dir1 dir2 dir3 merge-auto-store-dir comparison-func)
|
||||
;; Later the meta-buffer is prepended to this list.
|
||||
;;
|
||||
;; Some operations might use a different meta header. For instance,
|
||||
;; ediff-multifile-patch doesn't have dir2 and dir3, and regexp,
|
||||
;; comparison-func don't apply.
|
||||
;;
|
||||
(defun ediff-intersect-directories (jobname
|
||||
regexp dir1 dir2
|
||||
&optional
|
||||
@ -572,19 +609,19 @@ behavior."
|
||||
difflist)
|
||||
(setq difflist (cons
|
||||
;; diff metalist header
|
||||
(list regexp
|
||||
auxdir1 auxdir2 auxdir3
|
||||
merge-autostore-dir
|
||||
comparison-func)
|
||||
(ediff-make-new-meta-list-header regexp
|
||||
auxdir1 auxdir2 auxdir3
|
||||
merge-autostore-dir
|
||||
comparison-func)
|
||||
difflist))
|
||||
|
||||
(setq common-part
|
||||
(cons
|
||||
;; metalist header
|
||||
(list regexp
|
||||
auxdir1 auxdir2 auxdir3
|
||||
merge-autostore-dir
|
||||
comparison-func)
|
||||
(ediff-make-new-meta-list-header regexp
|
||||
auxdir1 auxdir2 auxdir3
|
||||
merge-autostore-dir
|
||||
comparison-func)
|
||||
(mapcar
|
||||
(lambda (elt)
|
||||
(ediff-make-new-meta-list-element
|
||||
@ -652,7 +689,9 @@ behavior."
|
||||
(cons
|
||||
;; header -- has 6 elements. Meta buffer is prepended later by
|
||||
;; ediff-prepare-meta-buffer
|
||||
(list regexp auxdir1 nil nil merge-autostore-dir nil)
|
||||
(ediff-make-new-meta-list-header regexp
|
||||
auxdir1 nil nil
|
||||
merge-autostore-dir nil)
|
||||
(mapcar (lambda (elt) (ediff-make-new-meta-list-element
|
||||
(concat auxdir1 elt) nil nil))
|
||||
common))
|
||||
@ -2222,7 +2261,7 @@ If this is a session registry buffer then just bury it."
|
||||
(or (ediff-buffer-live-p session-buf) ; either an active patch session
|
||||
(null session-buf) ; or it is a virgin session
|
||||
(error
|
||||
"Patch has been already applied to this file--cannot be repeated!"))
|
||||
"Patch has already been applied to this file -- can't repeat!"))
|
||||
|
||||
(ediff-with-current-buffer meta-patchbuf
|
||||
(save-restriction
|
||||
|
@ -44,6 +44,8 @@
|
||||
(let ((load-path (cons (expand-file-name ".") load-path)))
|
||||
(or (featurep 'ediff-init)
|
||||
(load "ediff-init.el" nil nil 'nosuffix))
|
||||
(or (featurep 'ediff-mult)
|
||||
(load "ediff-mult.el" nil nil 'nosuffix))
|
||||
(or (featurep 'ediff)
|
||||
(load "ediff.el" nil nil 'nosuffix))
|
||||
))
|
||||
@ -181,11 +183,21 @@ program."
|
||||
count)))
|
||||
|
||||
;; Scan BUF (which is supposed to contain a patch) and make a list of the form
|
||||
;; ((filename1 marker1 marker2) (filename2 marker1 marker2) ...)
|
||||
;; where filenames are files to which patch would have applied the patch;
|
||||
;; marker1 delimits the beginning of the corresponding patch and marker2 does
|
||||
;; it for the end. This list is then assigned to ediff-patch-map.
|
||||
;; Returns the number of elements in the list ediff-patch-map
|
||||
;; ((nil nil filename-spec1 marker1 marker2)
|
||||
;; (nil nil filename-spec2 marker1 marker2) ...)
|
||||
;; where filename-spec[12] are files to which the `patch' program would
|
||||
;; have applied the patch.
|
||||
;; nin, nil are placeholders. See ediff-make-new-meta-list-element in
|
||||
;; ediff-meta.el for the explanations.
|
||||
;; In the beginning we don't know exactly which files need to be patched.
|
||||
;; We usually come up with two candidates and ediff-file-name-sans-prefix
|
||||
;; resolves this later.
|
||||
;;
|
||||
;; The marker `marker1' delimits the beginning of the corresponding patch and
|
||||
;; `marker2' does it for the end.
|
||||
;; The result of ediff-map-patch-buffer is a list, which is then assigned
|
||||
;; to ediff-patch-map.
|
||||
;; The function returns the number of elements in the list ediff-patch-map
|
||||
(defun ediff-map-patch-buffer (buf)
|
||||
(ediff-with-current-buffer buf
|
||||
(let ((count 0)
|
||||
@ -210,7 +222,8 @@ program."
|
||||
end2 (or (match-end 3) (match-end 5)))
|
||||
;; possible-file-names is holding the new file names until we
|
||||
;; insert the old file name in the patch map
|
||||
;; It is a pair (filename from 1st header line . fn from 2nd line)
|
||||
;; It is a pair
|
||||
;; (filename-from-1st-header-line . fn from 2nd line)
|
||||
(setq possible-file-names
|
||||
(cons (if (and beg1 end1)
|
||||
(buffer-substring beg1 end1)
|
||||
@ -227,14 +240,19 @@ program."
|
||||
(goto-char mark2-end)
|
||||
|
||||
(if filenames
|
||||
(setq patch-map (cons (list filenames mark1 mark2) patch-map)))
|
||||
(setq patch-map
|
||||
(cons (ediff-make-new-meta-list-element
|
||||
filenames mark1 mark2)
|
||||
patch-map)))
|
||||
(setq mark1 mark2
|
||||
mark1-end mark2-end
|
||||
filenames possible-file-names))
|
||||
(setq opoint (point)
|
||||
count (1+ count))))
|
||||
(setq mark2 (point-max-marker)
|
||||
patch-map (cons (list possible-file-names mark1 mark2) patch-map))
|
||||
patch-map (cons (ediff-make-new-meta-list-element
|
||||
possible-file-names mark1 mark2)
|
||||
patch-map))
|
||||
(setq ediff-patch-map (nreverse patch-map))
|
||||
count)))
|
||||
|
||||
@ -254,44 +272,53 @@ program."
|
||||
;; directory part of filename
|
||||
(file-name-as-directory filename)
|
||||
(file-name-directory filename)))
|
||||
;; Filename-spec is objA; at this point it is represented as
|
||||
;; (file1 . file2). We get it using ediff-get-session-objA
|
||||
;; directory part of the first file in the patch
|
||||
(base-dir1 (file-name-directory (car (car (car ediff-patch-map)))))
|
||||
(base-dir2 (file-name-directory (cdr (car (car ediff-patch-map)))))
|
||||
(base-dir1 (file-name-directory
|
||||
(car (ediff-get-session-objA-name (car ediff-patch-map)))))
|
||||
;; directory part of the 2nd file in the patch
|
||||
(base-dir2 (file-name-directory
|
||||
(cdr (ediff-get-session-objA-name (car ediff-patch-map)))))
|
||||
)
|
||||
|
||||
;; chop off base-dirs
|
||||
(mapcar (lambda (triple)
|
||||
(or (string= (car (car triple)) "/dev/null")
|
||||
(setcar (car triple)
|
||||
(mapcar (lambda (session-info)
|
||||
(let ((proposed-file-names
|
||||
(ediff-get-session-objA-name session-info)))
|
||||
(or (string= (car proposed-file-names) "/dev/null")
|
||||
(setcar proposed-file-names
|
||||
(ediff-file-name-sans-prefix
|
||||
(car proposed-file-names) base-dir1)))
|
||||
(or (string=
|
||||
(cdr proposed-file-names) "/dev/null")
|
||||
(setcdr proposed-file-names
|
||||
(ediff-file-name-sans-prefix
|
||||
(car (car triple)) base-dir1)))
|
||||
(or (string= (cdr (car triple)) "/dev/null")
|
||||
(setcdr (car triple)
|
||||
(ediff-file-name-sans-prefix
|
||||
(cdr (car triple)) base-dir2)))
|
||||
)
|
||||
(cdr proposed-file-names) base-dir2)))
|
||||
))
|
||||
ediff-patch-map)
|
||||
|
||||
;; take the given file name into account
|
||||
(or (file-directory-p filename)
|
||||
(string= "/dev/null" filename)
|
||||
(progn
|
||||
(setcar (car ediff-patch-map)
|
||||
(cons (file-name-nondirectory filename)
|
||||
(file-name-nondirectory filename)))))
|
||||
(setcar (ediff-get-session-objA (car ediff-patch-map))
|
||||
(cons (file-name-nondirectory filename)
|
||||
(file-name-nondirectory filename))))
|
||||
|
||||
;; prepend actual-dir
|
||||
(mapcar (lambda (triple)
|
||||
(if (and (string-match "^/null/" (car (car triple)))
|
||||
(string-match "^/null/" (cdr (car triple))))
|
||||
;; couldn't strip base-dir1 and base-dir2
|
||||
;; hence, something wrong
|
||||
(progn
|
||||
(with-output-to-temp-buffer ediff-msg-buffer
|
||||
(ediff-with-current-buffer standard-output
|
||||
(fundamental-mode))
|
||||
(princ
|
||||
(format "
|
||||
(mapcar (lambda (session-info)
|
||||
(let ((proposed-file-names
|
||||
(ediff-get-session-objA-name session-info)))
|
||||
(if (and (string-match "^/null/" (car proposed-file-names))
|
||||
(string-match "^/null/" (cdr proposed-file-names)))
|
||||
;; couldn't strip base-dir1 and base-dir2
|
||||
;; hence, something is wrong
|
||||
(progn
|
||||
(with-output-to-temp-buffer ediff-msg-buffer
|
||||
(ediff-with-current-buffer standard-output
|
||||
(fundamental-mode))
|
||||
(princ
|
||||
(format "
|
||||
The patch file contains a context diff for
|
||||
%s
|
||||
%s
|
||||
@ -302,47 +329,52 @@ please enter it now.
|
||||
If you don't know and still would like to apply patches to
|
||||
other files, enter /dev/null
|
||||
"
|
||||
(substring (car (car triple)) 6)
|
||||
(substring (cdr (car triple)) 6))))
|
||||
(let ((directory t)
|
||||
user-file)
|
||||
(while directory
|
||||
(setq user-file
|
||||
(read-file-name
|
||||
"Please enter file name: "
|
||||
actual-dir actual-dir t))
|
||||
(if (not (file-directory-p user-file))
|
||||
(setq directory nil)
|
||||
(setq directory t)
|
||||
(beep)
|
||||
(message "%s is a directory" user-file)
|
||||
(sit-for 2)))
|
||||
(setcar triple (cons user-file user-file))))
|
||||
(setcar (car triple)
|
||||
(expand-file-name
|
||||
(concat actual-dir (car (car triple)))))
|
||||
(setcdr (car triple)
|
||||
(expand-file-name
|
||||
(concat actual-dir (cdr (car triple))))))
|
||||
)
|
||||
(substring (car proposed-file-names) 6)
|
||||
(substring (cdr proposed-file-names) 6))))
|
||||
(let ((directory t)
|
||||
user-file)
|
||||
(while directory
|
||||
(setq user-file
|
||||
(read-file-name
|
||||
"Please enter file name: "
|
||||
actual-dir actual-dir t))
|
||||
(if (not (file-directory-p user-file))
|
||||
(setq directory nil)
|
||||
(setq directory t)
|
||||
(beep)
|
||||
(message "%s is a directory" user-file)
|
||||
(sit-for 2)))
|
||||
(setcar (ediff-get-session-objA session-info)
|
||||
(cons user-file user-file))))
|
||||
(setcar proposed-file-names
|
||||
(expand-file-name
|
||||
(concat actual-dir (car proposed-file-names))))
|
||||
(setcdr proposed-file-names
|
||||
(expand-file-name
|
||||
(concat actual-dir (cdr proposed-file-names)))))
|
||||
))
|
||||
ediff-patch-map)
|
||||
;; check for the shorter existing file in each pair and discard the other
|
||||
;; one
|
||||
(mapcar (lambda (triple)
|
||||
(let* ((file1 (car (car triple)))
|
||||
(file2 (cdr (car triple)))
|
||||
(mapcar (lambda (session-info)
|
||||
(let* ((file1 (car (ediff-get-session-objA-name session-info)))
|
||||
(file2 (cdr (ediff-get-session-objA-name session-info)))
|
||||
(session-file-object
|
||||
(ediff-get-session-objA session-info))
|
||||
(f1-exists (file-exists-p file1))
|
||||
(f2-exists (file-exists-p file2)))
|
||||
(cond
|
||||
((and (< (length file2) (length file1))
|
||||
f2-exists)
|
||||
(setcar triple file2))
|
||||
;; replace file-pair with the winning file2
|
||||
(setcar session-file-object file2))
|
||||
((and (< (length file1) (length file2))
|
||||
f1-exists)
|
||||
(setcar triple file1))
|
||||
;; replace file-pair with the winning file1
|
||||
(setcar session-file-object file1))
|
||||
((and f1-exists f2-exists
|
||||
(string= file1 file2))
|
||||
(setcar triple file1))
|
||||
(setcar session-file-object file1))
|
||||
((and f1-exists f2-exists)
|
||||
(with-output-to-temp-buffer ediff-msg-buffer
|
||||
(ediff-with-current-buffer standard-output
|
||||
@ -359,11 +391,11 @@ Please advice:
|
||||
Type `n' to use %s as the target.
|
||||
"
|
||||
file1 file2 file2 file1)))
|
||||
(setcar triple
|
||||
(setcar session-file-object
|
||||
(if (y-or-n-p (format "Use %s ? " file2))
|
||||
file2 file1)))
|
||||
(f2-exists (setcar triple file2))
|
||||
(f1-exists (setcar triple file1))
|
||||
(f2-exists (setcar session-file-object file2))
|
||||
(f1-exists (setcar session-file-object file1))
|
||||
(t
|
||||
(with-output-to-temp-buffer ediff-msg-buffer
|
||||
(ediff-with-current-buffer standard-output
|
||||
@ -392,7 +424,7 @@ are two possible targets for this patch. However, these files do not exist."
|
||||
(beep)
|
||||
(message "%s is a directory" target)
|
||||
(sit-for 2)))
|
||||
(setcar triple target))))))
|
||||
(setcar session-file-object target))))))
|
||||
ediff-patch-map)
|
||||
))
|
||||
|
||||
@ -491,9 +523,14 @@ optional argument, then use it."
|
||||
(ediff-patch-file-internal
|
||||
patch-buf
|
||||
(if (and ediff-patch-map
|
||||
(not (string-match "^/dev/null" (car (car ediff-patch-map))))
|
||||
(> (length (car (car ediff-patch-map))) 1))
|
||||
(car (car ediff-patch-map))
|
||||
(not (string-match
|
||||
"^/dev/null"
|
||||
;; this is the file to patch
|
||||
(ediff-get-session-objA-name (car ediff-patch-map))))
|
||||
(> (length
|
||||
(ediff-get-session-objA-name (car ediff-patch-map)))
|
||||
1))
|
||||
(ediff-get-session-objA-name (car ediff-patch-map))
|
||||
filename)
|
||||
startup-hooks)
|
||||
(ediff-multi-patch-internal patch-buf startup-hooks))
|
||||
@ -739,8 +776,13 @@ you can still examine the changes via M-x ediff-files"
|
||||
(setq meta-buf (ediff-prepare-meta-buffer
|
||||
'ediff-filegroup-action
|
||||
(ediff-with-current-buffer patch-buf
|
||||
;; nil replaces a regular expression
|
||||
(cons (list nil (format "%S" patch-buf))
|
||||
(cons (ediff-make-new-meta-list-header
|
||||
nil ; regexp
|
||||
(format "%S" patch-buf) ; obj A
|
||||
nil nil ; objects B,C
|
||||
nil ; merge-auto-store-dir
|
||||
nil ; comparison-func
|
||||
)
|
||||
ediff-patch-map))
|
||||
"*Ediff Session Group Panel"
|
||||
'ediff-redraw-directory-group-buffer
|
||||
|
@ -233,7 +233,7 @@ to invocation.")
|
||||
(define-key ediff-mode-map "wb" 'ediff-save-buffer)
|
||||
(define-key ediff-mode-map "wd" 'ediff-save-buffer)
|
||||
(define-key ediff-mode-map "=" 'ediff-inferior-compare-regions)
|
||||
(if (fboundp 'ediff-show-patch-diagnostics)
|
||||
(if (and (fboundp 'ediff-show-patch-diagnostics) (ediff-patch-job))
|
||||
(define-key ediff-mode-map "P" 'ediff-show-patch-diagnostics))
|
||||
(if ediff-3way-job
|
||||
(progn
|
||||
@ -910,36 +910,40 @@ Does nothing if file-A and file-B are in different frames."
|
||||
On a dumb terminal, switches between ASCII highlighting and no highlighting."
|
||||
(interactive)
|
||||
(ediff-barf-if-not-control-buffer)
|
||||
(if (not (ediff-has-face-support-p))
|
||||
(if (eq ediff-highlighting-style 'ascii)
|
||||
(progn
|
||||
(message "ASCII highlighting flags removed")
|
||||
(ediff-unselect-and-select-difference ediff-current-difference
|
||||
'unselect-only)
|
||||
(setq ediff-highlighting-style 'off))
|
||||
(ediff-unselect-and-select-difference ediff-current-difference
|
||||
'select-only))
|
||||
(ediff-unselect-and-select-difference ediff-current-difference
|
||||
'unselect-only)
|
||||
;; cycle through highlighting
|
||||
(cond ((and ediff-use-faces ediff-highlight-all-diffs)
|
||||
(message "Unhighlighting unselected difference regions")
|
||||
(setq ediff-highlight-all-diffs nil))
|
||||
(ediff-use-faces
|
||||
(message "Highlighting with ASCII flags")
|
||||
(setq ediff-use-faces nil))
|
||||
(t
|
||||
(message "Re-highlighting all difference regions")
|
||||
(setq ediff-use-faces t
|
||||
ediff-highlight-all-diffs t)))
|
||||
|
||||
(if (and ediff-use-faces ediff-highlight-all-diffs)
|
||||
(ediff-paint-background-regions)
|
||||
(ediff-paint-background-regions 'unhighlight))
|
||||
|
||||
(ediff-unselect-and-select-difference
|
||||
ediff-current-difference 'select-only))
|
||||
)
|
||||
|
||||
(ediff-unselect-and-select-difference
|
||||
ediff-current-difference 'unselect-only)
|
||||
;; cycle through highlighting
|
||||
(cond ((and ediff-use-faces
|
||||
(ediff-has-face-support-p)
|
||||
ediff-highlight-all-diffs)
|
||||
(message "Unhighlighting unselected difference regions")
|
||||
(setq ediff-highlight-all-diffs nil
|
||||
ediff-highlighting-style 'face))
|
||||
((or (and ediff-use-faces (ediff-has-face-support-p)
|
||||
(eq ediff-highlighting-style 'face)) ; has face support
|
||||
(and (not (ediff-has-face-support-p)) ; no face support
|
||||
(eq ediff-highlighting-style 'off)))
|
||||
(message "Highlighting with ASCII flags")
|
||||
(setq ediff-highlighting-style 'ascii
|
||||
ediff-highlight-all-diffs nil
|
||||
ediff-use-faces nil))
|
||||
((eq ediff-highlighting-style 'ascii)
|
||||
(message "ASCII highlighting flags removed")
|
||||
(setq ediff-highlighting-style 'off
|
||||
ediff-highlight-all-diffs nil))
|
||||
((ediff-has-face-support-p) ; catch-all for cases with face support
|
||||
(message "Re-highlighting all difference regions")
|
||||
(setq ediff-use-faces t
|
||||
ediff-highlighting-style 'face
|
||||
ediff-highlight-all-diffs t)))
|
||||
|
||||
(if (and ediff-use-faces ediff-highlight-all-diffs)
|
||||
(ediff-paint-background-regions)
|
||||
(ediff-paint-background-regions 'unhighlight))
|
||||
|
||||
(ediff-unselect-and-select-difference
|
||||
ediff-current-difference 'select-only))
|
||||
|
||||
|
||||
(defun ediff-toggle-autorefine ()
|
||||
@ -2909,23 +2913,22 @@ Hit \\[ediff-recenter] to reset the windows afterward."
|
||||
(ediff-buffer-live-p ediff-buffer-B)
|
||||
(ediff-valid-difference-p n))
|
||||
(progn
|
||||
(if (and (ediff-has-face-support-p) ediff-use-faces)
|
||||
(progn
|
||||
(ediff-highlight-diff n)
|
||||
(setq ediff-highlighting-style 'face))
|
||||
(setq ediff-highlighting-style 'ascii)
|
||||
(ediff-place-flags-in-buffer
|
||||
'A ediff-buffer-A ediff-control-buffer n)
|
||||
(ediff-place-flags-in-buffer
|
||||
'B ediff-buffer-B ediff-control-buffer n)
|
||||
(if ediff-3way-job
|
||||
(ediff-place-flags-in-buffer
|
||||
'C ediff-buffer-C ediff-control-buffer n))
|
||||
(if (ediff-buffer-live-p ediff-ancestor-buffer)
|
||||
(ediff-place-flags-in-buffer
|
||||
'Ancestor ediff-ancestor-buffer
|
||||
ediff-control-buffer n))
|
||||
)
|
||||
(cond
|
||||
((and (ediff-has-face-support-p) ediff-use-faces)
|
||||
(ediff-highlight-diff n))
|
||||
((eq ediff-highlighting-style 'ascii)
|
||||
(ediff-place-flags-in-buffer
|
||||
'A ediff-buffer-A ediff-control-buffer n)
|
||||
(ediff-place-flags-in-buffer
|
||||
'B ediff-buffer-B ediff-control-buffer n)
|
||||
(if ediff-3way-job
|
||||
(ediff-place-flags-in-buffer
|
||||
'C ediff-buffer-C ediff-control-buffer n))
|
||||
(if (ediff-buffer-live-p ediff-ancestor-buffer)
|
||||
(ediff-place-flags-in-buffer
|
||||
'Ancestor ediff-ancestor-buffer
|
||||
ediff-control-buffer n))
|
||||
))
|
||||
|
||||
(ediff-install-fine-diff-if-necessary n)
|
||||
(run-hooks 'ediff-select-hook))))
|
||||
@ -2954,7 +2957,6 @@ Hit \\[ediff-recenter] to reset the windows afterward."
|
||||
ediff-ancestor-buffer
|
||||
(ediff-get-diff-overlay n 'Ancestor)))
|
||||
))
|
||||
(setq ediff-highlighting-style nil)
|
||||
|
||||
;; unhighlight fine diffs
|
||||
(ediff-set-fine-diff-properties ediff-current-difference 'default)
|
||||
@ -2983,8 +2985,8 @@ Hit \\[ediff-recenter] to reset the windows afterward."
|
||||
(setq ediff-current-difference n)
|
||||
) ; end protected section
|
||||
|
||||
(ediff-with-current-buffer control-buf (ediff-refresh-mode-lines))
|
||||
)))
|
||||
(ediff-with-current-buffer control-buf (ediff-refresh-mode-lines)))
|
||||
))
|
||||
|
||||
|
||||
|
||||
@ -3302,6 +3304,77 @@ Without an argument, it saves customized diff argument, if available
|
||||
)
|
||||
(save-buffer)))
|
||||
|
||||
|
||||
;; idea suggested by Hannu Koivisto <azure@iki.fi>
|
||||
(defun ediff-clone-buffer-for-region-comparison (buff region-name)
|
||||
(let ((cloned-buff (ediff-make-cloned-buffer buff region-name))
|
||||
(wind (ediff-get-visible-buffer-window buff))
|
||||
(pop-up-windows t)
|
||||
other-wind
|
||||
msg-buf)
|
||||
(ediff-with-current-buffer cloned-buff
|
||||
(setq ediff-temp-indirect-buffer t))
|
||||
(if (window-live-p wind)
|
||||
(set-window-buffer wind cloned-buff))
|
||||
(pop-to-buffer cloned-buff)
|
||||
(with-temp-buffer
|
||||
(erase-buffer)
|
||||
(insert
|
||||
(format "\n ******* Mark a region in buffer %s *******\n"
|
||||
(buffer-name cloned-buff)))
|
||||
(insert
|
||||
(format "\n\t When done, type %s Use %s to abort\n "
|
||||
(ediff-format-bindings-of 'exit-recursive-edit)
|
||||
(ediff-format-bindings-of 'abort-recursive-edit)))
|
||||
(goto-char (point-min))
|
||||
(setq msg-buf (current-buffer))
|
||||
(other-window 1)
|
||||
(set-window-buffer (selected-window) msg-buf)
|
||||
(shrink-window-if-larger-than-buffer)
|
||||
(if (window-live-p wind)
|
||||
(select-window wind))
|
||||
(condition-case nil
|
||||
(recursive-edit)
|
||||
(quit
|
||||
(ediff-kill-buffer-carefully cloned-buff)))
|
||||
)
|
||||
cloned-buff))
|
||||
|
||||
|
||||
(defun ediff-clone-buffer-for-window-comparison (buff wind region-name)
|
||||
(let ((cloned-buff (ediff-make-cloned-buffer buff region-name)))
|
||||
(ediff-with-current-buffer cloned-buff
|
||||
(setq ediff-temp-indirect-buffer t))
|
||||
(set-window-buffer wind cloned-buff)
|
||||
cloned-buff))
|
||||
|
||||
(defun ediff-clone-buffer-for-current-diff-comparison (buff buf-type reg-name)
|
||||
(let ((cloned-buff (ediff-make-cloned-buffer buff reg-name))
|
||||
(reg-start (ediff-get-diff-posn buf-type 'beg))
|
||||
(reg-end (ediff-get-diff-posn buf-type 'end)))
|
||||
(ediff-with-current-buffer cloned-buff
|
||||
;; set region to be the current diff region
|
||||
(goto-char reg-start)
|
||||
(set-mark reg-end)
|
||||
(setq ediff-temp-indirect-buffer t))
|
||||
cloned-buff))
|
||||
|
||||
|
||||
|
||||
(defun ediff-make-cloned-buffer (buff region-name)
|
||||
(ediff-make-indirect-buffer
|
||||
buff (concat
|
||||
(if (stringp buff) buff (buffer-name buff))
|
||||
region-name (symbol-name (gensym)))))
|
||||
|
||||
|
||||
(defun ediff-make-indirect-buffer (base-buf indirect-buf-name)
|
||||
(ediff-cond-compile-for-xemacs-or-emacs
|
||||
(make-indirect-buffer base-buf indirect-buf-name) ; xemacs
|
||||
(make-indirect-buffer base-buf indirect-buf-name 'clone) ; emacs
|
||||
))
|
||||
|
||||
|
||||
;; This function operates only from an ediff control buffer
|
||||
(defun ediff-compute-custom-diffs-maybe ()
|
||||
(let ((buf-A-file-name (buffer-file-name ediff-buffer-A))
|
||||
@ -3373,8 +3446,15 @@ Ediff Control Panel to restore highlighting."
|
||||
(zmacs-regions t)
|
||||
(ctl-buf (current-buffer))
|
||||
quit-now
|
||||
use-current-diff-p
|
||||
begA begB endA endB bufA bufB)
|
||||
|
||||
(if (ediff-valid-difference-p ediff-current-difference)
|
||||
(progn
|
||||
(ediff-set-fine-diff-properties ediff-current-difference 'default)
|
||||
(ediff-unhighlight-diff)))
|
||||
(ediff-paint-background-regions 'unhighlight)
|
||||
|
||||
(cond ((ediff-merge-job)
|
||||
(setq bufB ediff-buffer-C)
|
||||
;; ask which buffer to compare to the merge buffer
|
||||
@ -3440,8 +3520,14 @@ Ediff Control Panel to restore highlighting."
|
||||
bufB ediff-buffer-B
|
||||
possibilities nil)))
|
||||
|
||||
(setq bufA (ediff-clone-buffer-for-region-comparison
|
||||
(buffer-name bufA) "-Region.A-"))
|
||||
(if (and (ediff-valid-difference-p ediff-current-difference)
|
||||
(y-or-n-p "Compare currently highlighted difference regions? "))
|
||||
(setq use-current-diff-p t))
|
||||
|
||||
(setq bufA (if use-current-diff-p
|
||||
(ediff-clone-buffer-for-current-diff-comparison
|
||||
bufA 'A "-Region.A-")
|
||||
(ediff-clone-buffer-for-region-comparison bufA "-Region.A-")))
|
||||
(ediff-with-current-buffer bufA
|
||||
(setq begA (region-beginning)
|
||||
endA (region-end))
|
||||
@ -3453,8 +3539,10 @@ Ediff Control Panel to restore highlighting."
|
||||
(or (eobp) (forward-char)) ; include the newline char
|
||||
(setq endA (point)))
|
||||
|
||||
(setq bufB (ediff-clone-buffer-for-region-comparison
|
||||
(buffer-name bufB) "-Region.B-"))
|
||||
(setq bufB (if use-current-diff-p
|
||||
(ediff-clone-buffer-for-current-diff-comparison
|
||||
bufB 'B "-Region.B-")
|
||||
(ediff-clone-buffer-for-region-comparison bufB "-Region.B-")))
|
||||
(ediff-with-current-buffer bufB
|
||||
(setq begB (region-beginning)
|
||||
endB (region-end))
|
||||
@ -3466,11 +3554,15 @@ Ediff Control Panel to restore highlighting."
|
||||
(or (eobp) (forward-char)) ; include the newline char
|
||||
(setq endB (point)))
|
||||
|
||||
|
||||
(ediff-regions-internal
|
||||
bufA begA endA bufB begB endB
|
||||
nil ; setup-hook
|
||||
'ediff-regions-linewise ; job name
|
||||
nil ; no word mode
|
||||
nil ; setup-hook
|
||||
(if use-current-diff-p ; job name
|
||||
'ediff-regions-wordwise
|
||||
'ediff-regions-linewise)
|
||||
(if use-current-diff-p ; word mode, if diffing current diff
|
||||
t nil)
|
||||
;; setup param to pass to ediff-setup
|
||||
(list (cons 'ediff-split-window-function ediff-split-window-function)))
|
||||
))
|
||||
|
@ -851,55 +851,6 @@ If WIND-B is nil, use window next to WIND-A."
|
||||
buffer-A beg-A end-A buffer-B beg-B end-B
|
||||
startup-hooks job-name word-mode nil)))
|
||||
|
||||
;; Suggested by Hannu Koivisto <azure@iki.fi>
|
||||
(defun ediff-clone-buffer-for-region-comparison (buff-name region-name)
|
||||
(let ((cloned-buff (ediff-make-indirect-buffer
|
||||
buff-name
|
||||
(concat buff-name region-name
|
||||
(symbol-name (gensym)))))
|
||||
(wind (ediff-get-visible-buffer-window buff-name))
|
||||
(pop-up-windows t)
|
||||
other-wind
|
||||
msg-buf)
|
||||
(ediff-with-current-buffer cloned-buff
|
||||
(setq ediff-temp-indirect-buffer t))
|
||||
(if (window-live-p wind)
|
||||
(set-window-buffer wind cloned-buff))
|
||||
(pop-to-buffer cloned-buff)
|
||||
(with-temp-buffer
|
||||
(erase-buffer)
|
||||
(insert
|
||||
(format "\n ******* Mark a region in buffer %s *******\n"
|
||||
(buffer-name cloned-buff)))
|
||||
(insert
|
||||
(format "\n\t When done, type %s Use %s to abort\n "
|
||||
(ediff-format-bindings-of 'exit-recursive-edit)
|
||||
(ediff-format-bindings-of 'abort-recursive-edit)))
|
||||
(goto-char (point-min))
|
||||
(setq msg-buf (current-buffer))
|
||||
(other-window 1)
|
||||
(set-window-buffer (selected-window) msg-buf)
|
||||
(shrink-window-if-larger-than-buffer)
|
||||
(select-window wind)
|
||||
(recursive-edit)
|
||||
)
|
||||
cloned-buff))
|
||||
|
||||
(defun ediff-clone-buffer-for-window-comparison (buff wind region-name)
|
||||
(let ((cloned-buff (ediff-make-indirect-buffer
|
||||
buff
|
||||
(concat (buffer-name buff)
|
||||
region-name (symbol-name (gensym))))))
|
||||
(ediff-with-current-buffer cloned-buff
|
||||
(setq ediff-temp-indirect-buffer t))
|
||||
(set-window-buffer wind cloned-buff)
|
||||
cloned-buff))
|
||||
|
||||
(defun ediff-make-indirect-buffer (base-buf indirect-buf-name)
|
||||
(ediff-cond-compile-for-xemacs-or-emacs
|
||||
(make-indirect-buffer base-buf indirect-buf-name) ; xemacs
|
||||
(make-indirect-buffer base-buf indirect-buf-name 'clone) ; emacs
|
||||
))
|
||||
|
||||
;;;###autoload
|
||||
(defun ediff-regions-wordwise (buffer-A buffer-B &optional startup-hooks)
|
||||
@ -1237,7 +1188,7 @@ buffer."
|
||||
(setq rev1
|
||||
(read-string
|
||||
(format
|
||||
"Version 1 to merge (default: %s's latest version): "
|
||||
"Version 1 to merge (default: %s's working version): "
|
||||
(if (stringp file)
|
||||
(file-name-nondirectory file) "current buffer")))
|
||||
rev2
|
||||
@ -1269,7 +1220,7 @@ buffer."
|
||||
(setq rev1
|
||||
(read-string
|
||||
(format
|
||||
"Version 1 to merge (default: %s's latest version): "
|
||||
"Version 1 to merge (default: %s's working version): "
|
||||
(if (stringp file)
|
||||
(file-name-nondirectory file) "current buffer")))
|
||||
rev2
|
||||
@ -1385,7 +1336,7 @@ Uses `vc.el' or `rcs.el' depending on `ediff-version-control-package'."
|
||||
(let (rev1 rev2)
|
||||
(setq rev1
|
||||
(read-string
|
||||
(format "Version 1 to compare (default: %s's latest version): "
|
||||
(format "Version 1 to compare (default: %s's working version): "
|
||||
(file-name-nondirectory file)))
|
||||
rev2
|
||||
(read-string
|
||||
|
Loading…
Reference in New Issue
Block a user