[Haskell-cafe] Correctly setting up emacs + ghc-mod

Andras Slemmer 0slemi0 at gmail.com
Mon Apr 21 14:35:49 UTC 2014


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 <arnaud.oqube at gmail.com> 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 <zsol.zsol at gmail.com> wrote:
>
> Have you tried M-x haskell-process-unignore?
>
>
> On Sun, Apr 20, 2014 at 10:20 AM, Arnaud Bailly <arnaud.oqube at gmail.com>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 at 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 <arnaud.oqube at gmail.com> 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 at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>
>>>
>>
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140421/17718772/attachment.html>


More information about the Haskell-Cafe mailing list