Mercurial > hg > Members > kokubo > emacs
diff .emacs.d/haskell-mode/examples/init.el @ 0:2764b4f45f9f
1st commit
author | Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 21 Apr 2014 04:30:59 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.emacs.d/haskell-mode/examples/init.el Mon Apr 21 04:30:59 2014 +0900 @@ -0,0 +1,97 @@ +;; Sample file for the new session/process stuff +;; Based on my own configuration. Well, it IS my configuration. +;; +;; NOTE: If you don't have cabal-dev, or you don't want to use it, you +;; should change haskell-process-type (see below) to 'ghci. +;; +;; To merely TRY this mode (and for debugging), do the below: +;; +;; cd into haskell-mode's directory, and run +;; $ emacs --load examples/init.el +;; +;; To get started, open a .hs file in one of your projects, and hit… +;; +;; 1. F5 to load the current file (and start a repl session), or +;; 2. C-` to just start a REPL associated with this project, or +;; 3. C-c C-c to build the cabal project (and start a repl session). + +;; Add the current dir for loading haskell-site-file. +(add-to-list 'load-path ".") +;; Always load via this. If you contribute you should run `make all` +;; to regenerate this. +(load "haskell-mode-autoloads") + +;; Customization +(custom-set-variables + ;; Use cabal-dev for the GHCi session. Ensures our dependencies are in scope. + ;;'(haskell-process-type 'cabal-dev) + + ;; Use notify.el (if you have it installed) at the end of running + ;; Cabal commands or generally things worth notifying. + '(haskell-notify-p t) + + ;; To enable tags generation on save. + '(haskell-tags-on-save t) + + ;; To enable stylish on save. + '(haskell-stylish-on-save t)) + +(add-hook 'haskell-mode-hook 'haskell-hook) +(add-hook 'haskell-cabal-mode-hook 'haskell-cabal-hook) + +;; Haskell main editing mode key bindings. +(defun haskell-hook () + ;; Use simple indentation. + (turn-on-haskell-simple-indent) + (define-key haskell-mode-map (kbd "<return>") 'haskell-simple-indent-newline-same-col) + (define-key haskell-mode-map (kbd "C-<return>") 'haskell-simple-indent-newline-indent) + + ;; Load the current file (and make a session if not already made). + (define-key haskell-mode-map [?\C-c ?\C-l] 'haskell-process-load-file) + (define-key haskell-mode-map [f5] 'haskell-process-load-file) + + ;; Switch to the REPL. + (define-key haskell-mode-map [?\C-c ?\C-z] 'haskell-interactive-switch) + ;; “Bring” the REPL, hiding all other windows apart from the source + ;; and the REPL. + (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) + + ;; Build the Cabal project. + (define-key haskell-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) + ;; Interactively choose the Cabal command to run. + (define-key haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) + + ;; Get the type and info of the symbol at point, print it in the + ;; message buffer. + (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) + (define-key haskell-mode-map (kbd "C-c C-i") 'haskell-process-do-info) + + ;; Contextually do clever things on the space key, in particular: + ;; 1. Complete imports, letting you choose the module name. + ;; 2. Show the type of the symbol after the space. + (define-key haskell-mode-map (kbd "SPC") 'haskell-mode-contextual-space) + + ;; Jump to the imports. Keep tapping to jump between import + ;; groups. C-u f8 to jump back again. + (define-key haskell-mode-map [f8] 'haskell-navigate-imports) + + ;; Jump to the definition of the current symbol. + (define-key haskell-mode-map (kbd "M-.") 'haskell-mode-tag-find) + + ;; Indent the below lines on columns after the current column. + (define-key haskell-mode-map (kbd "C-<right>") + (lambda () + (interactive) + (haskell-move-nested 1))) + ;; Same as above but backwards. + (define-key haskell-mode-map (kbd "C-<left>") + (lambda () + (interactive) + (haskell-move-nested -1)))) + +;; Useful to have these keybindings for .cabal files, too. +(defun haskell-cabal-hook () + (define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) + (define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal) + (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) + (define-key haskell-cabal-mode-map [?\C-c ?\C-z] 'haskell-interactive-switch))