[Haskell-cafe] Haskell + emacs + Ghc-mod 4.0.1

Arnaud Bailly arnaud.oqube at gmail.com
Mon Apr 7 23:04:35 UTC 2014


OK, so now opening each file in emacs works correctly but when I try to
load the test file in haskell repl, it fails complaining it cannot find the
local package.

Here is my cabal file:

Name:                 tdd-qc
Version:              1.0
Build-type:           Simple
Synopsis:             This is a sample project
License:              BSD3
License-file:         LICENSE
Author:               Arnaud Bailly <arnaud.oqube at gmail.com>
Build-Depends:        base
Cabal-version:        >= 1.8

Executable tdd-qc
  build-depends:      base
  hs-source-dirs:     src
  main-is:            tdd-qc.hs
  ghc-options:        -Wall

Test-Suite tdd-qc-test
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          tdd-qc-test.hs
    build-depends:    base,
                      QuickCheck >= 2.6,
                      tdd-qc


And here is my emacs settings:

;; 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))


Thanks in advance for any advice....


--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com


On Sat, Apr 5, 2014 at 9:03 AM, Arnaud Bailly <arnaud.oqube at gmail.com>wrote:

> OK, I forgot the —enable-tests flag to cabal install…
>
> However, there seems to be some strange interactions I do not understand
> fully with the test section of cabal.
> Here is the cabal file:
>
> name:             Thermometre
> version:          0.1.0.0
> synopsis:            synopsis
> -- description:
> license:             PublicDomain
> license-file:        LICENSE
> author:              Black
> -- maintainer:
> -- copyright:
> -- category:
> build-type:       Simple
> cabal-version:    >= 1.8
>
> library
>   hs-source-dirs:
>       src
>   exposed-modules:
>       Thermometre
>   build-depends:
>       base    == 4.*
>
> test-suite spec
>   type:
>       exitcode-stdio-1.0
>   ghc-options:
>       -Wall -Werror
>   hs-source-dirs:
>       test
>   main-is:
>       Spec.hs
>   build-depends:
>       base    == 4.*
>     , Thermometre
>     , hspec   >= 1.3
>
> When I remove the test-suite section and open src/Thermometre.hs I got
> errors highlighting which is fine. C-c C-t does not give me types however
> ('Cannot guess type’ message).
>
> When I leave the test-suite section then opening Thermometre.hs gives me a
> package error: ‘cannot satisfy -package Thermometre’ as there is a
> dependency from the tests to the main library.
>
> How can I solve that?
>
> Thanks
> Arnaud
>
> On 03 Apr 2014, at 23:30, Kazu Yamamoto (山本和彦) <kazu at iij.ad.jp> wrote:
>
> >> I upgrade my emacs configuration with latest ghc-mod and all of sudden
> >> nothing works (again).
> >> When I try to load a .hs file from a project I got the first line
> >> highlighted with the error "cannot satisfy -package spec" and I cannot
> got
> >> type, info or doc from that file. Also I do not have anymore syntax
> errors
> >> highlighting I used to see.
> >
> > As this message suggests, you need to install spec for testing.
> >
> > % cabal install spec
> >
> > # I don't know what the spec package is. A typo for hspec?
> >
> > This is because ghc-mod obtains dependency for executables, libraries
> > *and* testing.
> >
> > In general,
> > % cabal install --only-dependencies
> > would help you.
> >
> > --Kazu
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140408/06ce5c5c/attachment.html>


More information about the Haskell-Cafe mailing list