%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/share/emacs/27.2/lisp/
Upload File :
Create Path :
Current File : //usr/local/share/emacs/27.2/lisp/follow.elc

;ELC
;;; Compiled
;;; in Emacs version 27.2
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\210\302\303\304\305\306\307\306\310&\210\311\312\304\313\314\315\306\303&\210\311\316\317\320\314\321\306\303&\207" [require easymenu custom-declare-group follow nil "Synchronize windows showing the same buffer." :group windows convenience custom-declare-variable follow-mode-hook "Normal hook run by `follow-mode'." :type hook follow-mode-prefix "." "Prefix key to use for follow commands in Follow mode.\nThe value of this variable is checked as part of loading Follow mode.\nAfter that, changing the prefix key requires manipulating keymaps." string] 8)
#@36 Minor mode keymap for Follow mode.
(defvar follow-mode-map (byte-code "\303 \303 \304\305\306#\210\304\307\310#\210\304\311\310#\210\304\312\313#\210\304\314\315#\210\304\316\317#\210\304\320\321#\210\304\322\323#\210\304\324\325#\210\304\326\327#\210\304\330\331#\210\304	\n#\210\304	\332\333#\210\304	\334\335#\210\304	\336\337#\210\304	\340\341#\210\304	\342\343#\210\304	\344\345#\210	*\207" [map mainmap follow-mode-prefix make-sparse-keymap define-key "" follow-scroll-up "\366" follow-scroll-down "v" "1" follow-delete-other-windows-and-split "b" follow-switch-to-buffer "" follow-switch-to-buffer-all "\f" follow-recenter "<" follow-first-window ">" follow-last-window "n" follow-next-window "p" follow-previous-window [remap end-of-buffer] follow-end-of-buffer [remap scroll-bar-toolkit-scroll] follow-scroll-bar-toolkit-scroll [remap scroll-bar-drag] follow-scroll-bar-drag [remap scroll-bar-scroll-up] follow-scroll-bar-scroll-up [remap scroll-bar-scroll-down] follow-scroll-bar-scroll-down [remap mwheel-scroll] follow-mwheel-scroll] 4) (#$ . 991))
(defalias 'follow-menu-filter #[(menu) "\302\300!\203\f\203\f	\207\303\207" [follow-mode menu boundp (["Follow mode" follow-mode :style toggle :selected follow-mode])] 2])
(byte-code "\300\301\302\303#\210\304\305\306\307\310\311\312\313&\210\304\314\301\315\310\316\312\313\317\320&	\210\304\321\322\323\310\316\312\313&\207" [easy-menu-add-item nil ("Tools") ("Follow" :filter follow-menu-filter ["Scroll Up" follow-scroll-up follow-mode] ["Scroll Down" follow-scroll-down follow-mode] "--" ["Delete Other Windows and Split" follow-delete-other-windows-and-split follow-mode] "--" ["Switch To Buffer" follow-switch-to-buffer follow-mode] ["Switch To Buffer (all windows)" follow-switch-to-buffer-all follow-mode] "--" ["First Window" follow-first-window follow-mode] ["Last Window" follow-last-window follow-mode] ["Next Window" follow-next-window follow-mode] ["Previous Window" follow-previous-window follow-mode] "--" ["Recenter" follow-recenter follow-mode] "--" ["Follow mode" follow-mode :style toggle :selected follow-mode]) custom-declare-variable follow-mode-line-text " Follow" "Text shown in the mode line when Follow mode is active.\nDefaults to \" Follow\".  Examples of other values\nare \" Fw\", or simply \"\"." :type string :group follow follow-auto "Non-nil activates Follow mode whenever a file is loaded." boolean :set #[(symbol value) "\203
\302\303\304\305#\210\202\306\303\304\"\210\307	\"\207" [value symbol add-hook find-file-hook follow-find-file-hook t remove-hook set-default] 4] follow-hide-ghost-cursors t "When non-nil, Follow mode attempts to hide the obtrusive cursors\nin the non-selected windows of a window group.\n\nThis variable takes effect when `follow-mode' is initialized.\n\nDue to limitations in Emacs, this only operates on the followers\nof the selected window."] 10)
#@365 List of commands that don't require recalculation.

In order to be able to use the cache, a command should not change the
contents of the buffer, nor should it change selected window or current
buffer.

The commands in this list are checked at load time.

