Difference between revisions of "Emacs/Keybindings and simple usage"

From HaskellWiki
Jump to navigation Jump to search
(Added note about rebinding C-x C-s.)
 
Line 45: Line 45:
   
 
You can also use haskell-mode to load Emacs buffers with Haskell code in either Hugs or GHC. To load something in Hugs or ghci, type <code>C-c C-l</code> to load the file. Then, you can go on to type <code>C-c C-r</code> (or simply <code>C-c C-l</code> again) to reload the current module when you have made a change.
 
You can also use haskell-mode to load Emacs buffers with Haskell code in either Hugs or GHC. To load something in Hugs or ghci, type <code>C-c C-l</code> to load the file. Then, you can go on to type <code>C-c C-r</code> (or simply <code>C-c C-l</code> again) to reload the current module when you have made a change.
 
== Rebind C-x C-s ==
 
 
To do specific actions on save, you need <code>haskell-mode-save-buffer</code>. It is recommended to rebind <code>C-x C-s</code> in haskell-mode to this. Add the following in your <code>haskell-mode-hook</code>.
 
 
(define-key haskell-mode-map (kbd "C-x C-s") 'haskell-mode-save-buffer)
 
 
Then you're good to go. This will behave the same as normal <code>save-buffer</code>, but with extra goodies if enabled.
 
   
 
----
 
----

Latest revision as of 18:22, 11 April 2016

Emacs for Haskell

Inferior Haskell processes
Automatic unit testing
Automatic building
API searching
Project navigation
Snippets
Literate programming

Key bindings and usage

Key bindings in haskell-mode (with haskell-indent and inf-haskell.el).

Code editing keys:

  • C-c C-= inserts an = sign and lines up type signatures and other pattern matches nicely.
  • C-c C-| inserts a guard
  • C-c C-o inserts a guard | otherwise = and lines up existing guards
  • C-c C-w inserts a where keyword
  • C-c C-. aligns code over a region in a "sensible" fashion.

Haskell interpreter keys:

  • C-c C-l load current buffers file into Haskell interpreter
  • C-c C-r reload current Haskell interpreter session
  • C-c C-t gets :type for symbol at point, and remembers it
  • C-u C-c C-t inserts a type annotation, for symbol at point, on the line above
  • C-c C-i gets :info for symbol at point
  • C-c M-. find definition of (interpreted) symbol at point
  • C-c C-b or C-c C-z switch to Haskell interpreter (starts one if needed)
  • C-c C-d find haddock documentation about symbol
  • C-c TAB query the haskell interpreter for the info of the given expression
  • C-c C-v check current buffers file with hlint

(See C-h m for more information).

Example

Here's an example for C-c C-=. Put your cursor after myInt and hit C-c C-=

blah :: Int -> Int
blah myInt

note how the function signature is reindented to match the column of the = sign.

blah       :: Int -> Int
blah myInt =

You could also achieve the same effect by selecting the region and typing C-c C-.

You can also use haskell-mode to load Emacs buffers with Haskell code in either Hugs or GHC. To load something in Hugs or ghci, type C-c C-l to load the file. Then, you can go on to type C-c C-r (or simply C-c C-l again) to reload the current module when you have made a change.


Next: Indentation