Initial skeleton for case split in elisp
This commit is contained in:
		
							parent
							
								
									8a63ae078b
								
							
						
					
					
						commit
						5a968225c3
					
				| @ -388,6 +388,11 @@ initialBodyArgs (FnArgFunction:xs) vs (f:fs) = f : initialBodyArgs xs vs fs | ||||
| initialBodyArgs (FnArgNormal:xs)   (v:vs) fs = v : initialBodyArgs xs vs fs | ||||
| initialBodyArgs _                  _      _  = error "This should never happen" -- Lists are infinite | ||||
| 
 | ||||
| -- Getting the initial body of function and instances differ | ||||
| -- This is because for functions we only use the parsed file | ||||
| -- (so the full file doesn't have to be type correct) | ||||
| -- but for instances we need to get information about the class | ||||
| 
 | ||||
| initialFnBody :: DynFlags -> PprStyle -> G.HsType G.RdrName -> G.RdrName -> String | ||||
| initialFnBody dflag style ty name =  | ||||
|   let fname = showOccName dflag style $ occName name  -- get function name | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| SRCS = ghc.el ghc-func.el ghc-doc.el ghc-comp.el ghc-check.el ghc-process.el \
 | ||||
|        ghc-command.el ghc-info.el ghc-ins-mod.el ghc-indent.el | ||||
|        ghc-command.el ghc-info.el ghc-ins-mod.el ghc-indent.el ghc-rewrite.el | ||||
| EMACS = emacs | ||||
| DETECT = xemacs | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										42
									
								
								elisp/ghc-rewrite.el
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								elisp/ghc-rewrite.el
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,42 @@ | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;;; | ||||
| ;;; ghc-rewrite.el | ||||
| ;;; | ||||
| 
 | ||||
| ;; Author:  Alejandro Serrano <trupill@gmail.com> | ||||
| ;; Created: Jun 17, 2014 | ||||
| 
 | ||||
| ;;; Code: | ||||
| 
 | ||||
| (require 'ghc-func) | ||||
| (require 'ghc-process) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;;; | ||||
| ;;; Case splitting | ||||
| ;;; | ||||
| 
 | ||||
| (ghc-defstruct sinfo beg-line beg-column end-line end-column info) | ||||
| 
 | ||||
| (defun ghc-case-split () | ||||
|   (interactive) | ||||
|   (let ((info (ghc-obtain-case-split))) | ||||
|     (if (null info) | ||||
| 	(message "Cannot split in cases") | ||||
| 	(let ((varinfo (car info)) | ||||
| 	      (declinfo (cadr info)) | ||||
| 	      (cases (caddr info))) | ||||
| 	  (message cases) | ||||
| 	  ) | ||||
|       ) | ||||
|     ) | ||||
|   ) | ||||
| 
 | ||||
| (defun ghc-obtain-case-split () | ||||
|   (let* ((ln (int-to-string (line-number-at-pos))) | ||||
| 	 (cn (int-to-string (1+ (current-column)))) | ||||
| 	 (file (buffer-file-name)) | ||||
| 	 (cmd (format "split %s %s %s\n" file ln cn))) | ||||
|     (ghc-sync-process cmd))) | ||||
| 
 | ||||
| (provide 'ghc-rewrite) | ||||
| @ -40,6 +40,7 @@ | ||||
| (require 'ghc-command) | ||||
| (require 'ghc-ins-mod) | ||||
| (require 'ghc-indent) | ||||
| (require 'ghc-rewrite) | ||||
| (require 'dabbrev) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| @ -72,6 +73,7 @@ | ||||
| (defvar ghc-hoogle-key      (format "\C-c%c" (ghc-find-C-h))) | ||||
| (defvar ghc-shallower-key   "\C-c<") | ||||
| (defvar ghc-deeper-key      "\C-c>") | ||||
| (defvar ghc-case-split-key  "\C-c\C-p") | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;;; | ||||
| @ -104,6 +106,7 @@ | ||||
|     (define-key haskell-mode-map ghc-hoogle-key      'haskell-hoogle) | ||||
|     (define-key haskell-mode-map ghc-shallower-key   'ghc-make-indent-shallower) | ||||
|     (define-key haskell-mode-map ghc-deeper-key      'ghc-make-indent-deeper) | ||||
|     (define-key haskell-mode-map ghc-case-split-key  'ghc-case-split) | ||||
|     (ghc-comp-init) | ||||
|     (setq ghc-initialized t)) | ||||
|   (ghc-import-module) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alejandro Serrano
						Alejandro Serrano