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)))