ins-mod hack.

This commit is contained in:
Kazu Yamamoto 2011-12-27 16:42:44 +09:00
parent 94be5c3760
commit f5d3a9f650
1 changed files with 17 additions and 12 deletions

View File

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