2015-02-08 5 views
2

Я попытался следующие:Haskell-режим с песочницах

cabal sandbox init 

Затем сделать следующий Кабал файл.

-- Initial hsource.cabal generated by cabal init. For further 
-- documentation, see http://haskell.org/cabal/users-guide/ 

name:    hsource 
version:    0.1.0.0 
-- synopsis:    
-- description:   
-- license:    
license-file:  LICENSE 
author:    abc 
maintainer:   abc 
-- copyright:   
-- category:    
build-type:   Simple 
-- extra-source-files: 
cabal-version:  >=1.10 

executable hsource 
    main-is:    main.hs 
    other-modules:  
    -- other-extensions:  
    build-depends:  base >=4.7 && <4.8, csv 
    hs-source-dirs:  src 
    default-language: Haskell2010 

Теперь я установить пакет CSV с:

cabal install --only-dependencies 

Теперь, когда я пытаюсь import Text.CSV то тогда C-c C-l я получаю следующее сообщение об ошибке:

Util/RandomTree.hs:7:8-15: Could not find module ‘Text.CSV’ … 
    Use -v to see a list of the files searched for. 
Compilation failed. 

Так что мой вопрос, если песочницы не поддерживается в режиме haskell или мне не хватает некоторых шагов, чтобы заставить их работать?

+0

Вы уверены, что активировали режим интерактивного хакель-режима? Кажется, вы используете режим нижнего-haskell. – Sibi

+0

Эта проблема с github для режима haskell может быть полезна: https://github.com/haskell/haskell-mode/issues/253 – ErikR

ответ

1

Убедитесь, что вы:

(add-hook 'haskell-mode-hook 'interactive-haskell-mode) 

в вашем Emacs файл инициализации.

Существуют различные GHCi process types, поддерживаемые haskell-mode. Вам нужен тот, который использует cabal.

Чтобы узнать, какой тип процесса в настоящее время применяется, используйте M-x describe-variable и введите haskell-process-type.

Я думаю, что документация в режиме haskell устарела; потому что, глядя на исходный код, по умолчанию auto, который будет использовать cabal-repl, если он сможет найти каталог .cabal-sandbox. В противном случае он будет использовать ghci.

Итак, если ваш haskell-process-type настроен на ghci или auto, и он не сможет найти вашу песочницу cabal, вы увидите сообщение об ошибке, которое вы опубликовали. Если в настоящее время установлено в ghci, изменить haskell-process-type к cabal-repl, добавив:

(custom-set-variables 
    '(haskell-process-type 'cabal-repl)) 

в файл Emacs инициализации и перезапуска процесса Emacs.

Также вы всегда можете подтвердить, что проблема специфична для emacs, открыв командную строку, перейдя в каталог, содержащий ваш файл .cabal, и введите cabal repl. Если это сработает, то настройка вашего кабала будет прекрасной.

+0

У меня включен режим интерактивного хакеля и haskell-process-type установлен в ghci. Любые советы о том, как я могу найти ошибку? – user3139545

+0

Итак, когда я установил haskell-process-type для cabal-repl, он исправил большинство проблем. Однако flycheck все еще подчеркивает текст в буфере, говоря, что он не может найти файл. Любой лед, как заставить flycheck работать? Кроме того, настройка haskell-process-type на auto не работает. – user3139545

+0

Я думаю, эта ссылка должна помочь: https://github.com/flycheck/flycheck/issues/293#issuecomment-31580700. –