Correctly setting up emacs + ghc-mod

Hello, I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something? Here is my .emacs configuration. Thanks for any help. ;; haskell coding (require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal) (autoload 'ghc-init "ghc" nil t) (add-hook 'haskell-mode-hook (lambda () (ghc-init))) (eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) (define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t) ;; Do this to get a variable in scope (auto-complete-mode) ;; from http://pastebin.com/tJyyEBAS (ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache))) (defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode) (defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init))) (add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) (eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode)) (eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))

If you're using several source directories then simply specify them in your
.cabal with hs-source-dirs. So for example if you have a library in src/lib
and a test-suite in src/test and your tests use your lib then you'd have
something like this in your .cabal
library
exposed-modules: Lib
hs-source-dirs: src/lib
test-suite sometest
type: exitcode-stdio-1.0
main-is: Test.hs
hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
Hello,
I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding
(require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope
(auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS
(ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

This is what I have in my cabal file: library hs-source-dirs: ., fay-shared exposed-modules: Application Foundation but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings). Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs: GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. λ> Thanks Arnaud On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello, I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding (require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope (auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS (ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Have you tried M-x haskell-process-unignore?
On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly
This is what I have in my cabal file:
*library* *hs-source-dirs*: ., fay-shared *exposed-modules*: Application Foundation
but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings).
Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs:
*GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) * The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ *Import.hs:18:18-28: Could not find module `SharedTypes' …
* * Use -v to see a list of the files searched for.
* *Compilation failed.
* *Import.hs:18:18-28: Could not find module `SharedTypes' …
* * Use -v to see a list of the files searched for.
* *Compilation failed.
* *λ> *
Thanks Arnaud
On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello,
I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding
(require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope
(auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS
(ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs" )) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Yes, but only once on ‘.’ I suspect from your answer I should do it for all directories ?
On 20 Apr 2014, at 16:28, Zsolt Dollenstein
Have you tried M-x haskell-process-unignore?
On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly
wrote: This is what I have in my cabal file: library hs-source-dirs: ., fay-shared exposed-modules: Application Foundation
but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings).
Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs:
GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. λ>
Thanks Arnaud
On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello, I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding (require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope (auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS (ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

I tried it but to no avail. Still got the same error. I removed ghc-init from my config, just in case, and still have the problem
Will post on haskell-mode ML…
Arnaud
On 20 Apr 2014, at 16:28, Zsolt Dollenstein
Have you tried M-x haskell-process-unignore?
On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly
wrote: This is what I have in my cabal file: library hs-source-dirs: ., fay-shared exposed-modules: Application Foundation
but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings).
Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs:
GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. λ>
Thanks Arnaud
On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello, I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding (require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope (auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS (ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Are you trying to use inferior haskell mode? That operates separately from
ghc-mod/cabal. In particular i think the setting you're looking for is the
command to execute in the inferior process:
M-x customize
search for "Haskell Program Name" and change "ghci" to sth like "ghci
-iwhere/my/src/are"
On 21 April 2014 09:30, Arnaud Bailly
I tried it but to no avail. Still got the same error. I removed ghc-init from my config, just in case, and still have the problem
Will post on haskell-mode ML…
Arnaud On 20 Apr 2014, at 16:28, Zsolt Dollenstein
wrote: Have you tried M-x haskell-process-unignore?
On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly
wrote: This is what I have in my cabal file:
*library* *hs-source-dirs*: ., fay-shared *exposed-modules*: Application Foundation
but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings).
Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs:
*GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) * The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ *Import.hs:18:18-28: Could not find module `SharedTypes' …
* * Use -v to see a list of the files searched for.
* *Compilation failed.
* *Import.hs:18:18-28: Could not find module `SharedTypes' …
* * Use -v to see a list of the files searched for.
* *Compilation failed.
* *λ> *
Thanks Arnaud
On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello,
I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding
(require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '( "--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope
(auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS
(ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs" )) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Yes, I am running haskell interpreter from inferior-haskell-mode. I though haskell mode had the logic to extract the source info from cabal file. On 21 Apr 2014, at 16:35, Andras Slemmer <0slemi0@gmail.com> wrote:
Are you trying to use inferior haskell mode? That operates separately from ghc-mod/cabal. In particular i think the setting you're looking for is the command to execute in the inferior process: M-x customize search for "Haskell Program Name" and change "ghci" to sth like "ghci -iwhere/my/src/are"
On 21 April 2014 09:30, Arnaud Bailly
wrote: I tried it but to no avail. Still got the same error. I removed ghc-init from my config, just in case, and still have the problem Will post on haskell-mode ML…
Arnaud On 20 Apr 2014, at 16:28, Zsolt Dollenstein
wrote: Have you tried M-x haskell-process-unignore?
On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly
wrote: This is what I have in my cabal file: library hs-source-dirs: ., fay-shared exposed-modules: Application Foundation
but I keep getting same error when loading a file that depends on the fay-shared directory (please not that command-line building with cabal runs fine so this is definitely an issue with my emacs settings).
Here is the output I got in haskell interpreter when loading a file that depends on fay-shared/SharedTypes.hs:
GHCi is ignoring: /home/vagrant/yesod-splittest/.ghci (run M-x haskell-process-unignore) The next big Haskell project is about to start! If I break, you can: 1. Restart: M-x haskell-process-restart 2. Configure logging: C-h v haskell-process-log (useful for debugging) 3. General config: M-x customize-mode 4. Hide these tips: C-h v haskell-process-show-debug-tips Changed directory: /home/vagrant/yesod-splittest/ Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. Import.hs:18:18-28: Could not find module `SharedTypes' … Use -v to see a list of the files searched for. Compilation failed. λ>
Thanks Arnaud
On 19 Apr 2014, at 13:05, Andras Slemmer <0slemi0@gmail.com> wrote:
If you're using several source directories then simply specify them in your .cabal with hs-source-dirs. So for example if you have a library in src/lib and a test-suite in src/test and your tests use your lib then you'd have something like this in your .cabal
library exposed-modules: Lib hs-source-dirs: src/lib
test-suite sometest type: exitcode-stdio-1.0 main-is: Test.hs hs-source-dirs: src/test src/lib
On 18 April 2014 16:20, Arnaud Bailly
wrote: Hello, I am struggling to get my emacs settings right for doing significant Haskell development, eg. something more involved than a bunch of source files in a single directory. The issue I am running in currently is that when trying to load files in the interpreter, most source paths are missing which means loading inevitably fails. This is especially annoying with tests: To get things working correctly I need to explicitly add in the console
:set -iwhere/my/src/are
Is there any configuration I should be aware of in my cabal files or .emacs file that would correctly set the source roots? Am I missing something?
Here is my .emacs configuration. Thanks for any help.
;; haskell coding (require 'auto-complete) (require 'haskell-mode) (require 'haskell-cabal)
(autoload 'ghc-init "ghc" nil t)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))
(eval-after-load "haskell-mode" '(progn (setq haskell-stylish-on-save t) (setq haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng"))
(define-key haskell-mode-map (kbd "C-,") 'haskell-move-nested-left) (define-key haskell-mode-map (kbd "C-.") 'haskell-move-nested-right) (define-key haskell-mode-map (kbd "C-c v c") 'haskell-cabal-visit-file) (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-compile) (define-key haskell-mode-map (kbd "C-x C-d") nil) (setq haskell-font-lock-symbols t)
;; Do this to get a variable in scope (auto-complete-mode)
;; from http://pastebin.com/tJyyEBAS (ac-define-source ghc-mod '((depends ghc) (candidates . (ghc-select-completion-symbol)) (symbol . "s") (cache)))
(defun my-ac-haskell-mode () (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod))) (add-hook 'haskell-mode-hook 'my-ac-haskell-mode)
(defun my-haskell-ac-init () (when (member (file-name-extension buffer-file-name) '("hs" "lhs")) (auto-complete-mode t) (setq ac-sources '(ac-source-words-in-same-mode-buffers ac-source-dictionary ac-source-ghc-mod)))) (add-hook 'find-file-hook 'my-haskell-ac-init)))
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan) (add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(eval-after-load "which-func" '(add-to-list 'which-func-modes 'haskell-mode))
(eval-after-load "haskell-cabal" '(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-compile))
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (3)
-
Andras Slemmer
-
Arnaud Bailly
-
Zsolt Dollenstein