To mark other commands as suitable for caching, set the symbol
property `follow-mode-use-cache' to non-nil.
(defvar follow-cache-command-list '(next-line previous-line forward-char backward-char right-char left-char) (#$ . 3901))
#@50 If non-nil, emit Follow mode debugging messages.
(custom-declare-variable 'follow-debug nil '(#$ . 4393) :type 'boolean :group 'follow)
#@53 True when Follow mode should redisplay the windows.
(defvar follow-internal-force-redisplay nil (#$ . 4535))
#@46 The menu visible when Follow mode is active.
(defvar follow-active-menu nil (#$ . 4650))
#@48 The menu visible when Follow mode is inactive.
(defvar follow-inactive-menu nil (#$ . 4745))
#@92 Non-nil when inside Follow modes `post-command-hook'.
Used by `follow-window-size-change'.
(defvar follow-inside-post-command-hook-call nil (#$ . 4844))
#@62 Cache used by `follow-window-start' and `follow-window-end'.
(defvar follow-windows-start-end-cache nil (#$ . 5003))
#@108 If non-nil, the current window must not be scrolled.
This is typically set by explicit scrolling commands.
(defvar follow-fixed-window nil (#$ . 5127))
#@65 Like `message', but only active when `follow-debug' is non-nil.
(defalias 'follow-debug-message #[(&rest args) "\302\300!\205\205\303\304	\"\207" [follow-debug args boundp apply message] 3 (#$ . 5285)])
(byte-code "\303\304\305\306#\210\307\211\203\n@\303	\310\311#\210\nA\211\204*\307\207" [follow-cache-command-list cmd --dolist-tail-- put follow-debug-message byte-optimizer byte-compile-inline-expand nil follow-mode-use-cache t] 5)
#@62 Turn on Follow mode.  Please see the function `follow-mode'.
(defalias 'turn-on-follow-mode #[nil "\300\301!\207" [follow-mode 1] 2 (#$ . 5742)])
#@63 Turn off Follow mode.  Please see the function `follow-mode'.
(defalias 'turn-off-follow-mode #[nil "\300\301!\207" [follow-mode -1] 2 (#$ . 5894)])
(put 'follow-mode 'permanent-local t)
#@91 Non-nil if Follow mode is enabled.
Use the command `follow-mode' to change this variable.
(defvar follow-mode nil (#$ . 6087))
(make-variable-buffer-local 'follow-mode)
#@1448 Toggle Follow mode.

If called interactively, enable Follow mode if ARG is positive, and
disable it if ARG is zero or negative.  If called from Lisp, also
enable the mode if ARG is omitted or nil, and toggle it if ARG is
`toggle'; disable the mode otherwise.

Follow mode is a minor mode that combines windows into one tall
virtual window.  This is accomplished by two main techniques:

* The windows always displays adjacent sections of the buffer.
  This means that whenever one window is moved, all the
  others will follow.  (Hence the name Follow mode.)

* Should point (cursor) end up outside a window, another
  window displaying that point is selected, if possible.  This
  makes it possible to walk between windows using normal cursor
  movement commands.

Follow mode comes to its prime when used on a large screen and two or
more side-by-side windows are used.  The user can, with the help of
Follow mode, use these full-height windows as though they were one.
Imagine yourself editing a large function, or section of text, and
being able to use 144 or 216 lines instead of the normal 72... (your
mileage may vary).

To split one large window into two side-by-side windows, the commands
`\[split-window-right]' or `\[follow-delete-other-windows-and-split]' can be used.

Only windows displayed in the same frame follow each other.

This command runs the normal hook `follow-mode-hook'.

Keys specific to Follow mode:
\{follow-mode-map}
(defalias 'follow-mode #[(&optional arg) "\306 	\307=\203\n?\202\310	!\311V\211\203v\312\313\314\315\211$\210\316\317\320\321B\322\323$\210\312\324\325\315#\210\312\326\327\323\315$\210\312\330\331\323\315$\210\312\332\331\323\315$\210\312\333\331\323\315$\210\203T\334\303!\210\335\f\203^\334\305!\210\323\3363\3372\3401\3410\342/\343.\344-\202\367\345 \323@A@\204\227A\203\227\346\302A@\"@AAA\202}@\204\270\347\350\351!\322\"\211B\350\351!=\204\262\352\351B\"\210)\353\324\325\"\210*\354\355!\210\354\356!\210\354\357!\210\354\360!\210\354\361!\210\354\362!\210\354\363!\210\354\305!\210\353\333\331\315#\210\353\332\331\315#\210\353\330\331\315#\210\353\326\327\315#\210\353\313\314\315#\210\364\365\n\203\366\202\367\"\210\370\371!\203)\306 \203\306 \232\203)\372C\373\374\n\203#\375\202$\376C#\210))\377 \210\n\207" [#1=#:last-message arg follow-mode isearch-lazy-highlight follow-hide-ghost-cursors cursor-in-non-selected-windows current-message toggle prefix-numeric-value 0 add-hook compilation-filter-hook follow-align-compilation-windows t advice--add-function :before #[nil "\300\301!\207" [default-value pre-redisplay-function] 2] #[(gv--val) "\301\302\"\207" [gv--val set-default pre-redisplay-function] 3] follow-pre-redisplay-function nil window-size-change-functions follow-window-size-change after-change-functions follow-after-change isearch-update-post-hook follow-post-command-hook replace-update-post-hook ispell-update-post-hook make-local-variable all-windows follow-window-start follow-window-end follow-set-window-start follow-recenter follow-pos-visible-in-window-p follow-all-followers follow-move-to-window-line buffer-list buffer-local-value advice--remove-function default-value pre-redisplay-function set-default remove-hook kill-local-variable move-to-window-group-line-function selected-window-group-function pos-visible-in-window-group-p-function recenter-window-group-function set-window-group-start-function window-group-end-function window-group-start-function run-hooks follow-mode-hook follow-mode-on-hook follow-mode-off-hook called-interactively-p any " in current buffer" message "Follow mode %sabled%s" "en" "dis" force-mode-line-update following buffers #2=#:new local] 6 (#$ . 6264) (list (or current-prefix-arg 'toggle))])
(defvar follow-mode-hook nil)
(byte-code "\301\302N\204\f\303\301\302\304#\210\305\306\307\310\211%\207" [follow-mode-map follow-mode-hook variable-documentation put "Hook run after entering or leaving `follow-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" add-minor-mode follow-mode follow-mode-line-text nil] 6)
#@66 Find-file hook for Follow mode.  See the variable `follow-auto'.
(defalias 'follow-find-file-hook #[nil "\205\301\302!\207" [follow-auto follow-mode 1] 2 (#$ . 10440)])
#@468 Calculate the correct value for point after a scrolling operation.

DEST is our default position, typically where point was before the scroll.
If `scroll-preserve-screen-position' is non-nil and active, DEST will be
in the same screen position as before the scroll.  WINDOWS is the list of
windows in the follow chain.

This function attempts to duplicate the point placing from
`window_scroll_line_based' in the Emacs core source window.c.

Return the new position.
(defalias 'follow-get-scrolled-point #[(dest windows) "\203\f	\306N\203\f\n\207\212\nb\210i\307\310!\210iZ)\311@!r\312\216\313\f@\314\"\210\212\315 b\210\307\310!\210`,\311\316!@!r\317\216\313\f@\314\"\210\212\320\321\322\"b\210\323 \203Q`\202S`S,\nW\203\311@!r\324\216\313\f@\314\"\210\212b\210\307\310B!\210`,\202\246\n
V\203\245\311\316!@!r\325\216\313\f@\314\"\210\212
b\210\307\310B!\210`,\202\246\n+\207" [scroll-preserve-screen-position this-command dest windows save-selected-window--state limitn scroll-command vertical-motion 0 internal--before-with-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] select-window norecord window-start reverse #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] window-end nil t pos-visible-in-window-p #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] limit0 dest-column] 5 (#$ . 10619)])
#@202 Scroll the text in a follow mode window chain up by ARG lines.
If ARG is nil, scroll the size of the current window.

This is an internal function for `follow-scroll-up' and
`follow-scroll-up-window'.
(defalias 'follow-scroll-up-arg #[(arg) "`\306 \3071\310\n!\210\3110\202+\210\3121\313 \210\3140\202+\210\315!\210	b\210\316\317\311\"\204\2038\f\320N\204;	b\210\314\211*\207" [owin opoint arg scroll-preserve-screen-position this-command follow-fixed-window selected-window (end-of-buffer) scroll-up-command nil (error) follow-previous-window t select-window signal end-of-buffer scroll-command] 3 (#$ . 12178)])
#@208 Scroll the text in a follow mode window chain down by ARG lines.
If ARG is nil, scroll the size of the current window.

This is an internal function for `follow-scroll-down' and
`follow-scroll-down-window'.
(defalias 'follow-scroll-down-arg #[(arg) "`\305	!\210\n\203\306N\204b\210\307\211)\207" [opoint arg scroll-preserve-screen-position this-command follow-fixed-window scroll-down-command scroll-command t] 2 (#$ . 12814)])
#@378 Scroll text in a Follow mode window up by that window's size.
The other windows in the window chain will scroll synchronously.

If called with no ARG, the `next-screen-context-lines' last lines of
the window will be visible after the scroll.

If called with an argument, scroll ARG lines up.
Negative ARG means scroll downward.

Works like `scroll-up' when not in Follow mode.
(defalias 'follow-scroll-up-window #[(&optional arg) "\204\302	!\207	\303=\203\304 \207\305	!\207" [follow-mode arg scroll-up-command - follow-scroll-down-window follow-scroll-up-arg] 2 (#$ . 13257) "P"])
(put 'follow-scroll-up-window 'scroll-command t)
#@394 Scroll text in a Follow mode window down by that window's size.
The other windows in the window chain will scroll synchronously.

If called with no ARG, the `next-screen-context-lines' top lines of
the window in the chain will be visible after the scroll.

If called with an argument, scroll ARG lines down.
Negative ARG means scroll upward.

Works like `scroll-down' when not in Follow mode.
(defalias 'follow-scroll-down-window #[(&optional arg) "\204\302	!\207	\303=\203\304 \207\305	!\207" [follow-mode arg scroll-down-command - follow-scroll-up-window follow-scroll-down-arg] 2 (#$ . 13900) "P"])
(put 'follow-scroll-down-window 'scroll-command t)
#@318 Scroll text in a Follow mode window chain up.

If called with no ARG, the `next-screen-context-lines' last lines of
the bottom window in the chain will be visible in the top window.

If called with an argument, scroll ARG lines up.
Negative ARG means scroll downward.

Works like `scroll-up' when not in Follow mode.
(defalias 'follow-scroll-up #[(&optional arg) "\204\306	!\207	\203\307	!\207\310 \311\312\n!@!\211d=\2034\f\203(m\203/\313\314\315\"\202Jdb\202J\316\n@!\210\203@b\210\317
[!\210\320\n@`\"*\207" [follow-mode arg windows end scroll-error-top-bottom next-screen-context-lines scroll-up-command follow-scroll-up-arg follow-all-followers window-end reverse signal end-of-buffer nil select-window vertical-motion set-window-start] 4 (#$ . 14565) "P"])
(put 'follow-scroll-up 'scroll-command t)
#@321 Scroll text in a Follow mode window chain down.

If called with no ARG, the `next-screen-context-lines' top lines of
the top window in the chain will be visible in the bottom window.

If called with an argument, scroll ARG lines down.
Negative ARG means scroll upward.

Works like `scroll-down' when not in Follow mode.
(defalias 'follow-scroll-down #[(&optional arg) "\204\306	!\207	\203\307	!\207\310 \311\n!@\312\n@!\211e=\2037
\203+o\2032\313\314\315\"\202eeb\202e\316!\210\fb\210\317\320\321!\203L\322\202M\323#[!\210\324`\"\210\fb\210\317S!\210\325\211+\207" [follow-mode arg windows win start scroll-error-top-bottom scroll-down-command follow-scroll-down-arg follow-all-followers reverse window-start signal beginning-of-buffer nil select-window vertical-motion - window-height 2 1 set-window-start t header-line-format next-screen-context-lines follow-internal-force-redisplay] 6 (#$ . 15392) "P"])
(put 'follow-scroll-down 'scroll-command t)
#@122 Scroll the bottom-most window in the current Follow chain.
This is to be called by `comint-postoutput-scroll-to-bottom'.
(defalias 'follow-comint-scroll-to-bottom #[(&optional _window) "p\306 \307 =\310\n\204\311 \211\205F\312\310!\210`\n\203%	\202+\313\314!!@\315
!\210\fb\210\310\316
!\210\n?\205E\315	!\210q*,\207" [buffer selected is-selected some-window pos win selected-window window-buffer nil get-buffer-window comint-adjust-point last follow-all-followers select-window follow-adjust-window follow-windows-start-end-cache] 3 (#$ . 16377)])
#@107 Align the windows of the current Follow mode buffer.
This is to be called from `compilation-filter-hook'.
(defalias 'follow-align-compilation-windows #[nil "p\306 \307 \205>\310 \205>	\205>\311	!\312!\n=\204(\f@\313	!\210\314\f	\315#\210\316	=?\205=\313!\210\nq)+\207" [selected win buffer follow-mode windows follow-windows-start-end-cache get-buffer-window selected-window waiting-for-user-input-p follow-all-followers window-buffer select-window follow-redisplay t nil] 4 (#$ . 16951)])
#@602 Create two side by side windows and enter Follow mode.

Execute this command to display as much as possible of the text
in the selected window.  All other windows, in the current
frame, are deleted and the selected window is split in two
side-by-side windows.  Follow mode is activated, hence the
two windows always will display two successive pages.
(If one window is moved, the other one will follow.)

If ARG is positive, the leftmost window is selected.  If negative,
the rightmost is selected.  If ARG is nil, the leftmost window is
selected if the original window is the first one in the frame.
(defalias 'follow-delete-other-windows-and-split #[(&optional arg) "\204
\304 \305 =?\206\205\306!\307W\310 \311 \210\312 \210\n\2030\313\314!\210\315\304 	\"\210\316\317\314!*\207" [arg start other follow-internal-force-redisplay selected-window frame-first-window prefix-numeric-value 0 window-start delete-other-windows split-window-right other-window 1 set-window-start t follow-mode] 3 (#$ . 17463) "P"])
#@69 Show BUFFER in all windows in the current Follow mode window chain.
(defalias 'follow-switch-to-buffer #[(buffer) "\303 \304 \203\305@!\210\306\n!\210A\211\204\n\305	!*\207" [windows orig-window buffer selected-window follow-all-followers select-window switch-to-buffer] 3 (#$ . 18492) "BSwitch to Buffer: "])
#@71 Show BUFFER in all windows on this frame.
Defaults to current buffer.
(defalias 'follow-switch-to-buffer-all #[(&optional buffer) "\204p\302 \303\304\305\"\210\306	!\210\307 )\207" [buffer orig-window selected-window walk-windows #[(win) "\302!\210\303	!\207" [win buffer select-window switch-to-buffer] 2] no-minibuf select-window follow-redisplay] 3 (#$ . 18817) (list (read-buffer "Switch to Buffer: " (current-buffer)))])
#@74 Show current buffer in all windows on this frame, and enter Follow mode.
(defalias 'follow-switch-to-current-buffer-all #[nil "\204\300\301!\210\302 \207" [follow-mode 1 follow-switch-to-buffer-all] 2 (#$ . 19255) nil])
#@49 Select the next window showing the same buffer.
(defalias 'follow-next-window #[nil "\301\302 !A\211\203\303@!\202\304\305\306\")\207" [succ follow-split-followers follow-all-followers select-window error "%s" "No more windows"] 4 (#$ . 19484) nil])
#@53 Select the previous window showing the same buffer.
(defalias 'follow-previous-window #[nil "\301\302 !@\211\203\303@!\202\304\305\306\")\207" [pred follow-split-followers follow-all-followers select-window error "%s" "No more windows"] 4 (#$ . 19746) nil])
#@63 Select the first window in the frame showing the same buffer.
(defalias 'follow-first-window #[nil "\300\301 @!\207" [select-window follow-all-followers] 2 (#$ . 20016) nil])
#@62 Select the last window in the frame showing the same buffer.
(defalias 'follow-last-window #[nil "\300\301\302 !@!\207" [select-window reverse follow-all-followers] 3 (#$ . 20197) nil])
#@234 Recenter the middle window around point.
Rearrange all other windows around the middle window.

With a positive argument, place the current line ARG lines
from the top.  With a negative argument, place it -ARG lines
from the bottom.
(defalias 'follow-recenter #[(&optional arg) "\203+`\306!\307Y\203\310 \210	b\210\311!\202)\312 \210	b\210\311!\210\313\211*\207`\314 \211GS\315\245\f8\316
!\210b\210\311 +\207" [arg p follow-internal-force-redisplay dest windows win prefix-numeric-value 0 follow-first-window recenter follow-last-window t follow-all-followers 2 select-window] 4 (#$ . 20390) "P"])
#@258 Arrange windows displaying the same buffer in successor order.
This function can be called even if the buffer is not in Follow mode.

Hopefully, there should be no reason to call this function when in
Follow mode since the windows should always be aligned.
(defalias 'follow-redraw #[nil "\300\301!\210\302 \207" [sit-for 0 follow-redisplay] 2 (#$ . 21012) nil])
#@269 Move point to the end of the buffer, Follow mode style.

If the end is not visible, it will be displayed in the last possible
window in the Follow mode window chain.

The mark is left at the previous position.  With arg N, put point N/10
of the way from the true end.
(defalias 'follow-end-of-buffer #[(&optional arg) "\303 `\n\203\304\305	!@!\210\202\"\306\307	!!\204\"\304\305	!@!\210b\210\310\n!*\207" [pos followers arg follow-all-followers select-window reverse follow-select-if-end-visible follow-windows-start-end end-of-buffer] 3 (#$ . 21382) "P"])
#@180 Sorting function for W1 and W2 based on their positions.
Return non-nil if W1 is above W2; if their top-lines
are at the same position, return non-nil if W1 is to the
left of W2.
(defalias 'follow--window-sorter #[(w1 w2) "\306!\306\n!	A@A@\f
U\203	@@W\202!\f
W,\207" [w1 edge-1 w2 edge-2 y1 y2 window-pixel-edges] 2 (#$ . 21953)])
#@223 Return all windows displaying the same buffer as the WIN.
The list is sorted with topmost and leftmost windows first, and
contains only windows in the same frame as WIN.  If WIN is nil,
it defaults to the selected window.
(defalias 'follow-all-followers #[(&optional win) "\302!\204	\303 \304\305!\306\307!#\310	\311\")\207" [win windows window-live-p selected-window get-buffer-window-list window-buffer no-minibuf window-frame sort follow--window-sorter] 5 (#$ . 22302)])
#@153 Split WINDOWS into two sets: predecessors and successors.
Return `(PRED . SUCC)' where `PRED' and `SUCC' are ordered starting
from the selected window.
(defalias 'follow-split-followers #[(windows &optional win) "\204\303 \304\n@=\204\n@	B\nA\211\202\n	\nA)B\207" [win pred windows selected-window nil] 3 (#$ . 22789)])
#@275 Calculate the end position for window WIN.
Return (END-POS END-OF-BUFFER).

Actually, the position returned is the start of the line after
the last fully-visible line in WIN.  END-OF-BUFFER is t when EOB
is fully-visible in WIN.  If WIN is nil, the selected window is
used.
(defalias 'follow-calc-win-end #[(&optional win) "\206\305 \306!\307	8	A@Z\310\311\312\nS#!\313\"\2032\314\315\"\211\313d\")D\2025\316D,\207" [win edges ht last-line-pos end selected-window window-inside-pixel-edges 3 posn-point posn-at-x-y 0 pos-visible-in-window-p window-end t nil] 6 (#$ . 23127)])
#@223 Determine the start of window WIN in a Follow mode window chain.
WINDOWS is a list of chained windows, and POS is the starting
position for the first window in the list.  If WIN is nil, return
the point below all windows.
(defalias 'follow-calc-win-start #[(windows pos win) "\203+@	=\204+\304@!\305@\306#\210\307@!@\305@\n\306#\210A)\202\207" [windows win old-start pos window-start set-window-start noforce follow-calc-win-end] 4 (#$ . 23727)])
#@137 Test if the cached value of `follow-windows-start-end' can be used.
Note that this handles the case when the cache has been set to nil.
(defalias 'follow-cache-valid-p #[(windows) "\304\n\203,\203,	\203,@	@@=\205\"\305@!	@A@=A	A\202\n\2057?\2057	?*\207" [follow-windows-start-end-cache cache res windows t window-start] 2 (#$ . 24197)])
(put 'follow-cache-valid-p 'byte-optimizer 'byte-compile-inline-expand)
#@72 Return a list of (WIN START END BUFFER-END-P) for window list WINDOWS.
(defalias 'follow-windows-start-end #[(windows) "\306	\203.\203.\n\203.@\n@@=\205$\307@!\n@A@=A\nA\202\2059?\2059\n?+\203?	\207\310 \311\311
\211\203m@
\312
\313\"\210
\307 \314 BB\fBA\211\204N*\312
\313\"\210\f\237\211*\207" [windows follow-windows-start-end-cache cache res win-start-end orig-win t window-start selected-window nil select-window norecord follow-calc-win-end w --dolist-tail--] 4 (#$ . 24631)])
#@37 Non-nil when POS is visible in WIN.
(defalias 'follow-pos-visible #[(pos win win-start-end) "	\236A\n@Y\205\nA@W\206\304\n8)\207" [win win-start-end wstart-wend-bend pos 2] 2 (#$ . 25163)])
(put 'follow-pos-visible 'byte-optimizer 'byte-compile-inline-expand)
#@144 Non-nil if the follower windows are aligned.
The argument, WIN-START-END, should be a list of the form
returned by `follow-windows-start-end'.
(defalias 'follow-windows-aligned-p #[(win-start-end) "\302	\203!\203!	A\203\303	@8	A@A@=	A\211\204)\207" [result win-start-end t 2] 3 (#$ . 25438)])
(put 'follow-windows-aligned-p 'byte-optimizer 'byte-compile-inline-expand)
#@60 Non-nil when the `window-point' is visible in all windows.
(defalias 'follow-point-visible-all-windows-p #[(win-start-end) "\305\2035	\2035\306	@@!	@@	\n	\236A\f@Y\205-\fA@W\206-\307\f8,	A\202)\207" [res win-start-end win pos wstart-wend-bend t window-point 2] 3 (#$ . 25824)])
#@63 Make sure that the start of WIN starts at a full screen line.
(defalias 'follow-update-window-start #[(win) "\212\301!b\210n?\205#\302\303\"\210`\301!=?\205#\302\304\"\210\305`\306#)\207" [win window-start vertical-motion 0 1 set-window-start noforce] 4 (#$ . 26125)])
#@83 Select and return a window, if DEST is visible in it.
Return the selected window.
(defalias 'follow-select-if-visible #[(dest win-start-end) "\306\211	\204>\n\203>\n@@\n	\n\236A\f
@Y\205-\f
A@W\206-\307
8,\2038@\310	!\210\nA\202	*\207" [wse win win-start-end dest pos wstart-wend-bend nil 2 select-window] 3 (#$ . 26407)])
#@54 Select and return a window, if end is visible in it.
(defalias 'follow-select-if-end-visible #[(win-start-end) "\303\204;	\203;d\304	@8=\2035\305	@8\2035\306	@@!\211\205)dd\n^=)\2035	@@\307!\210	A\202)\207" [win win-start-end end nil 2 3 window-end select-window] 4 (#$ . 26755)])
#@223 Try to select one of WINDOWS without repositioning the topmost window.
If one of the windows in WINDOWS contains DEST, select it, call
`follow-redisplay', move point to DEST, and return that window.
Otherwise, return nil.
(defalias 'follow-select-if-visible-from-first #[(dest windows) "\305\211\212\306\n@!b\210\307\310\n@\"\210`Y\203P\311 \312\216\n	\204O\n\203O\313\n@`\314#\210\315\n@!\211@b\210A@\204B`W\203I\n@\211\202\nA\202+)	\203b\316	!\210\317\n\211@\"\210b\210	*\207" [end-pos-end-p win windows dest #1=#:wconfig nil window-start vertical-motion 0 current-window-configuration #[nil "\301!\207" [#1# set-window-configuration] 2] set-window-start noforce follow-calc-win-end select-window follow-redisplay] 5 (#$ . 27058)])
#@70 When non-nil, indicates `follow-windows-start-end-cache' is invalid.
(defvar follow-start-end-invalid t (#$ . 27820))
(make-variable-buffer-local 'follow-start-end-invalid)
#@459 Reposition the WINDOWS around WIN.
Should point be too close to the roof we redisplay everything
from the top.  WINDOWS should contain a list of windows to
redisplay; it is assumed that WIN is a member of the list.
Should WINDOWS be nil, the windows displaying the
same buffer as WIN, in the current frame, are used.
Should WIN be nil, the selected window is used.
If PRESERVE-WIN is non-nil, keep WIN itself unchanged while
repositioning the other windows.
(defalias 'follow-redisplay #[(&optional windows win preserve-win) "\204\306 	\204\307!\310!\311	\n#\312	#\211\nU\203=\313C\314\315!\2057
\2057\316\317
\")\210\202z\f\nW\203`\320C\314\315!\205U
\205U\316\317
\")\210\321	\n$\202z\322C\314\315!\205r
\205r\316\317
\")\210\323	\n$	\324\211\203\256@\203\227=\204\236\325\"\210\326!@A\211\204\206*\324\211,\207" [win windows old-win-start try-first-start try-win-start args selected-window follow-all-followers window-start follow-estimate-first-window-start follow-calc-win-start "exact" boundp follow-debug apply message "above" follow-calculate-first-window-start-from-above "below" follow-calculate-first-window-start-from-below nil set-window-start follow-calc-win-end start w --dolist-tail-- preserve-win follow-start-end-invalid] 6 (#$ . 28000)])
#@165 Estimate the position of the first window.
The estimate is computed by assuming that the window WIN, which
should be a member of WINDOWS, starts at position START.
(defalias 'follow-estimate-first-window-start #[(windows win start) "\306	\"@\212b\210\307\310	\"\210\n\311\211\203)
@\307\312\f![\f\"\210
A\211\204*`*\207" [windows win windows-before start w --dolist-tail-- follow-split-followers vertical-motion 0 nil window-text-height] 4 (#$ . 29333)])
(defalias 'follow-calculate-first-window-start-from-above #[(windows guess win start) "\212\306\211\211b\210\n\2043\307\310\f@\"\310U\204\311d\202\n\312\f`
#\211Y\203\n\311`\202\n,\207" [res win-start done guess windows win nil vertical-motion 1 t follow-calc-win-start start] 5])
(defalias 'follow-calculate-first-window-start-from-below #[(windows guess &optional win start) "\206\306 	\206\307!\212\310\211\211\211b\210\311\312@\"\210`
\204o`\311\313@\"\313U\204=\314e\202%\315`#`\nY\203Q\314`\202%\f	U\203^\314`\202%\f	W\203j\314\211\202&`\202%-\207" [win start opoint res win-start done selected-window window-start nil vertical-motion 0 -1 t follow-calc-win-start guess windows] 5])
#@163 Make sure windows displaying the end of a buffer aren't recentered.
This is done by reading and rewriting the start position of
non-first windows in Follow mode.
(defalias 'follow-avoid-tail-recenter #[(&rest _rest) "p\306 \211\307\310	!?\205M\311\n!\312\n!\313\n!B\312\n!q\210\f\235\204.\fB\202>\203>d
=\203>\314\n
\"\210\315\n\316\317#\211	*=\203q,\207" [orig-buffer top win who pair start frame-first-window nil window-minibuffer-p window-start window-buffer window-frame set-window-start next-window not t follow-mode] 5 (#$ . 30555)])
#@126 The buffer current at the last call to `follow-adjust-window' or nil.
follow-mode is not necessarily enabled in this buffer.
(defvar follow-prev-buffer nil (#$ . 31122))
(defalias 'follow-pre-redisplay-function #[(wins) "\301=\204\203<\205\302 >\205\303 \207" [wins t selected-window follow-post-command-hook] 2])
#@73 Ensure that the windows in Follow mode are adjacent after each command.
(defalias 'follow-post-command-hook #[nil "\304 ?\205\"\305\306 r\307!q\210\n9\203\n\310N\204\311\312!+\207" [win follow-inside-post-command-hook-call this-command follow-windows-start-end-cache input-pending-p t selected-window window-buffer follow-mode-use-cache nil follow-adjust-window] 2 (#$ . 31454)])
(defalias 'follow-adjust-window #[(win) "\306!p=\204\f\307\310!\210p	=\204?\311	!\203+r	q\210\n\203*\312\303!\203*\313\303!)\n\2037\312\303!\2037\314\311p!\203?p\n\205`\315!?\205`\316!
\203u\317C7\320\321!\205f\205f\322\3237\")\210\324\f\"\210\325`\f\"b\210\314`8\326\f@!\210\327\f!\21199\330:9\203\257:\203\2579A\203\246\3319@89A@A@=:9A\2119\204\215:*;899<9\236A=<=@Y\205\334<=A@W\206\334\331=8,>\314?;\203\354>\204\357\314@A\204\2258d=\203y>\203%;\203%B\332>\204%\333C7\320\321!\205 \205 \322\3237\")\210\202Y\3349!\203O\335C7\320\321!\205@\205@\322\3237\")\210\330>\314;8b\210\202Y\336C7\320\321!\205c\205c\322\3237\")\210\337\340\f!@!\2108b\210\314\211>;\202Y>\203\234;\203\234\341C7\320\321!\205\227\205\227\322\3237\")\210\202Y\34289\"\203\305\343C7\320\321!\205\271\205\271\322\3237\")\2108b\210\314>\202Y>\203\343\344C7\320\321!\205\336\205\336\322\3237\")\210\202Y89@A@W\203\345C7\320\321!\205\205\322\3237\")\210\337\f@!\2108b\210\314\211>;\202Y\3468\f\"\203=\347C7\320\321!\2052\2052\322\3237\")\210\330\211>;\202Y\350C7\320\321!\205Q\205Q\322\3237\")\210\314\211>;\351 =\204\225\352!C\353\354!\314#\210\331\355C\330#8\203\216\356!Dr\357\216\337D@\360\"\210\314y\210+\202\224\361C\"\210)>\204\300`E\362 \210`EU\204\256Eb\210\362 \210)\330?\363 \210\327\f!9\314\211@;A\204;\204\37699\330:9\203\370:\203\3709A\203\357\3319@89A@A@=:9A\2119\204\326:*\203\3649!\204O\314A\324\f\351 ?#\210\327\f!9\314@899<9\236A=<=@Y\205@<=A@W\206@\331=8,\204O\34289\"\2108b\210\365 \203\\\366\351 \f9#\210.\363 \207" [win follow-prev-buffer follow-mode cursor-in-non-selected-windows windows follow-fixed-window window-buffer cl--assertion-failed (eq (window-buffer win) (current-buffer)) buffer-live-p local-variable-p default-value nil window-minibuffer-p follow-all-followers "fixed" boundp follow-debug apply message follow-redisplay follow-get-scrolled-point follow-update-window-start follow-windows-start-end t 2 (backward-delete-char delete-backward-char backward-delete-char-untabify kill-region) "Max: same" follow-select-if-end-visible "Max: end visible" "Max: default" select-window last "same" follow-select-if-visible "visible" "visible in selected." "before first" follow-select-if-visible-from-first "Below first" "None" selected-window window-point set-window-start window-start pos-visible-in-window-p internal--before-with-selected-window #[nil "\301!\207" [save-selected-window--state internal--after-with-selected-window] 2] norecord set-window-point redisplay follow-avoid-tail-recenter follow-point-visible-all-windows-p region-active-p follow-maximize-region args dest win-start-end result aligned pos wstart-wend-bend visible selected-window-up-to-date follow-windows-start-end-cache follow-internal-force-redisplay this-command p save-selected-window--state opoint] 6])
#@66 Make a highlighted region stretching multiple windows look good.
(defalias 'follow-maximize-region #[(win windows win-start-end) "\306	\"\211@\nA\307\203+@\n\236\310@
A@\311
8S]\"\210A\211\204\f\205C\310\f@\f@\n\236A@\"\210\fA\211\204/\307,\207" [windows win all pred succ data follow-split-followers nil set-window-point 2 win-start-end] 6 (#$ . 34887)])
(defalias 'follow-scroll-bar-toolkit-scroll #[(event) "\301!\210\302!\207" [event scroll-bar-toolkit-scroll follow-redraw-after-event] 2 nil "e"])
(defalias 'follow-scroll-bar-drag #[(event) "\301!\210\302!\207" [event scroll-bar-drag follow-redraw-after-event] 2 nil "e"])
(defalias 'follow-scroll-bar-scroll-up #[(event) "\301!\210\302!\207" [event scroll-bar-scroll-up follow-redraw-after-event] 2 nil "e"])
(defalias 'follow-scroll-bar-scroll-down #[(event) "\301!\210\302!\207" [event scroll-bar-scroll-down follow-redraw-after-event] 2 nil "e"])
(defalias 'follow-mwheel-scroll #[(event) "\301!\210\302!\207" [event mwheel-scroll follow-redraw-after-event] 2 nil "e"])
#@53 Re-align the Follow mode windows affected by EVENT.
(defalias 'follow-redraw-after-event #[(event) "\304!@\305	!\306 \307\310\n\"\205.	\306 =?\205.\311	!\210\312 \210\305!\n=?\205.\311!+\207" [event window buffer orig-win event-end window-buffer selected-window buffer-local-value follow-mode select-window follow-redisplay] 3 (#$ . 35953)])
#@51 Redraw all windows in FRAME, when in Follow mode.
(defalias 'follow-window-size-change #[(frame) "?\205r\305 \306\n!\210\307 \310\311\216\312\313\314\"\210+\306	!*\207" [follow-inside-post-command-hook-call orig-frame frame seen-buffers picked-window selected-frame select-frame selected-window nil #[nil "\301\302\"\207" [picked-window select-window norecord] 3] walk-windows #[(win) "\306!\211\n>?\2055	q\210\2055\307!
\f>\204$\310\f\"\210\202/\311
\312\"\210\313 \210\314 )	\nB\211)\207" [win buf seen-buffers follow-mode windows picked-window window-buffer follow-all-followers follow-redisplay select-window norecord follow-post-command-hook selected-window] 4] no-minibuf] 3 (#$ . 36310)])
(add-hook 'window-scroll-functions 'follow-avoid-tail-recenter t)
#@56 After change function: set `follow-start-end-invalid'.
(defalias 'follow-after-change #[(_beg _end _old-len) "\301\211\207" [follow-start-end-invalid t] 2 (#$ . 37097)])
#@244 Return position at which display currently starts in the
Follow Mode group of windows which includes WINDOW.

WINDOW must be a live window and defaults to the selected one.
This is updated by redisplay or by calling
`follow-set-window-start'.
(defalias 'follow-window-start #[(&optional window) "\302!\303	@!)\207" [window windows follow-all-followers window-start] 2 (#$ . 37275)])
#@548 Return position at which display currently ends in the Follow
  Mode group of windows which includes WINDOW.

  WINDOW must be a live window and defaults to the selected one.
  This is updated by redisplay, when it runs to completion.
  Simply changing the buffer text or setting `window-start' does
  not update this value.

  Return nil if there is no recorded value.  (This can happen if
  the last redisplay of WINDOW was preempted, and did not
  finish.)  If UPDATE is non-nil, compute the up-to-date position
  if it isn't already recorded.
(defalias 'follow-window-end #[(&optional window update) "\305!\302	!@\203\f\203\306	\211@\"\210\307\n\"*\207" [window windows last update follow-start-end-invalid follow-all-followers follow-redisplay window-end] 3 (#$ . 37667)])
#@324 Make display in the Follow Mode group of windows which includes
WINDOW start at position POS in WINDOW's buffer.

WINDOW must be a live window and defaults to the selected one.  Return
POS.  Optional third arg NOFORCE non-nil inhibits next redisplay from
overriding motion of point in order to display at this exact start.
(defalias 'follow-set-window-start #[(window pos &optional noforce) "\305!\306\307	@\f#)\207" [window windows follow-start-end-invalid pos noforce follow-all-followers t set-window-start] 4 (#$ . 38461)])
#@1144 Return non-nil if position POS is currently on the frame in one of
  the windows in the Follow Mode group which includes WINDOW.

WINDOW must be a live window and defaults to the selected one.

Return nil if that position is scrolled vertically out of view.  If a
character is only partially visible, nil is returned, unless the
optional argument PARTIALLY is non-nil.  If POS is only out of view
because of horizontal scrolling, return non-nil.  If POS is t, it
specifies the position of the last visible glyph in WINDOW.  POS
defaults to point in WINDOW; WINDOW defaults to the selected window.

If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil,
the return value is a list of 2 or 6 elements (X Y [RTOP RBOT ROWH VPOS]),
where X and Y are the pixel coordinates relative to the top left corner
of the actual window containing it.  The remaining elements are
omitted if the character after POS is fully visible; otherwise, RTOP
and RBOT are the number of pixels off-window at the top and bottom of
the screen line ("row") containing POS, ROWH is the visible height
of that row, and VPOS is the row number (zero-based).
(defalias 'follow-pos-visible-in-window-p #[(&optional pos window partially) "\306!\302	!@\203\307	\211@\"\210\310	!\302\f!@\311\211\312=\203-
\202V\2063`\3132V\f\203T\314\f@8W\203M\315\313\f@\"\210\fA\211\204=
0\316@#.\207" [window windows last follow-start-end-invalid cache last-elt follow-all-followers follow-redisplay follow-windows-start-end nil t element 2 throw pos-visible-in-window-p our-pos pertinent-elt pos partially] 5 (#$ . 39001)])
#@323 Position point relative to the Follow mode group containing the selected window.
ARG nil means position point at center of the window group.
Else, ARG specifies vertical position within the window group;
zero means top of the first window in the group, negative means
  relative to bottom of the last window in the group.
(defalias 'follow-move-to-window-line #[(arg) "\306 \307!\310	!\311\312\211\312\313\204CG\314\245\n\233\211@@\nA\211\203\314\n@\315
A@\314
8\312
@$\\\202$\311Y\203\200	A\203z	@\315
A@\314
8\312
@$Y\203zZ\\	A\211\202K	@@\202\314\nA@\203\252\n@\316
A@\314
8\"[X\203\252\\\nA\211\202\201\n@@\nA\211\203\314\n@\315
A@\314
8\312
@$\\\202\255!\210\317!\\.\207" [windows start-end rev-start-end lines middle-window elt follow-all-followers follow-windows-start-end reverse 0 nil select-window 2 count-screen-lines count-lines move-to-window-line count arg] 8 (#$ . 40637)])
(provide 'follow)

Zerion Mini Shell 1.0