Function: haskell-indentation-goto-least-indentation
haskell-indentation-goto-least-indentation is a natively compiled
function defined in haskell-indentation.el.
Signature
(haskell-indentation-goto-least-indentation)
Documentation
Source Code
;; Defined in /nix/store/9lz2mhw95f9fqxr9mnq46k3f6qz3aq83-emacs-packages-deps/share/emacs/site-lisp/elpa/haskell-mode-20260904.1042/haskell-indentation.el
(defvar implicit-layout-active) ;; is "off-side" rule active?
(defun haskell-indentation-goto-least-indentation ()
"" ; FIXME
(beginning-of-line)
(if (haskell-indentation-bird-p)
(catch 'return
(while t
(when (not (eq (char-after) ?>))
(forward-line)
(forward-char 2)
(throw 'return nil))
(let ((ps (nth 8 (syntax-ppss))))
(when ps ;; inside comment or string
(goto-char ps)
(beginning-of-line)))
(when (and (>= 2 (haskell-indentation-current-indentation))
(not (looking-at ">\\s-*$")))
(forward-char 2)
(throw 'return nil))
(when (bobp)
(forward-char 2)
(throw 'return nil))
(forward-line -1)))
;; not bird style
(catch 'return
(while (not (bobp))
(let ((point (point)))
;; (forward-comment -1) gets lost if there are unterminated
;; string constants and does not move point anywhere. We fix
;; that case with (forward-line -1)
(forward-comment (- (buffer-size)))
(if (equal (point) point)
(forward-line -1)
(beginning-of-line)))
(let* ((ps (syntax-ppss))
(start-of-comment-or-string (nth 8 ps))
(start-of-list-expression (nth 1 ps)))
(cond
(start-of-comment-or-string
;; inside comment or string
(goto-char start-of-comment-or-string))
(start-of-list-expression
;; inside a parenthesized expression
(goto-char start-of-list-expression))
((= 0 (haskell-indentation-current-indentation))
(throw 'return nil))))))
(beginning-of-line)
(when (bobp)
(forward-comment (buffer-size)))))