Function: vip-get-ex-token
vip-get-ex-token is a byte-compiled function defined in vip.el.gz.
Signature
(vip-get-ex-token)
Documentation
get an ex-token which is either an address or a command.
a token has type (command, address, end-mark) and value.
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/vip.el.gz
(defun vip-get-ex-token ()
"get an ex-token which is either an address or a command.
a token has type \(command, address, end-mark) and value."
(with-current-buffer " *ex-working-space*"
(skip-chars-forward " \t")
(cond ((looking-at "[k#]")
(setq ex-token-type "command")
(setq ex-token (char-to-string (following-char)))
(forward-char 1))
((looking-at "[a-z]") (vip-get-ex-com-subr))
((looking-at "\\.")
(forward-char 1)
(setq ex-token-type "dot"))
((looking-at "[0-9]")
(set-mark (point))
(re-search-forward "[0-9]*")
(setq ex-token-type
(cond ((string= ex-token-type "plus") "add-number")
((string= ex-token-type "minus") "sub-number")
(t "abs-number")))
(setq ex-token (string-to-number (buffer-substring (point) (mark)))))
((looking-at "\\$")
(forward-char 1)
(setq ex-token-type "end"))
((looking-at "%")
(forward-char 1)
(setq ex-token-type "whole"))
((looking-at "\\+")
(cond ((looking-at "\\+[-+\n|]")
(forward-char 1)
(insert "1")
(backward-char 1)
(setq ex-token-type "plus"))
((looking-at "\\+[0-9]")
(forward-char 1)
(setq ex-token-type "plus"))
(t
(error "Badly formed address"))))
((looking-at "-")
(cond ((looking-at "-[-+\n|]")
(forward-char 1)
(insert "1")
(backward-char 1)
(setq ex-token-type "minus"))
((looking-at "-[0-9]")
(forward-char 1)
(setq ex-token-type "minus"))
(t
(error "Badly formed address"))))
((looking-at "/")
(forward-char 1)
(set-mark (point))
(let ((cont t))
(while (and (not (eolp)) cont)
;;(re-search-forward "[^/]*/")
(re-search-forward "[^/]*\\(/\\|\n\\)")
(if (not (vip-looking-back "[^\\]\\(\\\\\\\\\\)*\\\\/"))
(setq cont nil))))
(backward-char 1)
(setq ex-token (buffer-substring (point) (mark)))
(if (looking-at "/") (forward-char 1))
(setq ex-token-type "search-forward"))
((looking-at "\\?")
(forward-char 1)
(set-mark (point))
(let ((cont t))
(while (and (not (eolp)) cont)
;;(re-search-forward "[^\\?]*\\?")
(re-search-forward "[^\\?]*\\(\\?\\|\n\\)")
(if (not (vip-looking-back "[^\\]\\(\\\\\\\\\\)*\\\\\\?"))
(setq cont nil))
(backward-char 1)
(if (not (looking-at "\n")) (forward-char 1))))
(setq ex-token-type "search-backward")
(setq ex-token (buffer-substring (1- (point)) (mark))))
((looking-at ",")
(forward-char 1)
(setq ex-token-type "comma"))
((looking-at ";")
(forward-char 1)
(setq ex-token-type "semi-colon"))
((looking-at "[!=><&~]")
(setq ex-token-type "command")
(setq ex-token (char-to-string (following-char)))
(forward-char 1))
((looking-at "'")
(setq ex-token-type "goto-mark")
(forward-char 1)
(cond ((looking-at "'") (setq ex-token nil))
((looking-at "[a-z]") (setq ex-token (following-char)))
(t (error "%s" "Marks are ' and a-z")))
(forward-char 1))
((looking-at "\n")
(setq ex-token-type "end-mark")
(setq ex-token "goto"))
(t
(error "Invalid token")))))