Function: haskell-cabal-strip-list-and-detect-style
haskell-cabal-strip-list-and-detect-style is a natively compiled
function defined in haskell-cabal.el.
Signature
(haskell-cabal-strip-list-and-detect-style)
Documentation
Strip commas from a comma-separated list.
Detect and return the comma style. The possible options are:
before: a comma at the start of each line (except the first), e.g.
Foo
, Bar
after: a comma at the end of each line (except the last), e.g.
Foo,
Bar
single: everything on a single line, but comma-separated, e.g.
Foo, Bar
nil: no commas, e.g.
Foo Bar
If the styles are mixed, the position of the first comma
determines the style. If there is only one element then after
style is assumed.
Source Code
;; Defined in /nix/store/9lz2mhw95f9fqxr9mnq46k3f6qz3aq83-emacs-packages-deps/share/emacs/site-lisp/elpa/haskell-mode-20260904.1042/haskell-cabal.el
(defun haskell-cabal-strip-list-and-detect-style ()
"Strip commas from a comma-separated list.
Detect and return the comma style. The possible options are:
before: a comma at the start of each line (except the first), e.g.
Foo
, Bar
after: a comma at the end of each line (except the last), e.g.
Foo,
Bar
single: everything on a single line, but comma-separated, e.g.
Foo, Bar
nil: no commas, e.g.
Foo Bar
If the styles are mixed, the position of the first comma
determines the style. If there is only one element then `after'
style is assumed."
(let (comma-style)
;; split list items on single line
(goto-char (point-min))
(while (re-search-forward
"\\([^ \t,\n]\\)[ \t]*\\(,\\)[ \t]*\\([^ \t,\n]\\)" nil t)
(when (haskell-cabal-comma-separatorp (match-beginning 2))
(setq comma-style 'single)
(replace-match "\\1\n\\3" nil nil)))
;; remove commas before
(goto-char (point-min))
(while (re-search-forward "^\\([ \t]*\\),\\([ \t]*\\)" nil t)
(setq comma-style 'before)
(replace-match "" nil nil))
;; remove trailing commas
(goto-char (point-min))
(while (re-search-forward ",[ \t]*$" nil t)
(unless (eq comma-style 'before)
(setq comma-style 'after))
(replace-match "" nil nil))
;; if there is just one line then set default as 'after
(unless comma-style
(goto-char (point-min))
(forward-line)
(when (eobp)
(setq comma-style 'after)))
(goto-char (point-min))
(haskell-cabal-each-line (haskell-cabal-chomp-line))
comma-style))