Function: sh-smie--sh-keyword-in/do-p
sh-smie--sh-keyword-in/do-p is a byte-compiled function defined in
sh-script.el.gz.
Signature
(sh-smie--sh-keyword-in/do-p TOK)
Documentation
When looking at TOK (either "in" or "do"), non-nil if TOK is a keyword.
Does not preserve point.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/sh-script.el.gz
(defun sh-smie--sh-keyword-in/do-p (tok)
"When looking at TOK (either \"in\" or \"do\"), non-nil if TOK is a keyword.
Does not preserve point."
(let ((forward-sexp-function nil)
(words nil) ;We've seen words.
(newline nil) ;We've seen newlines after the words.
(res nil)
prev)
(while (not res)
(setq prev (funcall smie-backward-token-function))
(cond
((zerop (length prev))
(cond
(newline (cl-assert words) (setq res 'word))
((bobp) (setq res 'word))
(t
(setq words t)
(condition-case nil
(forward-sexp -1)
(scan-error (setq res 'unknown))))))
((equal prev ";")
(if words (setq newline t)
(setq res 'keyword)))
((member prev (if (string= tok "in")
'("case" "for" "select")
'("for" "select")))
(setq res 'keyword))
((assoc prev smie-grammar) (setq res 'word))
(t
(if newline
(progn (cl-assert words) (setq res 'word))
(setq words t)))))
(eq res 'keyword)))