diff --git a/README.md b/README.md index 0752888..28b1b3e 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,12 @@ package is called `ghc` there, not `ghc-mod`) and install the ### Nix & NixOS -The installation is a little more involved in this environment as Nix needs some -ugly hacks to get packages using the GHC API to work, please refer to this -stackoverflow answer: - -http://stackoverflow.com/a/24228830 +`ghc-mod` works fine for users of Nix who follow a recent version of the +package database such as the `nixos-15.09` or `nixos-unstable` channel. Just +include the package `ghc-mod` into your `ghcWithPackages` environment like any +other library. The [Nixpkgs Haskell User's +Guide](http://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/download-by-type/doc/manual#users-guide-to-the-haskell-infrastructure) +covers this subject in gret detail. ## Using the development version diff --git a/elisp/ghc-command.el b/elisp/ghc-command.el index 7970a12..df9a69f 100644 --- a/elisp/ghc-command.el +++ b/elisp/ghc-command.el @@ -53,7 +53,7 @@ (let ((inhibit-field-text-motion t)) (sort-subr nil 'forward-line 'end-of-line (lambda () - (re-search-forward "^import\\( *qualified\\)? *" nil t) + (re-search-forward "^import +\\(qualified\\)? *" nil t) nil) 'end-of-line)) (ghc-merge-lines)))) @@ -64,7 +64,7 @@ (while (not (eolp)) ;; qualified modlues are not merged at this moment. ;; fixme if it is improper. - (if (looking-at "^import *\\([A-Z][^ \n]+\\) *(\\(.*\\))$") + (if (looking-at "^import +\\([A-Z][^ \n]+\\) *(\\(.*\\))$") (let ((mod (match-string-no-properties 1)) (syms (match-string-no-properties 2)) (beg (point))) @@ -73,7 +73,7 @@ (forward-line))))) (defun ghc-merge-line (beg mod syms) - (let ((regex (concat "^import *" (regexp-quote mod) " *(\\(.*\\))$")) + (let ((regex (concat "^import +" (regexp-quote mod) " *(\\(.*\\))$")) duplicated) (while (looking-at regex) (setq duplicated t) diff --git a/elisp/ghc-comp.el b/elisp/ghc-comp.el index 2209ca2..20be9a1 100644 --- a/elisp/ghc-comp.el +++ b/elisp/ghc-comp.el @@ -265,7 +265,7 @@ unloaded modules are loaded") (let (ret) (save-excursion (goto-char (point-min)) - (while (re-search-forward "^import\\( *qualified\\)? +\\([^\n ]+\\)" nil t) + (while (re-search-forward "^import +\\(qualified\\)? *\\([^\n ]+\\)" nil t) (ghc-add ret (match-string-no-properties 2)) (forward-line))) ret)) diff --git a/elisp/ghc-ins-mod.el b/elisp/ghc-ins-mod.el index 14db867..d567ec2 100644 --- a/elisp/ghc-ins-mod.el +++ b/elisp/ghc-ins-mod.el @@ -56,7 +56,7 @@ (defun ghc-goto-module-position () (goto-char (point-max)) - (if (re-search-backward "^import" nil t) + (if (re-search-backward "^import +" nil t) (ghc-goto-empty-line) (if (not (re-search-backward "^module" nil t)) (goto-char (point-min)) diff --git a/elisp/ghc.el b/elisp/ghc.el index bdad76c..0c4f967 100644 --- a/elisp/ghc.el +++ b/elisp/ghc.el @@ -138,7 +138,8 @@ (el-ver ghc-version) (ghc-ver (ghc-run-ghc-mod '("--version") "ghc")) (ghc-mod-ver (ghc-run-ghc-mod '("version"))) - (path (getenv "PATH"))) + (path (getenv "PATH")) + (debug (ghc-run-ghc-mod '("debug")))) ;; before switching buffers. (switch-to-buffer (get-buffer-create "**GHC Debug**")) (erase-buffer) (insert "Path: check if you are using intended programs.\n") @@ -150,7 +151,10 @@ (insert (format "\t %s\n" ghc-mod-ver)) (insert (format "\t%s\n" ghc-ver)) (insert "\nEnvironment variables:\n") - (insert (format "\tPATH=%s\n" path)))) + (insert (format "\tPATH=%s\n" path)) + (insert "\nThe result of \"ghc-mod debug\":\n") + (insert debug) + (goto-char (point-min)))) (defun ghc-insert-template-or-signature (&optional flag) (interactive "P")