;ELC ;;; compiled by kwzh@hal.gnu.ai.mit.edu on Thu Jun 8 22:25:06 1995 ;;; from file /gd/gnu/emacs/19.0/lisp/ediff-wind.el ;;; emacs version 19.29.0. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.28.90"))) (error "`ediff-wind.el' was compiled for Emacs 19.29 or later")) (require (quote ediff-init)) #@995 *Function called to set up windows. Ediff provides a choice of two functions: ediff-setup-windows-plain, for doing everything in one frame, and ediff-setup-windows-multiframe, which sets the control panel in a separate frame. Also, if the latter function detects that one of the buffers A/B is seen in some other frame, it will try to keep that buffer in that frame. If you don't like the two functions provided---write your own one. The basic guidelines: 1. It should leave the control buffer current and the control window selected. 2. It should set ediff-window-A, ediff-window-B, ediff-window-C, and ediff-control-window to contain window objects that display the corresponding buffers. 3. It should accept the following arguments: buffer-A, buffer-B, buffer-C, control-buffer Buffer C may not be used in jobs that compare only two buffers. If you plan to do something fancy, take a close look at how the two provided functions are written. (defvar ediff-window-setup-function (byte-code " \f !\"  !>\"ŇƇ" [ediff-emacs-p window-system device-type selected-device (tty stream) ediff-setup-windows-multiframe ediff-setup-windows-plain] 2) (#$ . -509)) #@2  (defvar ediff-multiframe nil (#$ . 1741)) (byte-code "!#" [make-variable-buffer-local ediff-multiframe put permanent-local t] 4) #@2  (defvar ediff-merge-window-share 0.45000000000000001 (#$ . 1884)) (byte-code "!#" [make-variable-buffer-local ediff-merge-window-share put permanent-local t] 4) #@2  (defvar ediff-control-window nil (#$ . 2059)) (byte-code "!#" [make-variable-buffer-local ediff-control-window put permanent-local t] 4) #@2  (defvar ediff-window-A nil (#$ . 2210)) (byte-code "!#" [make-variable-buffer-local ediff-window-A put permanent-local t] 4) #@2  (defvar ediff-window-B nil (#$ . 2349)) (byte-code "!#" [make-variable-buffer-local ediff-window-B put permanent-local t] 4) #@2  (defvar ediff-window-C nil (#$ . 2488)) (byte-code "!#" [make-variable-buffer-local ediff-window-C put permanent-local t] 4) #@2  (defvar ediff-window-config-saved "" (#$ . 2627)) (byte-code "!#" [make-variable-buffer-local ediff-window-config-saved put permanent-local t] 4) #@407 *The function used to split the main window between buffer-A and buffer-B. You can set it to a horizontal split instead of the default vertical split by setting this variable to `split-window-horizontally'. You can also have your own function to do fancy splits. This variable has no effect when buffer-A/B are shown in different frames. In this case, Ediff will use those frames to display these buffers. (defvar ediff-split-window-function (quote split-window-vertically) (#$ . -2789)) #@407 *The function used to split the main window between buffer-A and buffer-B. You can set it to a vertical split instead of the default horizontal split by setting this variable to `split-window-vertically'. You can also have your own function to do fancy splits. This variable has no effect when buffer-A/B/C are shown in different frames. In this case, Ediff will use those frames to display these buffers. (defvar ediff-merge-split-window-function (quote split-window-horizontally) (#$ . -3284)) #@126 Frame parameters for displaying Ediff Control Panel. Do not specify width and height here. These are computed automatically. (defconst ediff-control-frame-parameters (byte-code " \f !H  !>?H!5 T6B!D TEB " [ediff-emacs-p window-system device-type selected-device (tty stream) (name . "Ediff") (minibuffer) (vertical-scroll-bars) (scrollbar-width . 0) (menu-bar-lines . 0) (auto-lower) (auto-raise . t) top fboundp ediff-display-pixel-height 3000 left ediff-display-pixel-width] 11) (#$ . 3787)) #@256 Function to call to determine the desired location for the control panel. Expects three parameters: the control buffer, the desired width and height of the control frame. It returns an association list of the form ((top . ) (left . )) (defvar ediff-control-frame-position-function (quote ediff-make-frame-position) (#$ . 4337)) #@248 *The upward shift of control frame from the top of buffer A's frame. Measured in pixels. This is used by the default control frame positioning function, `ediff-make-frame-position'. This variable is provided for easy customization of the default. (defvar ediff-control-frame-upward-shift (byte-code "‡" [ediff-xemacs-p 36 4] 1) (#$ . -4692)) #@331 *The leftward shift of control frame from the right edge of buf A's frame. Measured in characters. This is used by the default control frame positioning function, `ediff-make-frame-position' to adjust the position of the control frame when it shows the short menu. This variable is provided for easy customization of the default. (defvar ediff-narrow-control-frame-leftward-shift (byte-code "‡" [ediff-xemacs-p 7 3] 1) (#$ . -5048)) #@330 *The rightward shift of control frame from the left edge of buf A's frame. Measured in characters. This is used by the default control frame positioning function, `ediff-make-frame-position' to adjust the position of the control frame when it shows the full menu. This variable is provided for easy customization of the default. (defvar ediff-wide-control-frame-rightward-shift 7 (#$ . -5495)) #@2  (defvar ediff-wide-display-p nil (#$ . 5894)) (byte-code "!#" [make-variable-buffer-local ediff-wide-display-p put permanent-local t] 4) #@85 Frame parameters to be restored when the user wants to toggle the wide display off. (defvar ediff-wide-display-orig-parameters nil (#$ . 6046)) (byte-code "!#" [make-variable-buffer-local ediff-wide-display-orig-parameters put permanent-local t] 4) #@36 Frame to be used for wide display. (defvar ediff-wide-display-frame nil (#$ . 6309)) (byte-code "!#" [make-variable-buffer-local ediff-wide-display-frame put permanent-local t] 4) #@372 The value is a function that is called to create a wide display. The function is called without arguments. It should resize the frame in which buffers A, B, and C are to be displayed, and it should save the old frame parameters in `ediff-wide-display-orig-parameters'. The variable `ediff-wide-display-frame' should be set to contain the frame used for the wide display. (defvar ediff-make-wide-display-function (quote ediff-make-wide-display) (#$ . 6504)) (byte-code "!#" [make-variable-buffer-local ediff-make-wide-display-function put permanent-local t] 4) #@2  (defvar ediff-control-frame nil (#$ . 7077)) (byte-code "!#" [make-variable-buffer-local ediff-control-frame put permanent-local t] 4) #@433 *If t, keep control panel iconified when help message is off. This has effect only on a windowing system. If t, hiting `?' to toggle control panel off iconifies it. This is only useful in Emacs and only for certain kinds of window managers, such as TWM and its derivatives, since the window manager must permit keyboard input to go into icons. XEmacs completely ignores keyboard input into icons, regardless of the window manager. (defvar ediff-prefer-iconified-control-frame nil (#$ . -7228)) (defalias 'ediff-get-window-by-clicking #[(wind prev-wind wind-number) "\f\"  ! !\"\")6!.!\f\" D !O A@)@))" [nil event message "Select windows by clicking. Please click on Window %d " wind-number ediff-read-event ediff-xemacs-p button-event-p string-match "mouse" format "%S" event-basic-type sit-for 1 beep "Please click on Window %d " event-window position wind] 7]) (defalias 'ediff-select-lowest-window #[nil " !  AAA@! )   [   !AAA@WC  !  =W\f! *!," [ediff-xemacs-p select-window frame-lowest-window selected-window lowest-window window-edges bottom-edge other-window -1 last-window t window-search next-window this-window next-bottom-edge nil] 2]) (defalias 'ediff-setup-windows #[(buffer-A buffer-B buffer-C control-buffer) "! =! \n!Xp \nC\n!C\n!!CΎ\nq)M=M!)\n$!" [run-hooks ediff-before-setup-windows-hooks selected-window minibuffer-window other-window 1 ediff-window-display-p ediff-setup-windows-plain ediff-window-setup-function ediff-keep-window-config control-buffer StartBuffer get-buffer buffer-name ((set-buffer StartBuffer)) this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" buffer-A buffer-B buffer-C ediff-after-setup-windows-hooks] 5]) (defalias 'ediff-setup-windows-plain #[(buffer-A buffer-B buffer-C control-buffer) "p ! !! Ď q)+=+!) ;  $  $" [StartBuffer control-buffer get-buffer buffer-name ((set-buffer StartBuffer)) nil ediff-multiframe this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ediff-merge-job ediff-setup-windows-plain-merge buffer-A buffer-B buffer-C ediff-setup-windows-plain-compare] 5]) (defalias 'ediff-setup-windows-plain-merge #[(buf-A buf-B buf-C control-buffer) " !É \np = != !!=Ύ q )H=H!) !! _!]!  w! Z]! =! #!! =!%! p ! !! q' (\f))=!) !." [ediff-destroy-control-frame control-buffer 2 nil wind-C wind-B wind-A merge-window-lines merge-window-share split-window-function window-min-height StartBuffer get-buffer buffer-name ((set-buffer StartBuffer)) ediff-merge-window-share ediff-split-window-function this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" delete-other-windows split-window-vertically ediff-select-lowest-window ediff-setup-control-buffer other-window 1 round window-height switch-to-buffer buf-A selected-window ediff-xemacs-p sit-for 0 buf-C select-window buf-B ((set-buffer StartBuffer)) ediff-window-A ediff-window-B ediff-window-C] 7]) (defalias 'ediff-setup-windows-plain-compare #[(buf-A buf-B buf-C control-buffer) " !É \n \fp ! !!Ў q@!SO!S!)A@!so!s!)  )=!) !!$!   =!!\n)! \n! =!,!   =!-! p * !* !!* q/ 0\f1)5=5!)2H\" \" !. " [ediff-destroy-control-frame control-buffer 2 nil wind-C wind-B wind-A wind-B-start wind-A-start three-way-comparison wind-width-or-height split-window-function window-min-height StartBuffer get-buffer buffer-name ((set-buffer StartBuffer)) ediff-narrow-bounds overl ediff-overlayp ediff-emacs-p overlay-start extent-start-position ediff-split-window-function ediff-3way-comparison-job this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" delete-other-windows split-window-vertically ediff-select-lowest-window ediff-setup-control-buffer other-window 1 switch-to-buffer buf-A selected-window window-height window-width 3 ediff-xemacs-p sit-for 0 buf-B buf-C ((set-buffer StartBuffer)) ediff-window-A ediff-window-B ediff-window-C ediff-windows-job set-window-start] 9]) (defalias 'ediff-setup-windows-multiframe #[(buf-A buf-B buf-C control-buf) "p ! !! Ď q)+=+!) ;  $  $" [StartBuffer control-buf get-buffer buffer-name ((set-buffer StartBuffer)) t ediff-multiframe this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ediff-merge-job ediff-setup-windows-multiframe-merge buf-A buf-B buf-C ediff-setup-windows-multiframe-compare] 5]) (defalias 'ediff-setup-windows-multiframe-merge #[(buf-A buf-B buf-C control-buf) "! !! !\n !\f+! \n6\n!p\\!\\!!\\ӎq)f=f!)p!!!ڎq)=!)   \f =  =\f!? !?\f =!?\"?\f =#p!!!q%)=!)&()*+,!P\"P#P! ! *!p\"p! ! +\n!\"\n!  ! \n,#\f! !  =!! *+\"y 5 5 =\n !!\n\n!! &_!]( ! 82! (Z]! =H! \n !! =f!! *+,**! ! +! ! ,!  ! \np!!!q=>\n?=!\fˁ@\f!!))=!)A)\"." [ediff-skip-unsuitable-frames ok-unsplittable 2 window-min-height ediff-get-visible-buffer-window buf-A wind-A buf-B wind-B buf-C wind-C window-frame frame-A frame-B frame-C StartBuffer control-buf get-buffer buffer-name ((set-buffer StartBuffer)) ediff-wide-display-p this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" force-one-frame ((set-buffer StartBuffer)) ediff-split-window-function split-window-function selected-window orig-wind selected-frame orig-frame frame-live-p use-same-frame use-same-frame-for-AB ((set-buffer StartBuffer)) ediff-merge-window-share merge-window-share nil merge-window-lines designated-minibuffer-frame done-A done-B done-C window-live-p select-window delete-other-windows switch-to-buffer t select-frame other-window 1 curr-frame round window-height ediff-xemacs-p sit-for 0 split-window-vertically ((set-buffer StartBuffer)) ediff-window-A ediff-window-B ediff-window-C minibuffer-window ediff-setup-control-frame] 5]) (defalias 'ediff-setup-windows-multiframe-compare #[(buf-A buf-B buf-C control-buf) "! !! !\n !\f+! \n6\n!p^!^!!^ӎq!)h=h!)p!!!ێq)=!)p!!!ގq)=!) p!!!q\")=!)# %b\f =b#<\f=b =b\f!?b !?b!?b !Pb\f =b\f!?bb =')*+,-.p!!!q0@11!31!1!))0A@11!31!1!)*)=!)!'! ! ,!\"'\"! ! -\n!B'B\n!  ! \n.' ;< < =f\n %s!!\n\n!%! ! =!# @=A!B!C; ;! =DE!! #  D>DE! ! \n,-.*,,%! ! -B%! ! #].]%!  ! \np!!!FqGH\nIG!\fˁJ\f!!+)=!)KL)\"L*\"M+\"." [ediff-skip-unsuitable-frames ok-unsplittable 2 window-min-height ediff-get-visible-buffer-window buf-A wind-A buf-B wind-B buf-C wind-C window-frame frame-A frame-B frame-C StartBuffer control-buf get-buffer buffer-name ((set-buffer StartBuffer)) frame-live-p ediff-control-frame this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ctl-frame-exists-p ((set-buffer StartBuffer)) ediff-wide-display-p force-one-frame ((set-buffer StartBuffer)) ediff-split-window-function split-window-function ((set-buffer StartBuffer)) ediff-3way-comparison-job three-way-comparison selected-window orig-wind selected-frame use-same-frame nil wind-A-start wind-B-start designated-minibuffer-frame done-A done-B done-C ((set-buffer StartBuffer)) ediff-narrow-bounds overl ediff-overlayp ediff-emacs-p overlay-start extent-start-position window-live-p select-window delete-other-windows switch-to-buffer t wind-width-or-height curr-frame ediff-xemacs-p sit-for 0 split-window-vertically window-height window-width 3 other-window 1 ((set-buffer StartBuffer)) ediff-window-A ediff-window-B ediff-window-C minibuffer-window ediff-windows-job set-window-start ediff-setup-control-frame] 3]) (defalias 'ediff-skip-unsuitable-frames #[(&optional ok-unsplittable) " \f !  !>? = ! \n? C !qN R !>?q\n!q k\n!q\n!=) \n\n!A) \"$ =!!)" [ediff-emacs-p window-system device-type selected-device (tty stream) nil last-window selected-window window-dedicated-p selected-frame frame (tty stream) frame-live-p ediff-xemacs-p frame-iconified-p frame-visible-p icon ok-unsplittable unsplittable frame-parameters other-window 1 t select-frame ediff-make-frame ((unsplittable))] 3]) (defalias 'ediff-setup-control-frame #[(ctl-buffer designated-minibuffer-frame) " \n p\f I !I !!IЎ qA!!)T=T!)p\f y !y !!yَ q)=!)!!p\f  ! !!ݎ q!!*=!)\"#$ !#$ !>?\"! \"!\"!=)\n! !&  !ap\f U !U !!U q!!)`=`!) !56? =w ed\"\\ed\"T \\ B\fBD= \f#\"?@D\"A@D\"B@D\"C@D\"D@!EF=G\n\"ebH \n  I!\nJ!!K G\n\"?L  \"IM N\"YD@O\"P!\"{Q\"wR !\"R \"#$ !#$ !S>T\"U@#)V \np\f  ! !!W qX!YXZ\") = !)p\f 3 !3 !!3[ qӁ\\!)===!. " [2 nil adjusted-parameters fwidth fheight lines old-ctl-frame ctl-frame deiconify-ctl-frame dont-iconify-ctl-frame ctl-frame-iconified-p window-min-height StartBuffer ctl-buffer get-buffer buffer-name ((set-buffer StartBuffer)) ediff-xemacs-p set-buffer-menubar run-hooks ediff-before-setup-control-frame-hooks this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ((set-buffer StartBuffer)) ediff-control-frame frame-live-p delete-frame ((set-buffer StartBuffer)) designated-minibuffer-frame default-minibuffer-frame make-frame ediff-control-frame-parameters frame ediff-emacs-p window-system device-type selected-device (tty stream) frame-iconified-p frame-visible-p icon select-frame window-dedicated-p selected-window delete-other-windows switch-to-buffer ((set-buffer StartBuffer)) make-local-variable frame-title-format frame-icon-title-format ediff-setup-control-buffer ediff-help-message ediff-brief-help-message ediff-toggle-help count-lines ediff-help-message-line-length append width height ediff-control-frame-position-function set-specifier top-toolbar-height 0 bottom-toolbar-height left-toolbar-width right-toolbar-width sit-for system-type emx modify-frame-parameters ediff-prefer-iconified-control-frame iconify-frame raise-frame ediff-refresh-control-frame set-window-buffer-dedicated set-window-dedicated-p t 200 ediff-frame-iconified-p frame-selected-window selected-frame (tty stream) set-mouse-position 1 unfocus-frame ((set-buffer StartBuffer)) select-frame-hook add-hook ediff-xemacs-select-frame-hook ((set-buffer StartBuffer)) ediff-after-setup-control-frame-hooks] 11]) (defalias 'ediff-destroy-control-frame #[(ctl-buffer) "p ] !] !!]Ď q \"& !Y 26 !>Y !Y \f P! \f!))h=h!)  | !   !  !>?#)" [StartBuffer ctl-buffer get-buffer buffer-name ((set-buffer StartBuffer)) ediff-emacs-p window-system device-type selected-device (tty stream) frame-live-p ediff-control-frame ctl-frame ediff-xemacs-p set-buffer-menubar default-menubar nil delete-frame this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ediff-skip-unsuitable-frames frame frame-selected-window selected-frame (tty stream) set-mouse-position 1 0] 4]) (defalias 'ediff-make-frame-position #[(ctl-buffer ctl-frame-width ctl-frame-height) "p ! !!Ď q!!  \"A\f \"A!\\_\fZZVklB!!!)!\\_!!!)_!!!)\"#\\\\_Z\\.\nBD$=!)" [StartBuffer ctl-buffer get-buffer buffer-name ((set-buffer StartBuffer)) window-frame ediff-window-A frame-A frame-parameters frame-A-parameters assoc top frame-A-top left frame-A-left frame-width frame-A-width ediff-control-frame ctl-frame nil horizontal-adjustment upward-adjustment ctl-frame-top ediff-control-buffer-number -14 ediff-control-frame-upward-shift 0 1 ediff-prefer-long-help-message frame ediff-xemacs-p frame-pixel-width frame-char-width ediff-wide-control-frame-rightward-shift ctl-frame-width ediff-narrow-control-frame-leftward-shift this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff"] 8]) (defalias 'ediff-xemacs-select-frame-hook #[nil " \n !" [selected-frame ediff-control-frame raise-frame] 2]) #@326 Construct an alist of parameters for the wide display. Saves the old frame parameters in `ediff-wide-display-orig-parameters'. The frame to be resized is kept in `ediff-wide-display-frame'. This function modifies only the left margin and the width of the display. It assumes that it is called from within the control buffer. (defalias 'ediff-make-wide-display #[nil "!\n! !! \n* ! !. !) Z\"A]B\"ABDBBD\"," [fboundp ediff-display-pixel-width error "Can't determine display width." window-frame ediff-window-A frame-A frame-parameters frame-A-params frame ediff-xemacs-p frame-pixel-width frame-width frame-char-width cw 5 wd left 0 assoc width ediff-wide-display-orig-parameters ediff-wide-display-frame modify-frame-parameters] 5 (#$ . 21394)]) (defalias 'ediff-refresh-mode-lines #[nil "Y W) < !< !!<\"!JHH ^ !^ !!^\"!JHH  ! !!\"!JHH  ! !!\"!JHH\f\f\" \"  ! !!\n \n P#  !0 !>0001\"E$AE !nRV !>nnn!p \"  ! !>*! p,--!-!!-q\f/$@$8$$E$ )3=!)p,7)7!)7!!)7q /$@$8$$E$ )43=4!):p, v !v !!v q\n/$@i$8$$E$ )3=!)," [nil buf-C-state-merge buf-C-state-diff buf-B-state-diff buf-A-state-diff n ediff-current-difference 0 ediff-number-of-differences ediff-buffer-C get-buffer buffer-name intern format "ediff-difference-vector-%S" C 3 4 A B "[%s] " "" "[%s%s] " " " ediff-emacs-p window-system device-type selected-device (tty stream) ediff-multiframe ediff-help-message ediff-brief-message-string " " "-- " mode-line-buffer-identification " Howdy!" mode-line-format ediff-make-narrow-control-buffer-id skip-name ediff-make-wide-control-buffer-id force-mode-line-update frame-live-p ediff-control-frame ediff-refresh-control-frame StartBuffer ediff-buffer-A ((set-buffer StartBuffer)) ediff-diff-status (" A: " " B: " " C: ") 2 " A: " this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff" ediff-buffer-B ((set-buffer StartBuffer)) " B: " ediff-3way-job ((set-buffer StartBuffer)) " C: "] 6]) (defalias 'ediff-refresh-control-frame #[nil "   \" BC\"" [ediff-xemacs-p ediff-make-narrow-control-buffer-id frame-title-format frame-icon-title-format modify-frame-parameters ediff-control-frame (nil) name] 4]) (defalias 'ediff-make-narrow-control-buffer-id #[(&optional skip-name) "\f\"A PW\n\"6\nY.\n\"6T\n#P" [skip-name " " assoc name ediff-control-frame-parameters ediff-control-buffer-suffix ediff-current-difference 0 format " _/%d" ediff-number-of-differences " $/%d" " %d/%d"] 5]) (defalias 'ediff-make-wide-control-buffer-id #[nil "W\f\f\"C\fY\f\"CT\f#C" [ediff-current-difference 0 format "%%b At start of %d diffs" ediff-number-of-differences "%%b At end of %d diffs" "%%b diff %d of %d"] 4]) (defalias 'ediff-get-visible-buffer-window #[(buff) "!!! \"\"" [buff get-buffer buffer-name ediff-xemacs-p get-buffer-window t visible] 3]) (defalias 'ediff-keep-window-config #[(control-buf) "p=Y U?YpN!N!!NƎq \n \f  !nLP !d]a !>??n!!)J\f! ! !>??!!)J ! ! !>??!!)J !=J\f!=J !=J \f  (, !E9= !>?E\"#&-X$=X!)" [control-buf buffer-size 0 StartBuffer get-buffer buffer-name ((set-buffer StartBuffer)) ediff-control-window ediff-window-A ediff-window-B ediff-window-C C-wind B-wind A-wind ctl-wind wind window-live-p ediff-emacs-p window-system device-type selected-device (tty stream) frame-visible-p window-frame ediff-3way-job window-buffer ediff-buffer-A ediff-buffer-B ediff-buffer-C ediff-window-config-saved format "%S%S%S%S%S%S%S" ediff-split-window-function (tty stream) ediff-multiframe ediff-wide-display-p this-command ediff-quit error "You've killed an essential Ediff buffer---Please quit Ediff"] 10]) (provide (quote ediff-wind))