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 (FnArgNormal:xs) (v:vs) fs = v : initialBodyArgs xs vs fs
|
||||||
initialBodyArgs _ _ _ = error "This should never happen" -- Lists are infinite
|
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 :: DynFlags -> PprStyle -> G.HsType G.RdrName -> G.RdrName -> String
|
||||||
initialFnBody dflag style ty name =
|
initialFnBody dflag style ty name =
|
||||||
let fname = showOccName dflag style $ occName name -- get function 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 \
|
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
|
EMACS = emacs
|
||||||
DETECT = xemacs
|
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-command)
|
||||||
(require 'ghc-ins-mod)
|
(require 'ghc-ins-mod)
|
||||||
(require 'ghc-indent)
|
(require 'ghc-indent)
|
||||||
|
(require 'ghc-rewrite)
|
||||||
(require 'dabbrev)
|
(require 'dabbrev)
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
@ -72,6 +73,7 @@
|
|||||||
(defvar ghc-hoogle-key (format "\C-c%c" (ghc-find-C-h)))
|
(defvar ghc-hoogle-key (format "\C-c%c" (ghc-find-C-h)))
|
||||||
(defvar ghc-shallower-key "\C-c<")
|
(defvar ghc-shallower-key "\C-c<")
|
||||||
(defvar ghc-deeper-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-hoogle-key 'haskell-hoogle)
|
||||||
(define-key haskell-mode-map ghc-shallower-key 'ghc-make-indent-shallower)
|
(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-deeper-key 'ghc-make-indent-deeper)
|
||||||
|
(define-key haskell-mode-map ghc-case-split-key 'ghc-case-split)
|
||||||
(ghc-comp-init)
|
(ghc-comp-init)
|
||||||
(setq ghc-initialized t))
|
(setq ghc-initialized t))
|
||||||
(ghc-import-module)
|
(ghc-import-module)
|
||||||
|
Loading…
Reference in New Issue
Block a user