• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/emacs-93/emacs/lisp/emulation/

Lines Matching +defs:viper +defs:next +defs:line

0 ;;; viper-ex.el --- functions implementing the Ex commands for Viper
29 (provide 'viper-ex)
33 (defvar viper-use-register)
34 (defvar viper-s-string)
35 (defvar viper-shift-width)
36 (defvar viper-ex-history)
37 (defvar viper-related-files-and-buffers-ring)
38 (defvar viper-local-search-start-marker)
39 (defvar viper-expert-level)
40 (defvar viper-custom-file-name)
41 (defvar viper-case-fold-search)
50 (or (featurep 'viper-util)
51 (load "viper-util.el" nil nil 'nosuffix))
52 (or (featurep 'viper-keym)
53 (load "viper-keym.el" nil nil 'nosuffix))
54 (or (featurep 'viper-cmd)
55 (load "viper-cmd.el" nil nil 'nosuffix))
59 (require 'viper-util)
61 (defgroup viper-ex nil
64 :group 'viper)
70 (defconst viper-ex-work-buf-name " *ex-working-space*")
71 (defvar viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
72 (defconst viper-ex-tmp-buf-name " *ex-tmp*")
73 (defconst viper-ex-print-buf-name " *ex-print*")
74 (defvar viper-ex-print-buf (get-buffer-create viper-ex-print-buf-name))
96 ("=" (ex-line-no))
97 (">" (ex-line "right"))
98 ("<" (ex-line "left"))
100 (viper-switch-to-buffer)
101 (viper-switch-to-buffer-other-window)))
102 ("Next" (ex-next (not ex-cycle-other-window)))
103 ("PreviousRelatedFile" (ex-next-related-buffer -1))
104 ("RelatedFile" (ex-next-related-buffer 1))
111 (viper-switch-to-buffer-other-window)
112 (viper-switch-to-buffer)))
114 ;; ch should be "change" but maintain old viper compatibility
119 ("customize" (customize-group "viper"))
127 ("join" (ex-line "join"))
132 ; old viper doesn't specify a default for "ma" so leave it undefined
136 ("next" (ex-next ex-cycle-other-window))
156 ("submitReport" (viper-submit-report))
164 ("undo" (viper-undo))
167 ("version" (viper-version))
317 :group 'viper-ex)
330 :group 'viper-ex)
335 :group 'viper-ex)
337 (defcustom viper-glob-function
338 (cond (ex-unix-type-shell 'viper-glob-unix-files)
339 ((eq system-type 'emx) 'viper-glob-mswindows-files) ; OS/2
340 (viper-ms-style-os-p 'viper-glob-mswindows-files) ; Microsoft OS
341 (viper-vms-os-p 'viper-glob-unix-files) ; VMS
342 (t 'viper-glob-unix-files) ; presumably UNIX
352 :group 'viper-ex)
375 ;; flag used in viper-ex-read-file-name to indicate that we may be reading
376 ;; multiple file names. Used for :edit and :next
377 (defvar viper-keep-reading-filename nil)
384 :group 'viper-ex)
389 :group 'viper-ex)
392 (defvar viper-ex-last-shell-com nil)
395 (defvar viper-incomplete-ex-cmd nil)
398 (defvar viper-last-ex-prompt "")
402 (defun viper-get-ex-com-subr ()
416 (defun viper-get-ex-token ()
418 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
419 (set-buffer viper-ex-work-buf)
426 ((looking-at "[a-z]") (viper-get-ex-com-subr))
455 (error viper-BadAddress))))
466 (error viper-BadAddress))))
474 (if (not (viper-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\/"))
487 (if (not (viper-looking-back "[^\\\\]\\(\\\\\\\\\\)*\\\\\\?"))
514 (error viper-BadExCommand))))))
520 (setq viper-incomplete-ex-cmd t)
553 ;; r! assumes that the next one is a shell command
555 ;; w ! assumes that the next one is a shell command
562 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
563 (set-buffer viper-ex-work-buf)
565 (cond ((viper-looking-back quit-regex1) (exit-minibuffer))
566 ((viper-looking-back stay-regex) (insert " "))
567 ((viper-looking-back quit-regex2) (exit-minibuffer))
580 (viper-looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)")
581 (viper-looking-back
586 (if (or (viper-looking-back "[a-zA-Z!=>&~][ \t]*[/?]*[ \t]*")
587 (viper-looking-back "\\([ \t]*['`][ \t]*[a-z]*\\)")
592 (viper-alist-to-list ex-token-alist))))
599 (viper-tmp-insert-at-eob " (Sole completion)"))
601 (viper-tmp-insert-at-eob " (No match)"))
608 (viper-filter-alist (concat "^" completion-result)
613 (viper-alist-to-list (reverse compl-list)))))))
622 (defun viper-ex (arg &optional string)
631 reg-beg-line reg-end-line
635 (viper-add-keymap viper-ex-cmd-map map)
639 (viper-enlarge-region (mark t) (point))
647 (setq reg-beg-line (1+ (count-lines (point-min) (point)))
648 reg-end-line
649 (+ reg-beg-line (count-lines reg-beg reg-end) -1)))))
650 (if reg-beg-line
651 (setq initial-str (format "%d,%d" reg-beg-line reg-end-line)))
654 (or string (viper-read-string-with-history
657 'viper-ex-history
661 (car viper-ex-history))
667 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
668 (set-buffer viper-ex-work-buf)
675 (viper-get-ex-token)
678 (viper-deactivate-mark)
681 (error "`%s': %s" ex-token viper-BadExCommand))
688 (setq viper-ex-work-buf
689 (get-buffer-create viper-ex-work-buf-name))
690 (set-buffer viper-ex-work-buf)
697 "`%s': %s" ex-token viper-SpuriousText)))
701 (error "`%s': %s" ex-token viper-BadExCommand))
719 (t (let ((ans (viper-get-ex-address-subr address dot)))
727 (defun viper-get-ex-pat ()
729 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
730 (set-buffer viper-ex-work-buf)
756 (if (not (viper-looking-back
763 ;; if at eol, exit loop and go to next line
785 (defun viper-get-ex-opt-gc (c)
787 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
788 (set-buffer viper-ex-work-buf)
802 (defun viper-default-ex-addresses (&optional whole-flag)
813 (defun viper-get-ex-address ()
819 (viper-get-ex-token)
831 (error "`%s': %s" ex-token viper-SpuriousText))
832 (t (let ((ans (viper-get-ex-address-subr address (point-marker))))
837 (defun viper-get-ex-address-subr (old-address dot)
845 (forward-line (if (= old-address 0) (1- ex-token) ex-token))
850 (forward-line (- ex-token))
856 (forward-line (1- ex-token))
877 (viper-register-to-point
878 (viper-int-to-char (1+ (- ex-token ?a))) 'enforce-buffer)))
887 (if (null viper-s-string)
888 (error viper-NoPrevSearch)
889 (setq ex-token viper-s-string))
890 (setq viper-s-string ex-token))
893 (forward-line 1)
895 (forward-line -1)
899 (defun viper-get-ex-buffer ()
904 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
905 (set-buffer viper-ex-work-buf)
923 (error "`%s': %s" ex-token viper-SpuriousText))))
925 (defun viper-get-ex-count ()
930 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
931 (set-buffer viper-ex-work-buf)
951 (point-min) (1- (point-max))) viper-BadExCommand))))
959 (setq pf (ex-next nil t))) ; this finds alternative file name
965 (set-buffer (get-buffer-create viper-ex-tmp-buf-name))
972 (if (viper-looking-back (concat "\\\\" char))
978 (end-of-line)
985 (defun viper-get-ex-file ()
995 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
996 (set-buffer viper-ex-work-buf)
999 (if (and (not (viper-looking-back "[ \t]"))
1027 (if (member ex-token '("read" "write" "edit" "visual" "next"))
1041 (setq viper-incomplete-ex-cmd nil)
1057 (setq viper-last-ex-prompt prompt)
1060 (if viper-incomplete-ex-cmd
1061 (setq ex-file (viper-ex-read-file-name (format ":%s " prompt)))
1062 ;; file was typed in-line
1069 (defun viper-complete-filename-or-exit ()
1071 (setq viper-keep-reading-filename t)
1076 ((viper-looking-back "^[ \t]*!.*")
1083 (defun viper-handle-! ()
1086 (buffer-string) (viper-abbreviate-file-name default-directory))
1092 (member token '("edit" "next" "Next")))
1097 (defun viper-ex-read-file-name (prompt)
1103 (viper-add-keymap ex-read-filename-map
1104 (if viper-emacs-p
1108 (setq cont (setq viper-keep-reading-filename t))
1110 (setq viper-keep-reading-filename nil
1119 ;; Only edit, next, and Next commands accept multiple files.
1120 ;; viper-keep-reading-filename is set in the anonymous function that is
1122 (setq cont (and viper-keep-reading-filename
1134 (setq viper-last-ex-prompt
1135 (concat viper-last-ex-prompt " !")))))
1139 (defun viper-undisplayed-files ()
1156 (let ((l (viper-undisplayed-files))
1168 (with-output-to-temp-buffer " *viper-info*"
1173 (princ "\nThe numbers can be given as counts to :next. ")
1175 (viper-read-event))))))
1179 (viper-get-ex-file)
1186 (viper-default-ex-addresses)
1187 (let ((address (viper-get-ex-address))
1192 (viper-enlarge-region (mark t) (point))
1212 (forward-line 1))
1217 (viper-default-ex-addresses)
1218 (viper-get-ex-buffer)
1220 (if (> beg end) (error viper-FirstAddrExceedsSecond))
1222 (viper-enlarge-region beg end)
1227 (forward-line (1- ex-count)))
1229 (viper-enlarge-region (point) (mark t))
1242 (cond ((viper-valid-register ex-buffer '(Letter))
1243 (viper-append-to-register
1245 ((viper-valid-register ex-buffer)
1247 (t (error viper-InvalidRegister ex-buffer))))
1259 (viper-get-ex-file))
1261 (setq ex-file (viper-abbreviate-file-name (buffer-file-name))))
1263 (error viper-NoFileSpecified)))
1294 (viper-change-state-to-vi))
1300 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1301 (set-buffer viper-ex-work-buf)
1305 (goto-char (viper-get-ex-address))
1306 (beginning-of-line)))
1307 (ex-fixup-history viper-last-ex-prompt ex-file))
1312 ;; Each line is assumed to be a file name.
1317 (mapcar 'find-file (funcall viper-glob-function filespec)))
1340 (viper-get-ex-pat)
1345 (if (null viper-s-string)
1346 (error viper-NoPrevSearch)
1347 (setq ex-g-pat viper-s-string))
1349 viper-s-string ex-token))
1352 (viper-default-ex-addresses))
1358 (if (> beg end) (error viper-FirstAddrExceedsSecond))
1360 (viper-enlarge-region beg end)
1364 ;; skip the last line if empty
1365 (beginning-of-line)
1366 (if (eobp) (viper-backward-char-carefully))
1368 (beginning-of-line)
1370 (end-of-line)
1375 (end-of-line)
1378 (beginning-of-line)
1380 (forward-line -1)
1381 (end-of-line)))))
1383 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1384 (set-buffer viper-ex-work-buf)
1389 (viper-ex nil com-str)
1399 (beginning-of-line)
1402 ;; Ex line commands. COM is join, shift-right or shift-left
1403 (defun ex-line (com)
1404 (viper-default-ex-addresses)
1405 (viper-get-ex-count)
1407 (if (> beg end) (error viper-FirstAddrExceedsSecond))
1409 (viper-enlarge-region beg end)
1414 (forward-line ex-count)))
1423 (ex-line-subr com (point) (mark t)))
1426 (ex-line-subr com (point) (mark t)))
1429 (beginning-of-line)))
1431 (defun ex-line-subr (com beg end)
1435 (end-of-line)
1438 (forward-line 1)
1444 (if (string= com "right") viper-shift-width (- viper-shift-width)))
1446 (end-of-line)
1447 (viper-forward-char-carefully))))
1464 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1465 (set-buffer viper-ex-work-buf)
1473 (error "`%s': %s" ex-token viper-SpuriousText)))
1477 (point-to-register (viper-int-to-char (1+ (- char ?a)))))))
1481 ;; Alternate file is the file next to the first one in the buffer ring
1482 (defun ex-next (cycle-other-window &optional find-alt-file)
1487 (viper-get-ex-file)
1496 (if (< count 0) (error "Usage: `next <count>' (count >= 0)"))))
1498 (setq l (viper-undisplayed-files))
1513 ;; this puts "next <count>" in the ex-command history
1514 (ex-fixup-history viper-last-ex-prompt ex-file))
1518 (defun ex-next-related-buffer (direction &optional no-recursion)
1520 (viper-ring-rotate1 viper-related-files-and-buffers-ring direction)
1523 (viper-current-ring-item viper-related-files-and-buffers-ring))
1524 (old-ring viper-related-files-and-buffers-ring)
1528 (or (and (ring-p viper-related-files-and-buffers-ring)
1529 (> (ring-length viper-related-files-and-buffers-ring) 0))
1541 (if (not (viper-buffer-live-p buf))
1544 (viper-abbreviate-file-name
1552 (ex-next-related-buffer direction 'norecursion))))
1557 (if (setq wind (viper-get-visible-buffer-window buf))
1559 (setq wind (get-lru-window (if viper-xemacs-p nil 'visible)))
1562 (if (viper-window-display-p)
1572 (setq viper-related-files-and-buffers-ring old-ring))
1574 (setq viper-local-search-start-marker (point-marker))
1586 (viper-get-ex-buffer)
1587 (setq viper-use-register ex-buffer)
1589 (if (bobp) (viper-Put-back 1) (viper-put-back 1))))
1599 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1600 (set-buffer viper-ex-work-buf)
1602 (if (< viper-expert-level 3)
1612 (viper-get-ex-file)
1616 (viper-add-newline-at-eob-if-necessary)
1617 (if (not (or (bobp) (eobp))) (forward-line 1))
1621 (error viper-NoFileSpecified))
1632 (ex-fixup-history viper-last-ex-prompt ex-file ex-cmdfile-args))
1636 (setq viper-ex-history
1637 (cons (mapconcat 'identity args " ") (cdr viper-ex-history))))
1642 (viper-get-ex-file)
1644 (error "`recover': %s" viper-SpuriousText))
1657 ;; Tell that `rewind' is obsolete and to use `:next count' instead
1672 (if (viper-set-unread-command-events
1676 (viper-set-unread-command-events ?\C-m)))
1685 (or (viper-set-unread-command-events "") (sit-for 2))
1697 "([ \t]*add-hook[ \t]+'viper-insert-state-hook[ \t]+'turn-on-auto-fill.*)")
1705 (setq var "viper-auto-indent"
1710 (kill-local-variable 'viper-auto-indent)
1711 (setq var "viper-auto-indent"
1715 (setq var "viper-auto-indent"
1719 (kill-local-variable 'viper-auto-indent)
1720 (setq var "viper-auto-indent"
1724 (setq var "viper-case-fold-search"
1727 (setq var "viper-case-fold-search"
1730 (setq var "viper-re-search"
1733 (setq var "viper-re-search"
1748 (setq var "viper-search-wrap-around-t"
1751 (setq var "viper-search-wrap-around-t"
1757 (or (viper-set-unread-command-events "") (sit-for 2))
1775 (setq var "viper-shift-width"))
1805 viper-custom-file-name)))
1807 (viper-save-string-in-file
1808 actual-lisp-cmd viper-custom-file-name
1813 (viper-save-string-in-file
1815 "(add-hook 'viper-insert-state-hook 'turn-on-auto-fill) "
1817 viper-custom-file-name
1819 (viper-save-string-in-file
1820 nil viper-custom-file-name delete-turn-on-auto-fill-pattern)
1821 (viper-save-string-in-file
1822 nil viper-custom-file-name
1848 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1849 (set-buffer viper-ex-work-buf)
1865 (viper-forward-char-carefully)))
1879 (info (if viper-xemacs-p "viper.info" "viper"))
1882 (with-output-to-temp-buffer " *viper-info*"
1888 (if viper-xemacs-p "X" "")
1891 ;; Ex source command. Loads the file specified as argument or `~/.viper'
1893 (viper-get-ex-file)
1895 (load viper-custom-file-name)
1899 ;; If REPEAT use previous regexp which is ex-reg-exp or viper-s-string
1904 (case-fold-search viper-case-fold-search)
1906 (if repeat (setq ex-token nil) (setq delim (viper-get-ex-pat)))
1909 (setq pat (if r-flag viper-s-string ex-reg-exp))
1914 (setq pat (if (string= ex-token "") viper-s-string ex-token))
1915 (setq viper-s-string pat
1917 (setq delim (viper-get-ex-pat))
1923 (while (viper-get-ex-opt-gc delim)
1925 (viper-get-ex-count)
1930 (forward-line (1- ex-count))
1941 (viper-enlarge-region beg end)
1948 (end-of-line)
1951 (viper-forward-char-carefully)
1953 (beginning-of-line)
1960 (viper-put-on-search-overlay (match-beginning 0)
1964 (viper-hide-search-overlay)
1969 (end-of-line)
1970 (viper-forward-char-carefully))
1977 (viper-put-on-search-overlay (match-beginning 0)
1981 (viper-hide-search-overlay)
1986 ;;(end-of-line)
1987 ;;(viper-forward-char-carefully)
1991 (beginning-of-line)
1998 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
1999 (set-buffer viper-ex-work-buf)
2005 (viper-change-state-to-emacs)
2011 (viper-change-state-to-vi))
2013 (viper-change-state-to-vi)
2014 (viper-message-conditions conds)))))
2021 (viper-default-ex-addresses t)
2022 (viper-get-ex-file)
2031 (if (> beg end) (error viper-FirstAddrExceedsSecond))
2034 (viper-enlarge-region beg end)
2063 (viper-maybe-checkout (current-buffer))
2077 (viper-enlarge-region beg end)
2082 (viper-cond-compile-for-xemacs-or-emacs
2092 (viper-maybe-checkout (current-buffer))
2116 (if (< viper-expert-level 2)
2124 (viper-abbreviate-file-name file-name)
2131 (viper-default-ex-addresses)
2132 (viper-get-ex-buffer)
2134 (if (> beg end) (error viper-FirstAddrExceedsSecond))
2136 (viper-enlarge-region beg end)
2143 (forward-line (1- ex-count)))
2145 (viper-enlarge-region (point) (mark t))
2146 (if ex-flag (error "`yank': %s" viper-SpuriousText))
2148 (cond ((viper-valid-register ex-buffer '(Letter))
2149 (viper-append-to-register
2151 ((viper-valid-register ex-buffer)
2153 (t (error viper-InvalidRegister ex-buffer))))
2160 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
2161 (set-buffer viper-ex-work-buf)
2164 (end-of-line))
2168 (if viper-ex-last-shell-com
2170 (concat viper-ex-last-shell-com (substring command 1)))
2172 (setq viper-ex-last-shell-com command)
2180 (viper-enlarge-region (point) (mark t))
2185 "Reads args from the command line, then runs make with the args.
2190 (setq viper-ex-work-buf (get-buffer-create viper-ex-work-buf-name))
2191 (set-buffer viper-ex-work-buf)
2193 (end-of-line))
2207 ;; Print line number
2208 (defun ex-line-no ()
2215 (defun viper-info-on-file ()
2217 (let ((pos1 (viper-line-pos 'start))
2218 (pos2 (viper-line-pos 'end))
2220 (setq lines (count-lines (point-min) (viper-line-pos 'end))
2222 (concat (viper-abbreviate-file-name (buffer-file-name)) ":")
2224 info (format "line=%d/%d pos=%d/%d col=%d %s"
2236 (with-output-to-temp-buffer " *viper-info*"
2239 (viper-set-unread-command-events (viper-read-event)))
2240 (kill-buffer " *viper-info*")))
2247 (viper-get-ex-file)
2249 (viper-info-on-file)
2264 (with-output-to-temp-buffer " *viper-info*"
2265 (princ (if viper-auto-indent
2267 (princ (if (default-value 'viper-auto-indent)
2269 (princ (if viper-case-fold-search "ignorecase\n" "noignorecase\n"))
2270 (princ (if viper-re-search "magic\n" "nomagic\n"))
2273 (princ (if viper-search-wrap-around-t "wrapscan\n" "nowrapscan\n"))
2274 (princ (format "shiftwidth \t\t= %S\n" viper-shift-width))
2287 (viper-default-ex-addresses)
2290 (if (> beg end) (error viper-FirstAddrExceedsSecond))
2292 (viper-enlarge-region beg end)
2295 ;; print in viper-ex-print-buf.
2297 (append-to-buffer viper-ex-print-buf (point) (mark t))
2300 (with-current-buffer viper-ex-print-buf
2313 ;; String spans more than one line. Use a temporary buffer.
2316 (with-output-to-temp-buffer " *viper-info*"
2324 ;;; viper-ex.el ends here