;ELC
;;; Compiled
;;; in Emacs version 26.1
;;; 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!\210\302\304!\210\305\301\306\307\310\311\312\313&\207" [provide viper-ex require viper-keym viper-util custom-declare-group nil "Viper support for Ex commands." :prefix "ex-" :group viper] 8)
(defconst viper-ex-work-buf-name " *ex-working-space*")
(defvar viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
(defconst viper-ex-tmp-buf-name " *ex-tmp*")
(defconst viper-ex-print-buf-name " *ex-print*")
(defvar viper-ex-print-buf (get-buffer-create viper-ex-print-buf-name))
(defalias 'ex-cmd-obsolete #[(name) "\301\302\"\207" [name error "`%s': Obsolete command, not supported by Viper"] 3])
(defalias 'ex-cmd-not-yet #[(name) "\301\302\"\207" [name error "`%s': Command not implemented in Viper"] 3])
(defconst ex-token-alist '(("!" (ex-command)) ("&" (ex-substitute t)) ("=" (ex-line-no)) (">" (ex-line "right")) ("<" (ex-line "left")) ("Buffer" (if ex-cycle-other-window (viper-switch-to-buffer) (viper-switch-to-buffer-other-window))) ("Next" (ex-next (not ex-cycle-other-window))) ("PreviousRelatedFile" (ex-next-related-buffer -1)) ("RelatedFile" (ex-next-related-buffer 1)) ("W" "Write") ("WWrite" (save-some-buffers t)) ("Write" (save-some-buffers)) ("a" "append") ("args" (ex-args)) ("buffer" (if ex-cycle-other-window (viper-switch-to-buffer-other-window) (viper-switch-to-buffer))) ("c" "change") ("ch" "chdir") ("cd" (ex-cd)) ("chdir" (ex-cd)) ("copy" (ex-copy nil)) ("customize" (customize-group "viper")) ("delete" (ex-delete)) ("edit" (ex-edit)) ("file" (ex-set-visited-file-name)) ("g" "global") ("global" (ex-global nil) is-mashed) ("goto" (ex-goto)) ("help" (ex-help)) ("join" (ex-line "join")) ("k" (ex-mark) one-letter) ("kmark" (ex-mark)) ("m" "move") ("make" (ex-compile)) ("map" (ex-map)) ("mark" (ex-mark)) ("move" (ex-copy t)) ("next" (ex-next ex-cycle-other-window)) ("p" "print") ("preserve" (ex-preserve)) ("print" (ex-print)) ("put" (ex-put)) ("pwd" (ex-pwd)) ("quit" (ex-quit)) ("r" "read") ("re" "read") ("read" (ex-read)) ("recover" (ex-recover)) ("rewind" (ex-rewind)) ("s" "substitute") ("su" "substitute") ("sub" "substitute") ("set" (ex-set)) ("shell" (ex-shell)) ("source" (ex-source)) ("stop" (suspend-emacs)) ("sr" (ex-substitute t t)) ("submitReport" (viper-submit-report)) ("substitute" (ex-substitute) is-mashed) ("suspend" (suspend-emacs)) ("t" "transfer") ("tag" (ex-tag)) ("transfer" (ex-copy nil)) ("u" "undo") ("un" "undo") ("undo" (viper-undo)) ("unmap" (ex-unmap)) ("v" "vglobal") ("version" (viper-version)) ("vglobal" (ex-global t) is-mashed) ("visual" (ex-edit)) ("w" "write") ("wq" (ex-write t)) ("write" (ex-write nil)) ("xit" (ex-write t)) ("yank" (ex-yank)) ("~" (ex-substitute t t)) ("append" (ex-cmd-obsolete "append")) ("change" (ex-cmd-obsolete "change")) ("insert" (ex-cmd-obsolete "insert")) ("open" (ex-cmd-obsolete "open")) ("list" (ex-cmd-not-yet "list")) ("z" (ex-cmd-not-yet "z")) ("#" (ex-cmd-not-yet "#")) ("abbreviate" (error "`%s': Vi abbreviations are obsolete. Use the more powerful Emacs abbrevs" ex-token)) ("unabbreviate" (error "`%s': Vi abbreviations are obsolete. Use the more powerful Emacs abbrevs" ex-token))))
(defalias 'ex-cmd-is-mashed-with-args #[(cmd) "AA@\301=\205\n \207" [cmd is-mashed] 2])
(defalias 'ex-cmd-is-one-letter #[(cmd) "AA@\301=\205\n \207" [cmd one-letter] 2])
(defalias 'ex-cmd-execute #[(cmd) "\301A@!\207" [cmd eval] 2])
(defalias 'ex-splice-args-in-1-letr-cmd #[(key list) "\303\304\305\306O \"!\211\205% \307\nA@\306GW\205 \306\310OC\"\nAA@E)\207" [key list oneletter ex-cmd-is-one-letter assoc 0 1 append nil] 7])
(defalias 'ex-cmd-assoc #[(key list) "\304 \"\305\211\306=\203 \307 \"\2025 ;\203' \310 \"\2065 \307 \"\2025 \305=\2034 \310 \"\2025 \305\211A@;\203D \311\nA@ \"\n*\207" [key list result entry try-completion nil t assoc ex-splice-args-in-1-letr-cmd ex-cmd-assoc] 4])
(defconst ex-variable-alist '(("wrapscan") ("ws") ("wrapmargin") ("wm") ("tabstop-global") ("ts-g") ("tabstop") ("ts") ("showmatch") ("sm") ("shiftwidth") ("sw") ("shell") ("sh") ("readonly") ("ro") ("nowrapscan") ("nows") ("noshowmatch") ("nosm") ("noreadonly") ("noro") ("nomagic") ("noma") ("noignorecase") ("noic") ("noautoindent-global") ("noai-g") ("noautoindent") ("noai") ("magic") ("ma") ("ignorecase") ("ic") ("autoindent-global") ("ai-g") ("autoindent") ("ai") ("all")))
(defvar ex-token nil)
(defvar ex-token-type nil)
(defvar ex-addresses nil)
(defvar ex-flag nil)
(defvar ex-buffer nil)
(defvar ex-count nil)
(defvar ex-g-flag nil)
(defvar ex-g-variant nil)
(defvar ex-g-marks nil)
(defvar ex-reg-exp nil)
(defvar ex-repl nil)
(defvar ex-g-pat nil)
(byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\313\306\307&\210\300\314\315\316\304\317\306\307&\210\300\320\321\322\304\323\306\307&\207" [custom-declare-variable ex-unix-type-shell (let ((case-fold-search t)) (and (stringp shell-file-name) (string-match (concat "\\(" "csh$\\|csh.exe$" "\\|" "ksh$\\|ksh.exe$" "\\|" "^sh$\\|sh.exe$" "\\|" "[^a-z]sh$\\|[^a-z]sh.exe$" "\\|" "bash$\\|bash.exe$" "\\)") shell-file-name))) "Is the user using a unix-type shell under a non-OS?" :type boolean :group viper-ex ex-unix-type-shell-options (let ((case-fold-search t)) (if ex-unix-type-shell (cond ((string-match "\\(csh$\\|csh.exe$\\)" shell-file-name) "-f") ((string-match "\\(bash$\\|bash.exe$\\)" shell-file-name) "-noprofile")))) "Options to pass to the Unix-style shell.\nDon't put `-c' here, as it is added automatically." (choice (const nil) string) ex-compile-command "make" "The command to run when the user types :make." string viper-glob-function (cond (ex-unix-type-shell 'viper-glob-unix-files) (viper-ms-style-os-p 'viper-glob-mswindows-files) (t 'viper-glob-unix-files)) "Expand the file spec containing wildcard symbols.\nThe default tries to set this variable to work with Unix or MS Windows.\n\nHowever, if it doesn't work right for some types of Unix shells or some OS,\nthe user should supply the appropriate function and set this variable to the\ncorresponding function symbol." symbol] 8)
(defvar ex-tag nil)
(defvar ex-file nil)
(defvar ex-variant nil)
(defvar ex-offset nil)
(defvar ex-append nil)
(defvar ex-cmdfile nil)
(defvar ex-cmdfile-args "")
(defvar viper-keep-reading-filename nil)
(byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\305\306\307&\207" [custom-declare-variable ex-cycle-other-window t "If t, :n and :b cycles through files and buffers in other window.\nThen :N and :B cycles in the current window. If nil, this behavior is\nreversed." :type boolean :group viper-ex ex-cycle-through-non-files nil "Cycle through *scratch* and other buffers that don't visit any file."] 8)
(defvar viper-ex-last-shell-com nil)
(defvar viper-incomplete-ex-cmd nil)
(defvar viper-last-ex-prompt "")
(defalias 'viper-get-ex-com-subr #[nil "\305\211\306`!\210\307\310!\210\311`\312\313!{\314\f\"\211\203$ @\211\202' \315\211*\207" [case-fold-search cmd ex-token-type ex-token ex-token-alist nil set-mark re-search-forward "[a-zA-Z][a-zA-Z]*" command mark t ex-cmd-assoc non-command] 4])
(defalias 'viper-get-ex-token #[nil "\306 \307\216\310 !\211q\210\311\312w\210\313g\314U\203& |