- 论坛徽章:
- 0
|
在清茶灌了两天,回来这里一看,好冷清
上一个我在学 haskell 时用的 emacs 的配置文件吧(关于 haskell mode 的, haskell mode 的库可以和 emacs wiki 下载到)
(load "haskell-site-file")
(setq auto-mode-alist
(append auto-mode-alist
'(("\\.[hg]s$" . haskell-mode)
("\\.hi$" . haskell-mode)
("\\.l[hg]s$" . literate-haskell-mode))))
(autoload 'haskell-mode "haskell-mode"
"Major mode for editing Haskell scripts." t)
(autoload 'literate-haskell-mode "haskell-mode"
"Major mode for editing literate Haskell scripts." t)
;; adding the following lines according to which modules you want to use:
(add-hook 'haskell-mode-hook 'turn-on-haskell-font-lock)
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan)
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
;; (add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent)
;; (add-hook 'haskell-mode-hook 'turn-on-haskell-hugs)
(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)
(add-hook 'haskell-mode-hook
#'(lambda ()
(setq haskell-program-name "ghci")
(setq haskell-ghci-program-name "ghci")
(setq comment-padding " ")
(setq haskell-font-lock-symbols 'unicode)
(setq haskell-indent-offset 8)
(define-key haskell-mode-map "\C-cc"
'credmp/flymake-display-err-minibuf) ;for flymake display error in minibuf
;;; (define-key haskell-mode-map "\C-cc"
;;; 'flymake-display-err-menu-for-current-line) ;flymake display error in menu
(define-key haskell-mode-map "\C-cn"
'flymake-goto-next-error) ;
(setq comment-start "--")))
;; flymake mode for haskell
(require 'flymake)
(defun flymake-Haskell-init ()
(flymake-simple-make-init-impl
'flymake-create-temp-with-folder-structure nil nil
(file-name-nondirectory buffer-file-name)
'flymake-get-Haskell-cmdline))
(defun flymake-get-Haskell-cmdline (source base-dir)
(list "flycheck_haskell.pl"
(list source base-dir)))
(push '(".+\\.hs$" flymake-Haskell-init flymake-simple-java-cleanup)
flymake-allowed-file-name-masks)
(push '(".+\\.lhs$" flymake-Haskell-init flymake-simple-java-cleanup)
flymake-allowed-file-name-masks)
(push
'("^\\(\.+\.hs\\|\.lhs\\):\\([0-9]+\\):\\([0-9]+\\):\\(.+\\)"
1 2 3 4) flymake-err-line-patterns)
;; optional setting
;; if you want to use flymake always, then add the following hook.
(add-hook
'haskell-mode-hook
'(lambda ()
(if (not (null buffer-file-name)) (flymake-mode))))
(defun credmp/flymake-display-err-minibuf ()
"Displays the error/warning for the current line in the minibuffer"
(interactive)
(let* ((line-no (flymake-current-line-no))
(line-err-info-list (nth 0 (flymake-find-err-info flymake-err-info line-no)))
(count (length line-err-info-list))
)
(while (> count 0)
(when line-err-info-list
(let* ((file (flymake-ler-file (nth (1- count) line-err-info-list)))
(full-file (flymake-ler-full-file (nth (1- count) line-err-info-list)))
(text (flymake-ler-text (nth (1- count) line-err-info-list)))
(line (flymake-ler-line (nth (1- count) line-err-info-list))))
(message "[%s] %s" line text)
)
)
(setq count (1- count)))))
|
关于最后一个在 minibuffer 显示错误的键绑定,随个人喜好吧,我不是喜欢
对了,还要用到一个 perl 文件,也传上来(请把其中 perl 的位置改成你的 perl 的实际位置)
check.tar
(10 KB, 下载次数: 39)
|
|