Changes between Version 23 and Version 24 of Emacs


Ignore:
Timestamp:
Oct 8, 2013 12:31:20 PM (19 months ago)
Author:
goldfire
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Emacs

    v23 v24  
    8080(global-set-key (kbd "<f11>") 'global-linum-mode) 
    8181}}} 
     82 
     83== Jump to first error 
     84 
     85'''Description''': Allows you to jump to the first error in compiled or interpreted code. 
     86 
     87'''How to enable''': 
     88{{{#!elisp 
     89(global-set-key (kbd "M-g M-f") 'first-error) 
     90}}} 
     91 
     92On my setup, this won't work the first time a file is loaded into GHCi. I just try to load the file a second time, and then I'm set for the rest of the session. 
    8293 
    8394== Always display column number in mode line 
     
    159170= GHC-specific 
    160171 
    161 ''TODO: Richard, can you please fill in this section?'' 
     172It can be helpful to have a few commands specific to working on GHC. For these to work, Emacs must know where your local GHC tree is. 
     173 
     174{{{#!elisp 
     175(setq ghc-location "~/ghc") ;; change as necessary 
     176}}} 
     177 
     178If you switch between active trees, you must use a `setq` to change this variable, with, say, M-: `(setq ghc-location "~/other-ghc")` <Enter>. 
    162179 
    163180== Searching the GHC source tree with a hotkey 
    164181 
    165 '''Description''': 
    166  
    167 '''How to enable''':  
     182'''Description''': Even with hasktags, sometimes you need to search within the source tree. `rgrep` does this job well, but it asks too many redundant questions. So, the following code optimizes for a search just within the `compiler` directory: 
     183 
     184'''How to enable''': The following code binds this search to M-c, but you may want your own key combination. Note that it uses `ghc-location`, set above. 
     185{{{#!elisp 
     186  ;; search withing GHC compiler code 
     187(defun rgrep-ghc (regexp) 
     188  (interactive (list (progn (grep-compute-defaults) (grep-read-regexp)))) 
     189  (rgrep regexp "*hs" (concat ghc-location "/compiler/"))) 
     190(global-set-key (kbd "M-c") 'rgrep-ghc) 
     191}}} 
    168192 
    169193== Building GHC with a hotkey 
    170194 
    171 '''Description''': 
    172  
    173 '''How to enable''':  
     195'''Description''': By having GHC be built with a hotkey, working on GHC becomes much more interactive. In a typical session, though, I have to change the actual compilation command based on my needs. So, by default, "compiling GHC" means fast-building the stage-2 compiler, but I do frequently change `ghc-compile`. 
     196 
     197'''How to enable''': 
     198{{{#!elisp 
     199(defun compile-ghc () 
     200  (interactive) 
     201  (let ((compile-command (if (boundp 'ghc-compile) 
     202                             (concat "cd " ghc-location "; " ghc-compile) 
     203                             (concat "cd " ghc-location "/ghc; make 2")))) 
     204    (compile compile-command)) 
     205  (set-buffer "*compilation*") 
     206  (setq default-directory ghc-location)) 
     207 
     208(defun set-compile-ghc () 
     209  (local-set-key (kbd "C-q") 'compile-ghc)) 
     210 
     211(add-hook 'haskell-mode-hook 'set-compile-ghc) 
     212}}} 
     213 
     214A few things to note here: 
     215* The above code binds C-q (perhaps a bad combination, as I've accidentally quit Emacs from my Mac with the wrong modifier key!) to compiling GHC from ''any'' Haskell file, even those unrelated to GHC. But, when I'm working outside of GHC, I tend to use C-c C-l to load into GHCi, so this works out OK. 
     216* By default, as said above, this will compile the stage 2 compiler for the GHC at `ghc-location`. If you set `ghc-compile` with, say, M-: `(setq ghc-compile "cd compiler; make 1")` <Enter>, then this will build the stage 1 compiler.