# HG changeset patch # User Luke Hoersten # Date 1442345699 18000 # Node ID 7d7662fcc8d1af1fb7a69eba99f0937c239aec31 # Parent c99c95938a052d24ee20237cdfe93bc8f9b392eb Started using shm and paredit. diff -r c99c95938a05 -r 7d7662fcc8d1 elisp/haskell-init.el --- a/elisp/haskell-init.el Tue Sep 15 09:47:48 2015 -0500 +++ b/elisp/haskell-init.el Tue Sep 15 14:34:59 2015 -0500 @@ -3,7 +3,7 @@ ;; Require packages (require 'package-require) -(package-require '(haskell-mode yasnippet haskell-snippets flycheck flycheck-haskell)) +(package-require '(haskell-mode yasnippet haskell-snippets flycheck flycheck-haskell shm)) ;; Load haskell-mode from source ;; (add-to-list 'load-path "~/Code/elisp/haskell-mode/") @@ -14,6 +14,7 @@ (require 'haskell-process) (require 'haskell-interactive-mode) (require 'haskell-snippets) +(require 'shm) (defun haskell-who-calls (&optional prompt) "Grep the codebase to see who uses the symbol at point." @@ -53,11 +54,14 @@ (add-hook 'haskell-mode-hook (lambda () - (imenu-add-menubar-index) + ;; (imenu-add-menubar-index) (flycheck-mode) (flycheck-haskell-setup) - (haskell-indentation-mode t) + ;; (haskell-indentation-mode t) (subword-mode) + (electric-indent-mode 0) + (structured-haskell-mode t) + (set-face-background 'shm-quarantine-face "lemonchiffon") (interactive-haskell-mode t))) (custom-set-variables @@ -67,6 +71,10 @@ '(haskell-indentation-layout-offset 4) '(haskell-indentation-left-offset 4) + '(shm-use-presentation-mode t) + '(shm-auto-insert-skeletons t) + '(shm-auto-insert-bangs t) + '(haskell-process-type 'cabal-repl) ;; '(haskell-process-args-cabal-repl '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) ;; ghci-ng ;; '(haskell-process-path-ghci "ghci-ng") ;; ghci-ng @@ -106,6 +114,7 @@ (define-key haskell-interactive-mode-map (kbd "C-") 'haskell-interactive-mode-error-forward) (define-key haskell-interactive-mode-map (kbd "C-c c") 'haskell-process-cabal) +;; haskell-mode (define-key haskell-mode-map (kbd "C-c C-l") 'haskell-process-load-or-reload) (define-key haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) (define-key haskell-mode-map (kbd "C-c C-t") 'haskell-process-do-type) @@ -117,10 +126,16 @@ (define-key haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) (define-key haskell-mode-map (kbd "SPC") 'haskell-mode-contextual-space) +;; cabal (define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) (define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-process-clear) (define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) (define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal) +;; shm +(define-key shm-map (kbd "C-c C-p") 'shm/expand-pattern) +(define-key shm-map (kbd "C-c C-s") 'shm/case-split) +(define-key shm-map (kbd "C-\\") 'shm/goto-last-point) + (message "Loading haskell-init...done") (provide 'haskell-init) diff -r c99c95938a05 -r 7d7662fcc8d1 elisp/package-require.el --- a/elisp/package-require.el Tue Sep 15 09:47:48 2015 -0500 +++ b/elisp/package-require.el Tue Sep 15 14:34:59 2015 -0500 @@ -3,7 +3,7 @@ (package-initialize) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) -(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) +;; (add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/") t) (defun package-require (packages) diff -r c99c95938a05 -r 7d7662fcc8d1 elisp/shm-init.el --- a/elisp/shm-init.el Tue Sep 15 09:47:48 2015 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,209 +0,0 @@ -;; ~/.emacs.d/elisp/shm-init.el -;; Luke Hoersten - -;; Require packages -(require 'package-require) -(package-require '(haskell-mode shm hindent flymake-haskell-multi)) - -;; Requirements -(require 'shm) -(require 'hindent) -(require 'shm-case-split) -(require 'shm-reformat) -(require 'haskell) -(require 'haskell-mode) -(require 'hindent) -(require 'haskell-process) -(require 'haskell-simple-indent) -(require 'haskell-interactive-mode) -(require 'haskell-font-lock) - -;; Functions -(defun haskell-process-all-types () - "List all types in a grep-mode buffer." - (interactive) - (let ((session (haskell-session))) - (switch-to-buffer (get-buffer-create (format "*%s:all-types*" - (haskell-session-name (haskell-session))))) - (setq haskell-session session) - (cd (haskell-session-current-dir session)) - (let ((inhibit-read-only t)) - (erase-buffer) - (let ((haskell-process-log nil)) - (insert (haskell-process-queue-sync-request (haskell-process) ":all-types"))) - (unless (eq major-mode 'compilation-mode) - (compilation-mode) - (setq compilation-error-regexp-alist - haskell-compilation-error-regexp-alist))))) - -(defun haskell-interactive-toggle-print-mode () - (interactive) - (setq haskell-interactive-mode-eval-mode - (intern - (ido-completing-read "Eval result mode: " - '("fundamental-mode" - "haskell-mode" - "ghc-core-mode"))))) - -(defun haskell-insert-doc () - "Insert the documentation syntax." - (interactive) - (insert "-- | ")) - -(defun haskell-insert-undefined () - "Insert undefined." - (interactive) - (if (and (boundp 'structured-haskell-mode) - structured-haskell-mode) - (shm-insert-string "undefined") - (insert "undefined"))) - -(defun haskell-move-right () - (interactive) - (haskell-move-nested 1)) - -(defun haskell-move-left () - (interactive) - (haskell-move-nested -1)) - -(defun haskell-who-calls (&optional prompt) - "Grep the codebase to see who uses the symbol at point." - (interactive "P") - (let ((sym (if prompt - (read-from-minibuffer "Look for: ") - (haskell-ident-at-point)))) - (let ((existing (get-buffer "*who-calls*"))) - (when existing - (kill-buffer existing))) - (let ((buffer - (grep-find (format "cd %s && find . -name '*.hs' -exec grep -inH -e %s {} +" - (haskell-session-current-dir (haskell-session)) - sym)))) - (with-current-buffer buffer - (rename-buffer "*who-calls*") - (switch-to-buffer-other-window buffer))))) - -(defun haskell-auto-insert-module-template () - "Insert a module template for the newly created buffer." - (interactive) - (when (and (= (point-min) - (point-max)) - (buffer-file-name)) - (insert - "-- | " - "\n" - "\n" - "module " - ) - (let ((name (haskell-guess-module-name))) - (if (string= name "") - (progn (insert "Main") - (shm-evaporate (- (point) 5) - (point))) - (insert name))) - (insert " where" - "\n" - "\n") - (goto-char (point-min)) - (forward-char 4))) - -(defun shm-contextual-space () - "Do contextual space first, and run shm/space if no change in -the cursor position happened." - (interactive) - (if (looking-back "import") - (call-interactively 'haskell-mode-contextual-space) - (progn - (let ((ident (haskell-ident-at-point))) - (when ident - (and interactive-haskell-mode - (haskell-process-do-try-type ident)))) - (call-interactively 'shm/space)))) - -;; Mode settings -(custom-set-variables - '(haskell-process-type 'cabal-repl) - '(haskell-process-args-cabal-repl - '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) - '(haskell-notify-p t) - '(haskell-stylish-on-save nil) - '(haskell-tags-on-save nil) - '(haskell-process-suggest-remove-import-lines t) - '(haskell-process-auto-import-loaded-modules t) - '(haskell-process-log t) - '(haskell-process-reload-with-fbytecode nil) - '(haskell-process-use-presentation-mode t) - '(haskell-interactive-mode-include-file-name nil) - '(haskell-interactive-mode-eval-pretty nil) - '(shm-use-presentation-mode t) - '(shm-auto-insert-skeletons t) - '(shm-auto-insert-bangs t) - '(haskell-process-suggest-haskell-docs-imports t) - '(hindent-style "chris-done") - '(haskell-interactive-mode-eval-mode 'haskell-mode) - '(haskell-process-path-ghci "ghci-ng") - '(haskell-process-args-ghci '("-ferror-spans")) - '(haskell-process-args-cabal-repl - '("--ghc-option=-ferror-spans" "--with-ghc=ghci-ng")) - '(haskell-process-generate-tags nil) - '(haskell-complete-module-preferred - '("Data.ByteString" - "Data.ByteString.Lazy" - "Data.List" - "Data.Map" - "Data.Maybe" - "Data.Monoid" - "Data.Ord"))) - -;; Add hook -(add-hook 'haskell-mode-hook 'structured-haskell-mode) -(add-hook 'haskell-mode-hook 'interactive-haskell-mode) -(add-hook 'haskell-interactive-mode-hook 'structured-haskell-repl-mode) -(add-hook 'haskell-mode-hook 'haskell-auto-insert-module-template) - -;; Keybindings -(define-key interactive-haskell-mode-map [f5] 'haskell-process-load-or-reload) -(define-key interactive-haskell-mode-map [f12] 'haskell-process-reload-devel-main) -(define-key interactive-haskell-mode-map (kbd "M-,") 'haskell-who-calls) -(define-key interactive-haskell-mode-map (kbd "C-`") 'haskell-interactive-bring) -(define-key interactive-haskell-mode-map (kbd "C-c C-k") 'haskell-interactive-mode-clear) -(define-key interactive-haskell-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) -(define-key interactive-haskell-mode-map (kbd "C-c c") 'haskell-process-cabal) -(define-key interactive-haskell-mode-map (kbd "M-.") 'haskell-mode-goto-loc) -(define-key interactive-haskell-mode-map (kbd "C-?") 'haskell-mode-find-uses) -(define-key interactive-haskell-mode-map (kbd "C-c C-t") 'haskell-mode-show-type-at) - -(define-key haskell-mode-map (kbd "C-c i") 'hindent/reformat-decl) -(define-key haskell-mode-map [f8] 'haskell-navigate-imports) -(define-key haskell-mode-map (kbd "C-c C-u") 'haskell-insert-undefined) -(define-key haskell-mode-map (kbd "C-c C-a") 'haskell-insert-doc) -(define-key haskell-mode-map (kbd "C-") 'haskell-simple-indent-newline-indent) -(define-key haskell-mode-map (kbd "C-") 'haskell-move-right) -(define-key haskell-mode-map (kbd "C-") 'haskell-move-left) -(define-key haskell-mode-map (kbd "") 'haskell-mode-contextual-space) - -(define-key haskell-cabal-mode-map (kbd "C-`") 'haskell-interactive-bring) -(define-key haskell-cabal-mode-map [?\C-c ?\C-z] 'haskell-interactive-switch) -(define-key haskell-cabal-mode-map (kbd "C-c C-c") 'haskell-process-cabal-build) -(define-key haskell-cabal-mode-map (kbd "C-c c") 'haskell-process-cabal) -(define-key haskell-cabal-mode-map (kbd "C-c C-k") 'haskell-interactive-mode-clear) - -(define-key haskell-interactive-mode-map (kbd "C-c C-v") 'haskell-interactive-toggle-print-mode) -(define-key haskell-interactive-mode-map (kbd "C-c C-i") 'haskell-process-do-info) -(define-key haskell-interactive-mode-map [f12] 'haskell-process-reload-devel-main) -(define-key haskell-interactive-mode-map (kbd "C-") 'haskell-interactive-mode-error-backward) -(define-key haskell-interactive-mode-map (kbd "C-") 'haskell-interactive-mode-error-forward) -(define-key haskell-interactive-mode-map (kbd "C-c c") 'haskell-process-cabal) - -(define-key shm-map (kbd "C-c C-p") 'shm/expand-pattern) -(define-key shm-map (kbd "C-c C-s") 'shm/case-split) -(define-key shm-map (kbd "SPC") 'shm-contextual-space) -(define-key shm-map (kbd "C-\\") 'shm/goto-last-point) -(define-key shm-map (kbd "C-c C-f") 'shm-fold-toggle-decl) -(define-key shm-map (kbd "C-c i") 'shm-reformat-decl) - -(turn-on-haskell-simple-indent) -(load "haskell-mode-autoloads.el") - -(message "Loading shm-init...done") -(provide 'shm-init) diff -r c99c95938a05 -r 7d7662fcc8d1 init.el --- a/init.el Tue Sep 15 09:47:48 2015 -0500 +++ b/init.el Tue Sep 15 14:34:59 2015 -0500 @@ -23,7 +23,7 @@ (delete-selection-mode t) ; replace highlighted text (windmove-default-keybindings) ; move between windows with shift-arrow (fset 'yes-or-no-p 'y-or-n-p) ; replace yes/no prompts -(global-hl-line-mode t) ; highlight current line +;; (global-hl-line-mode t) ; highlight current line ;;; Coding @@ -47,6 +47,7 @@ ns-pop-up-frames nil ispell-program-name "/usr/local/bin/aspell")) + ;;; Xorg (when window-system (tool-bar-mode -1) ; remove tool bar @@ -55,12 +56,14 @@ (visual-line-mode t) ; word wrap break on whitespace (set-default-font (if is-mac "Ubuntu Mono-12" "Ubuntu Mono-10.5"))) + ;;;; Mode-Specific ;;;; ;;; text-mode (add-hook 'fundamental-mode-hook 'flyspell-mode) ; spellcheck text (add-hook 'fundamental-mode-hook 'turn-on-auto-fill) ; autofill text + ;;; ido-mode (ido-mode t) ; file/buffer selector (setq-default @@ -69,6 +72,7 @@ ido-everywhere t ; use ido where possible ido-max-window-height 1) ; max ido window height + ;;; whitespace-mode (global-whitespace-mode t) ; show whitespace (add-hook 'before-save-hook 'whitespace-cleanup) ; cleanup whitespace on exit @@ -78,6 +82,7 @@ '(trailing lines-tail empty indentation space-before-tab space-after-tab)) + ;;; org-mode (add-hook 'org-mode-hook @@ -87,6 +92,7 @@ (local-set-key (kbd "M-n") 'org-move-item-down) (local-set-key (kbd "M-S-n") 'org-move-subtree-down))) + ;;; ibuffer (global-set-key (kbd "C-x C-b") 'ibuffer) ; better buffer browser (setq-default @@ -120,25 +126,33 @@ json-mode json-reformat solarized-theme terraform-mode visual-regexp yasnippet yaml-mode zencoding-mode)) -;;; terminal + +;;; shell (global-set-key (kbd "C-c s") 'eshell) ; start shell (exec-path-from-shell-copy-env "PYTHONPATH") (exec-path-from-shell-initialize) (eshell) (add-hook 'eshell-mode-hook (lambda () (setenv "TERM" "emacs"))) + ;;; custom requires (require 'haskell-init) (require 'javascript-init) (require 'c-init) (require 'ansible-init) + ;;; ido / smex / completion (ido-at-point-mode) (global-set-key (kbd "M-/") 'completion-at-point) (global-set-key (kbd "M-x") 'smex) (global-set-key (kbd "M-X") 'smex-major-mode-commands) + +;;; emacs-lisp-mode +(add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) + + ;;; ace-mode (define-key global-map (kbd "C-c SPC") 'ace-jump-mode) ;; (autoload @@ -154,12 +168,13 @@ ;;; company-mode (add-hook 'after-init-hook 'global-company-mode) (global-set-key (kbd "M-/") 'company-complete) -(custom-set-variables - '(company-idle-delay nil) - '(company-minimum-prefix-length 2) - '(company-selection-wrap-around t) - '(company-show-numbers t) - '(company-tooltip-align-annotations t)) +(setq-default + company-idle-delay nil + company-minimum-prefix-length 2 + company-selection-wrap-around t + company-show-numbers t + company-tooltip-align-annotations t) + ;;; uniquify (require 'uniquify) ; unique buffer names with dirs @@ -167,6 +182,7 @@ uniquify-buffer-name-style 'post-forward uniquify-separator ":") + ;;; color-theme (setq-default custom-safe-themes @@ -174,9 +190,9 @@ "d677ef584c6dfc0697901a44b885cc18e206f05114c8a3b7fde674fce6180879" default)) (load-theme 'solarized-light) + ;;; yasnippets (setq-default yas-prompt-functions '(yas-ido-prompt yas-dropdown-prompt)) ; use ido for multiple snippets -;; (setq-default yas-snippet-dirs '("~/.emacs.d/snippets")) (yas-global-mode t) @@ -194,9 +210,11 @@ (zencoding-mode) (rainbow-mode))) + ;;; css-mode (add-hook 'css-mode-hook 'rainbow-mode) + ;;; coding-modes map (mapc (lambda (x) @@ -217,13 +235,16 @@ conf-mode-hook yaml-mode-hook)) + ;;; expand-region (global-set-key (kbd "C-=") 'er/expand-region) + ;;; move-text (global-set-key (kbd "M-p") 'move-text-up) (global-set-key (kbd "M-n") 'move-text-down) + ;;; visual-regexp (global-set-key (kbd "C-M-%") 'vr/query-replace) (global-set-key (kbd "M-%") 'vr/replace)