diff --git a/elisp/ghc-ins-mod.el b/elisp/ghc-ins-mod.el index bddea86..3ac8cb7 100644 --- a/elisp/ghc-ins-mod.el +++ b/elisp/ghc-ins-mod.el @@ -10,22 +10,27 @@ (defvar ghc-hoogle-command "hoogle") +(defvar ghc-hoogle-keywords '("data" "server" "combine" "convert" "test" "dump" "rank" "log")) + (defun ghc-insert-module () (interactive) (if (not (ghc-which ghc-hoogle-command)) - (message "%s not found" ghc-hoogle-command) + (message "\"%s\" not found" ghc-hoogle-command) (let* ((expr0 (thing-at-point 'symbol)) - (expr (ghc-read-expression expr0)) - (mods (ghc-function-to-modules expr)) - (first (car mods)) - (ini (cons first 0)) - (mod (if (= (length mods) 1) - first - (completing-read "Module name: " mods nil t ini)))) - (save-excursion - (ghc-goto-module-position) - (insert "import " mod "\n") - (message "%s was inserted" mod))))) + (expr (ghc-read-expression expr0))) + (if (member expr ghc-hoogle-keywords) + (message "\"%s\" not allowed" expr) + (let ((mods (ghc-function-to-modules expr))) + (if (null mods) + (message "No module guessed") + (let* ((first (car mods)) + (ini (cons first 0)) + (mod (if (= (length mods) 1) + first + (completing-read "Module name: " mods nil t ini)))) + (save-excursion + (ghc-goto-module-position) + (insert "import " mod "\n"))))))))) (defun ghc-goto-module-position () (goto-char (point-max))