2014-11-05 2 views
2

Я бы хотел, чтобы GHCI располагал локальной изолированной песочницей, когда я работаю в emacs. С Баш, синтаксис выглядит следующим образом:ghci cabal флаги песочницы для Emacs Haskell уступает режиму

ghci -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d

добавить флаги к инф-haskell.el, в определении haskell-program-name следующим образом:

(defcustom haskell-program-name 
    (or (cond 
    ((executable-find "hugs") "hugs \"+.\"") 
    ((executable-find "ghci") "ghci -no-user-package-db -package-db .cabal-sandbox/*-packages.conf.d")) 
    "hugs \"+.\"") 
    "The name of the command to start the inferior Haskell process. 
    The command can include arguments." 
    ;; Custom only supports the :options keyword for a few types, e.g. not 
    ;; for string. 
    ;; :options '("hugs \"+.\"" "ghci") 
     :group 'inferior-haskell 
     :type '(choice string (repeat string))) 

но это Безразлично» t, похоже, работает, то есть после перезагрузки emacs, проверка значения с помощью C-h v haskell-program-name просто показывает, что она равна "ghci", а пакеты, которые мне нужны, конечно, не входят в объем. Любые указатели? Благодаря!

+3

Вы должны использовать 'cabal repl' вместо ручного запуска ghci с помощью песочницы и настроить emacs для использования замены cabal с помощью' (custom-set-variables '(haskell-process-type' cabal-repl) ' – user2407038

+0

Спасибо за хорошая идея, но это также подразумевает создание проекта кабала для каждого маленького скрипта. Я просто хотел попробовать несколько библиотек, которые я не смог установить во всем мире. Кабал, ты знаешь, – ocramz

ответ

1

После долгих боев, мы, наконец, понял это: relevant Github issue

Если у вас есть haskell-process-type набор для auto, и есть последняя (> = 1.20.x) cabal-install на вашем пути, бег C-c C-l будет открыть cabal repl в emacs (даже если у вас нет файла .cabal) и обнаружите вашу песочницу. Это позволяет вам бросать песочницу, быстро устанавливать библиотеку, а затем интерактивно взаимодействовать с ней в emacs.

Удачи вам!

+0

добрый сэр, ты настоящий джентльмен. Я посмотрю на это, как только вернусь к своей коробке. – ocramz

+0

@ocramz Любые удачи? –

+0

Увы, нет. У меня есть cabal-install 1.20.0.3, и это моя конфигурация 'init.el': (autoload 'ghc-init" ghc "nil t) (автозагрузка' ghc-debug" ghc "nil t) (добавить -hook 'haskell-mode-hook (lambda() (ghc-init))) (custom-set-variables' (haskell-process-type 'auto)) (add-hook' after-init-hook # 'global-flycheck-mode) – ocramz