Function: haskell-cabal-find-or-create-source-file
haskell-cabal-find-or-create-source-file is an interactive and
natively compiled function defined in haskell-cabal.el.
Signature
(haskell-cabal-find-or-create-source-file)
Documentation
Open the source file this line refers to.
Key Bindings
haskell-cabal-mode-map C-c C-f
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-find-or-create-source-file ()
"Open the source file this line refers to."
(interactive)
(let* ((src-dirs (append (haskell-cabal-subsection-entry-list
(haskell-cabal-section) "hs-source-dirs")
'("")))
(base-dir (file-name-directory (buffer-file-name)))
(filename (haskell-cabal-line-filename)))
(when filename
(let ((candidates
(delq nil (mapcar
(lambda (dir)
(let ((file (haskell-cabal-join-paths base-dir
dir
filename)))
(when (and (file-readable-p file)
(not (file-directory-p file)))
file)))
src-dirs))))
(if (null candidates)
(unwind-protect
(progn
(haskell-mode-toggle-interactive-prompt-state)
(let* ((src-dir
(haskell-cabal-join-paths base-dir
(or (car src-dirs) "")))
(newfile (haskell-cabal-join-paths src-dir filename))
(do-create-p (y-or-n-p (format "Create file %s ?" newfile))))
(when do-create-p
(find-file-other-window newfile ))))
(haskell-mode-toggle-interactive-prompt-state t))
(find-file-other-window (car candidates)))))))