Function: haskell-indentation-read-next-token
haskell-indentation-read-next-token is a natively compiled function
defined in haskell-indentation.el.
Signature
(haskell-indentation-read-next-token)
Documentation
Go to the next token and set current-token to the next token.
The following symbols are used as pseudo tokens:
'layout-item: A new item in a layout list. The next token
will be the first token from the item.
'layout-end: the end of a layout list. Next token will be
the first token after the layout list.
'end-tokens: back at point where we started, following-token
will be set to the next token.
Pseudo tokens are used only when implicit-layout-active is
t. That is the case only after keywords "do", "where",
"let" and "of".
If we are at a new line, parse-line is increased, and current-indent and left-indent are set to the indentation of the line.
Source Code
;; Defined in /nix/store/9lz2mhw95f9fqxr9mnq46k3f6qz3aq83-emacs-packages-deps/share/emacs/site-lisp/elpa/haskell-mode-20260904.1042/haskell-indentation.el
(defun haskell-indentation-read-next-token ()
"Go to the next token and set current-token to the next token.
The following symbols are used as pseudo tokens:
\\='layout-item: A new item in a layout list. The next token
will be the first token from the item.
\\='layout-end: the end of a layout list. Next token will be
the first token after the layout list.
\\='end-tokens: back at point where we started, following-token
will be set to the next token.
Pseudo tokens are used only when implicit-layout-active is
t. That is the case only after keywords \"do\", \"where\",
\"let\" and \"of\".
If we are at a new line, parse-line is increased, and
current-indent and left-indent are set to the indentation of the
line."
(cond ((and implicit-layout-active
(eq current-token 'end-tokens))
'end-tokens)
((and implicit-layout-active
(eq current-token 'layout-end))
(cond ((> layout-indent (current-column))
'layout-end)
((= layout-indent (current-column))
(setq current-token 'layout-item))
((< layout-indent (current-column))
(setq current-token (haskell-indentation-peek-token)))))
((and implicit-layout-active
(eq current-token 'layout-item))
(setq current-token (haskell-indentation-peek-token)))
((and implicit-layout-active
(> layout-indent (current-column)))
(setq current-token 'layout-end))
(t
(setq previous-token (haskell-indentation-peek-token))
(haskell-indentation-skip-token)
(if (>= (point) indentation-point)
(progn
(setq following-token
(if (and (not (eobp))
(= (point) indentation-point))
(haskell-indentation-peek-token)
'no-following-token))
(setq current-token 'end-tokens))
(when (= (current-column) (haskell-indentation-current-indentation))
;; on a new line
(setq current-indent (current-column)))
(cond ((and implicit-layout-active
(> layout-indent (current-column)))
(setq current-token 'layout-end))
((and implicit-layout-active
(= layout-indent (current-column)))
(setq current-token 'layout-item))
(t (setq current-token (haskell-indentation-peek-token))))))))