diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180913.348/haskell-modules.el')
-rw-r--r-- | configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180913.348/haskell-modules.el | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180913.348/haskell-modules.el b/configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180913.348/haskell-modules.el deleted file mode 100644 index cb4e841d67e0..000000000000 --- a/configs/shared/emacs/.emacs.d/elpa/haskell-mode-20180913.348/haskell-modules.el +++ /dev/null @@ -1,117 +0,0 @@ -;;; haskell-modules.el --- -*- lexical-binding: t -*- - -;; Copyright (c) 2014 Chris Done. All rights reserved. - -;; This file is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. - -;; This file is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see <http://www.gnu.org/licenses/>. - -;;; Code: - -(require 'haskell-sort-imports) -(require 'haskell-align-imports) -(require 'haskell-session) -(require 'haskell-navigate-imports) -(require 'haskell-complete-module) -(require 'haskell-sandbox) -(require 'haskell-customize) - -(defun haskell-add-import (&optional module) - "Add an import to the import list. Sorts and aligns imports, -unless `haskell-stylish-on-save' is set, in which case we defer -to stylish-haskell." - (interactive) - (save-excursion - (goto-char (point-max)) - (haskell-navigate-imports) - (insert (haskell-import-for-module - (or module - (haskell-complete-module-read - "Module: " - (haskell-session-all-modules (haskell-modules-session)))))) - (unless haskell-stylish-on-save (haskell-sort-imports) - (haskell-align-imports)))) - -(defun haskell-import-for-module (module) - "Get import statements for the given module." - (let ((mapping (assoc module haskell-import-mapping))) - (if mapping - (cdr mapping) - (concat (read-from-minibuffer "Import line: " - (format "import %s" module)) - "\n")))) - -;;;###autoload -(defun haskell-session-installed-modules (_session &optional _dontcreate) - "Get the modules installed in the current package set." - ;; TODO: Again, this makes HEAVY use of unix utilities. It'll work - ;; fine in Linux, probably okay on OS X, and probably not at all on - ;; Windows. Again, if someone wants to test on Windows and come up - ;; with alternatives that's OK. - ;; - ;; Ideally all these package queries can be provided by a Haskell - ;; program based on the Cabal API. Possibly as a nice service. Such - ;; a service could cache and do nice things like that. For now, this - ;; simple shell script takes us far. - ;; - ;; Probably also we can take the code from inferior-haskell-mode. - ;; - ;; Ugliness aside, if it saves us time to type it's a winner. - ;; - ;; FIXME/TODO: add support for (eq 'cabal-repl (haskell-process-type)) - (let ((session (haskell-session-maybe))) - (when session - (let ((modules (shell-command-to-string - (format "%s 2> /dev/null | %s | %s" - (cond - ((haskell-sandbox-exists-p session) - (concat "ghc-pkg dump -f " - (shell-quote-argument (haskell-sandbox-pkgdb session)))) - (t "ghc-pkg dump")) - "egrep '^(exposed-modules: | )[A-Z]'" - "cut -c18-")))) - (split-string modules))))) - -;;;###autoload -(defun haskell-session-all-modules (session &optional dontcreate) - "Get all modules -- installed or in the current project. -If DONTCREATE is non-nil don't create a new session." - (append (haskell-session-installed-modules session dontcreate) - (haskell-session-project-modules session dontcreate))) - -;;;###autoload -(defun haskell-session-project-modules (session &optional dontcreate) - "Get the modules of the current project. -If DONTCREATE is non-nil don't create a new session." - (if (or (not dontcreate) (haskell-session-maybe)) - (let* ((modules - (shell-command-to-string - (format "%s && %s" - (format "cd %s" (haskell-session-cabal-dir session)) - ;; TODO: Use a different, better source. Possibly hasktags or some such. - ;; TODO: At least make it cross-platform. Linux - ;; (and possibly OS X) have egrep, Windows - ;; doesn't -- or does it via Cygwin or MinGW? - ;; This also doesn't handle module\nName. But those gits can just cut it out! - "egrep '^module[\t\r ]+[^(\t\r ]+' . -r -I --include='*.*hs' --include='*.hsc' -s -o -h | sed 's/^module[\t\r ]*//' | sort | uniq")))) - (split-string modules)))) - -(defun haskell-modules-session () - "Get the `haskell-session', throw an error if it's not - available." - (or (haskell-session-maybe) - (haskell-session-assign - (or (haskell-session-from-buffer) - (haskell-session-choose) - (error "No session associated with this buffer. Try M-x haskell-session-change or report this as a bug."))))) - -(provide 'haskell-modules) |