diff --git a/custom.el b/custom.el index 016b639..82e84da 100644 --- a/custom.el +++ b/custom.el @@ -7,7 +7,7 @@ '(magit-commit-arguments (quote ("-S"))) '(package-selected-packages (quote - (ace-ack ag anti-anywhere anzu-avy bright-bright browse browse-buffer coffee-column company-company completing-cursors dash-descbinds describe-diff diminish-direx-dockerfile dumb-dup-ecb editorconfig-eldoc-eslintd-evil exec-expand feature file-fill fix-flycheck flycheck flycheck-from full-gh git-git gitconfig-github github-gitignore go-go go-go go-go gometalinter-gotest gtags-guides guru-haml helm-helm helm-helm helm-helm helm-helm highlight-highlight highlight-hl ido-ido-imenu indent-indentation indicator inf-inflection json jump-kill line link-lint linum-lua magit-magit markdown-mode mode-mode mode-mode mode-mode mode-mode mode mode-mode mode mode-mode mode mode-mode-mode mode-modes-move+ move-multiple open-package package-package-path phi-php plantuml-projectile-projectile pulls-quotes rainbow-read refactor region-relative rename-ring rspec-ruby-ruby ruby-sass scss-search shell shift smart-smart smartparens smex-string swoop-symbol-theme theme thrift-timemachine-toggle tools twilight-twilight use-vertical-web window-window-yaml-yari yasnippet zoom))) + (which-key ace-ack ag anti-anywhere anzu-avy bright-bright browse browse-buffer coffee-column company-company completing-cursors dash-descbinds describe-diff diminish-direx-dockerfile dumb-dup-ecb editorconfig-eldoc-eslintd-evil exec-expand feature file-fill fix-flycheck flycheck flycheck-from full-gh git-git gitconfig-github github-gitignore go-go go-go go-go gometalinter-gotest gtags-guides guru-haml helm-helm helm-helm helm-helm helm-helm highlight-highlight highlight-hl ido-ido-imenu indent-indentation indicator inf-inflection json jump-kill line link-lint linum-lua magit-magit markdown-mode mode-mode mode-mode mode-mode mode-mode mode mode-mode mode mode-mode mode mode-mode-mode mode-modes-move+ move-multiple open-package package-package-path phi-php plantuml-projectile-projectile pulls-quotes rainbow-read refactor region-relative rename-ring rspec-ruby-ruby ruby-sass scss-search shell shift smart-smart smartparens smex-string swoop-symbol-theme theme thrift-timemachine-toggle tools twilight-twilight use-vertical-web window-window-yaml-yari yasnippet zoom))) '(plantuml-jar-path "/usr/local/Cellar/plantuml/8048/plantuml.8048.jar") '(siren-rubocop-autocorrect-on-save nil)) (custom-set-faces diff --git a/modules/siren-auto-complete.el b/modules/siren-auto-complete.el index a1958f4..0448909 100644 --- a/modules/siren-auto-complete.el +++ b/modules/siren-auto-complete.el @@ -9,6 +9,12 @@ (require 'siren-flyspell) (use-package auto-complete + :bind (:map ac-completing-map + ("RET" . ac-complete) + ("C-m" . ac-complete) + ("C-s" . ac-isearch) + ("C-n" . ac-next) + ("C-p" . ac-previous)) :config (ac-flyspell-workaround) @@ -17,13 +23,6 @@ ac-delay 0.05 ac-menu-height 15) - (let ((map ac-completing-map)) - (define-key map (kbd "RET") 'ac-complete) - (define-key map (kbd "C-m") 'ac-complete) - (define-key map (kbd "C-s") 'ac-isearch) - (define-key map (kbd "C-n") 'ac-next) - (define-key map (kbd "C-p") 'ac-previous)) - ;; Auto-complete when indenting. (defadvice indent-for-tab-command (around ac-before-indent activate) "Call `auto-complete' if text was recently entered." diff --git a/modules/siren-browse-kill-ring.el b/modules/siren-browse-kill-ring.el index e78f386..bdf04f3 100644 --- a/modules/siren-browse-kill-ring.el +++ b/modules/siren-browse-kill-ring.el @@ -7,7 +7,7 @@ ;;; Code: (use-package browse-kill-ring - :init + :config (browse-kill-ring-default-keybindings)) (provide 'siren-browse-kill-ring) diff --git a/modules/siren-coffee.el b/modules/siren-coffee.el index d9e832e..e09d6fa 100644 --- a/modules/siren-coffee.el +++ b/modules/siren-coffee.el @@ -11,12 +11,11 @@ (use-package coffee-mode :mode "\\.coffee\\'" :interpreter "coffee" + :hook (coffee-mode . siren-coffee-mode-setup) - :config - (setq coffee-tab-width 2) - - (defun siren-coffee-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-coffee-mode-setup () + (siren-prog-mode-setup) ;; remove the "Generated by CoffeeScript" header (add-to-list 'coffee-args-compile "--no-header") @@ -31,9 +30,8 @@ (highlight-indentation-current-column-mode) (subword-mode +1)) - (setq siren-coffee-mode-hook 'siren-coffee-mode-defaults) - (add-hook 'coffee-mode-hook (lambda () - (run-hooks 'siren-coffee-mode-hook)))) + :config + (setq coffee-tab-width 2)) (provide 'siren-coffee) ;;; siren-coffee.el ends here diff --git a/modules/siren-company.el b/modules/siren-company.el index ba28b67..0689744 100644 --- a/modules/siren-company.el +++ b/modules/siren-company.el @@ -9,11 +9,7 @@ (require 'siren-fci) (use-package company - :config - - ;; work-around for issues with fci-mode - (defvar-local company-fci-mode-on-p nil) - + :init (defun company-turn-off-fci (&rest ignore) (when (boundp 'fci-mode) (setq company-fci-mode-on-p fci-mode) @@ -22,6 +18,10 @@ (defun company-maybe-turn-on-fci (&rest ignore) (when company-fci-mode-on-p (fci-mode 1))) + :config + ;; work-around for issues with fci-mode + (defvar-local company-fci-mode-on-p nil) + (add-hook 'company-completion-started-hook 'company-turn-off-fci) (add-hook 'company-completion-finished-hook 'company-maybe-turn-on-fci) (add-hook 'company-completion-cancelled-hook 'company-maybe-turn-on-fci) diff --git a/modules/siren-conf.el b/modules/siren-conf.el index 327cf1c..b6b0050 100644 --- a/modules/siren-conf.el +++ b/modules/siren-conf.el @@ -9,16 +9,15 @@ (require 'siren-programming) (use-package conf-mode - :mode "Procfile\\'" - :config - (defun siren-conf-mode-defaults () - (siren-prog-mode-defaults) + :mode "Procfile\\'" "\\.conf\\'" "\\.cfg\\'" + :hook (conf-mode . siren-conf-mode-setup) + + :init + (defun siren-conf-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode)) - - (setq siren-conf-mode-hook 'siren-conf-mode-defaults) - (add-hook 'conf-mode-hook (lambda () (run-hooks 'siren-conf-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-conf) ;;; siren-conf.el ends here diff --git a/modules/siren-css.el b/modules/siren-css.el index 976dff9..5d53eb9 100644 --- a/modules/siren-css.el +++ b/modules/siren-css.el @@ -11,18 +11,17 @@ (use-package css-mode :mode "\\.css\\'" + :hook (css-mode-hook . siren-css-mode-setup) + :config (setq css-indent-offset 2) - (defun siren-css-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-css-mode-setup () + (siren-prog-mode-setup) (rainbow-mode +1) (setq tab-width 2) - (highlight-indentation-current-column-mode)) - - (setq siren-css-mode-hook 'siren-css-mode-defaults) - (add-hook 'css-mode-hook (lambda () - (run-hooks 'siren-css-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-css) ;;; siren-css.el ends here diff --git a/modules/siren-cucumber.el b/modules/siren-cucumber.el index 243fbea..83df072 100644 --- a/modules/siren-cucumber.el +++ b/modules/siren-cucumber.el @@ -11,17 +11,14 @@ (use-package feature-mode :mode "\\.feature\\'" :interpreter "cucumber" + :hook (feature-mode . siren-feature-mode-setup) - :config - (defun siren-feature-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-feature-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode)) - - (setq siren-feature-mode-hook 'siren-feature-mode-defaults) - (add-hook 'feature-mode-hook (lambda () - (run-hooks 'siren-feature-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-cucumber) ;;; siren-cucumber.el ends here diff --git a/modules/siren-diff-hl.el b/modules/siren-diff-hl.el index ffa43ee..b949724 100644 --- a/modules/siren-diff-hl.el +++ b/modules/siren-diff-hl.el @@ -7,9 +7,13 @@ ;;; Code: (use-package diff-hl - :init - (add-hook 'dired-mode-hook 'diff-hl-dired-mode) - (global-diff-hl-mode +1)) + :demand + :hook ((dired-mode . diff-hl-dired-mode) + (magit-post-refresh-hook . diff-hl-magit-post-refresh)) + + :config + (global-diff-hl-mode +1) + (diff-hl-flydiff-mode +1)) (provide 'siren-diff-hl) ;;; siren-diff-hl.el ends here diff --git a/modules/siren-dired.el b/modules/siren-dired.el index 8609123..20684c0 100644 --- a/modules/siren-dired.el +++ b/modules/siren-dired.el @@ -6,16 +6,18 @@ ;;; Code: -;; Loads from vendor. -(require 'dired+) +(require 'siren-linum) -(defun siren-dired-mode-defaults () - (linum-mode t) - (define-key dired-mode-map (kbd "c") 'dired-create-directory) - (toggle-diredp-find-file-reuse-dir 1)) +(use-package dired+ + :ensure nil ;; loaded from vendor + :demand + :hook (dired-mode . siren-dired-mode-setup) -(setq siren-dired-mode-hook 'siren-dired-mode-defaults) -(add-hook 'dired-mode-hook (lambda () (run-hooks 'siren-dired-mode-hook))) + :init + (defun siren-dired-mode-setup () + (linum-mode t) + (define-key dired-mode-map (kbd "c") 'dired-create-directory) + (toggle-diredp-find-file-reuse-dir 1))) (provide 'siren-dired) ;;; siren-dired.el ends here diff --git a/modules/siren-direx.el b/modules/siren-direx.el index 3b55a0b..a9b4b4f 100644 --- a/modules/siren-direx.el +++ b/modules/siren-direx.el @@ -7,17 +7,14 @@ ;;; Code: (use-package direx - :bind - ("C-x j" . direx-project:jump-to-project-root) + :bind ("C-x j" . direx-project:jump-to-project-root) + :hook (direx-mode . siren-direx-mode-setup) :config (setq direx:closed-icon " + " - direx:open-icon " - ") + direx:open-icon " - ")) - (defun siren-direx-mode-defaults ()) - - (setq siren-direx-mode-hook 'siren-direx-mode-defaults) - (add-hook 'direx-mode-hook (lambda () (run-hooks 'siren-direx-mode-hook)))) +(defun siren-direx-mode-setup ()) (provide 'siren-direx) ;;; siren-direx.el ends here diff --git a/modules/siren-dockerfile.el b/modules/siren-dockerfile.el index 08ffd58..94d837e 100644 --- a/modules/siren-dockerfile.el +++ b/modules/siren-dockerfile.el @@ -9,16 +9,13 @@ (require 'siren-programming) (use-package dockerfile-mode - :mode "Dockerfile\\'" + :mode "Dockerfile.*\\'" + :hook (dockerfile-mode . siren-dockerfile-mode-setup) - :config - (defun siren-dockerfile-mode-defaults () - (siren-prog-mode-defaults) - (subword-mode +1)) - - (setq siren-dockerfile-mode-hook 'siren-dockerfile-mode-defaults) - (add-hook 'dockerfile-mode-hook (lambda () - (run-hooks 'siren-dockerfile-mode-hook)))) + :init + (defun siren-dockerfile-mode-setup () + (siren-prog-mode-setup) + (subword-mode +1))) (provide 'siren-dockerfile) ;;; siren-dockerfile.el ends here diff --git a/modules/siren-edit-server.el b/modules/siren-edit-server.el index b3409e2..712a9ef 100644 --- a/modules/siren-edit-server.el +++ b/modules/siren-edit-server.el @@ -8,6 +8,8 @@ (use-package edit-server :if window-system + :hook (after-init . edit-server-start) + :init (setq edit-server-default-major-mode 'markdown-mode edit-server-new-frame-alist @@ -15,9 +17,7 @@ (width . 90) (height . 45) (minibuffer . t) - (menu-bar-lines . t))) - - (add-hook 'after-init-hook 'edit-server-start t)) + (menu-bar-lines . t)))) (provide 'siren-edit-server) ;;; siren-edit-server.el ends here diff --git a/modules/siren-elscreen.el b/modules/siren-elscreen.el index a614f13..4e7e5d6 100644 --- a/modules/siren-elscreen.el +++ b/modules/siren-elscreen.el @@ -7,6 +7,7 @@ ;;; Code: (use-package elscreen + :demand :bind (("s-}" . elscreen-next) ("s-{" . elscreen-previous) @@ -27,7 +28,6 @@ ("C-;" . elscreen-display-screen-name-list)) :config - ;; Start ElScreen. (elscreen-start)) (use-package elscreen-buffer-group :defer t) diff --git a/modules/siren-emacs-lisp.el b/modules/siren-emacs-lisp.el index 86363ef..47dfc28 100644 --- a/modules/siren-emacs-lisp.el +++ b/modules/siren-emacs-lisp.el @@ -24,7 +24,7 @@ (when (and file-name (string-match-p ".*-tests?\\.el\\'" file-name)) (setq-local flycheck-checkers '(emacs-lisp))))) -(defun siren-emacs-lisp-mode-defaults () +(defun siren-emacs-lisp-mode-setup () "Sensible defaults for `emacs-lisp-mode'." (highlight-indent-guides-mode) ;; (run-hooks 'siren-lisp-coding-hook) @@ -35,14 +35,8 @@ ;; (siren-conditional-emacs-lisp-checker) ) -(setq siren-emacs-lisp-mode-hook 'siren-emacs-lisp-mode-defaults) -(add-hook 'emacs-lisp-mode-hook (lambda () - (run-hooks 'siren-emacs-lisp-mode-hook))) - +(add-hook 'emacs-lisp-mode-hook #'siren-emacs-lisp-mode-setup) (add-to-list 'auto-mode-alist '("Cask\\'" . emacs-lisp-mode)) -(eval-after-load "rainbow-mode" - '(diminish 'rainbow-mode)) - (provide 'siren-emacs-lisp) ;;; siren-emacs-lisp.el ends here diff --git a/modules/siren-escreen.el b/modules/siren-escreen.el index fb1f83d..dbc8486 100644 --- a/modules/siren-escreen.el +++ b/modules/siren-escreen.el @@ -6,64 +6,49 @@ ;;; Code: -;; Loads from vendor. -(require 'escreen) +(use-package escreen + :ensure nil ;; loaded from vendor + :demand -;; Escreen Helper -;; - from http://blog.nguyenvq.com/2011/03/07/escreen-instead-of-elscreen-for-screen-like-features-in-emacs/ -(defun escreen-get-active-screen-numbers-with-emphasis () - "what the name says" - (interactive) - (let ((escreens (escreen-get-active-screen-numbers)) - (emphased "")) - (dolist (s escreens) - (setq emphased - (concat emphased (if (= escreen-current-screen-number s) - (propertize (number-to-string s) - ;;'face 'custom-variable-tag) " ") - ;;'face 'info-title-3) - 'face 'font-lock-warning-face) - ;;'face 'secondary-selection) - (number-to-string s)) - " "))) - (message "escreen: active screens: %s" emphased))) + :bind (("s-}" . escreen-goto-next-screen) + ("s-{" . escreen-goto-prev-screen) + :map escreen-map + ("C-z" . escreen-goto-last-screen) + ("l" . escreen-goto-last-screen) + ("C-l" . escreen-goto-last-screen) + (";" . siren-escreen-get-active-screen) + ("C-;" . siren-escreen-get-active-screen) + ("C-c" . escreen-create-screen) + ("C-g" . escreen-goto-screen) + ("C-k" . escreen-kill-screen) + ("C-n" . escreen-goto-next-screen) + ("C-p" . escreen-goto-prev-screen)) -;; Initialize escreen -(escreen-install) + :hook + (escreen-goto-screen . siren-escreen-get-active-screen) -;; Set prefix key to C-z. -(setq escreen-prefix-char (kbd "C-z")) -(global-set-key escreen-prefix-char 'escreen-prefix) -(define-key escreen-map escreen-prefix-char 'escreen-goto-last-screen) + :init + (defun siren-escreen-get-active-screen () + "what the name says" + (interactive) + (let ((escreens (escreen-get-active-screen-numbers)) + (emphased "")) + (dolist (s escreens) + (setq emphased + (concat emphased (if (= escreen-current-screen-number s) + (propertize (number-to-string s) + ;;'face 'custom-variable-tag) " ") + ;;'face 'info-title-3) + 'face 'font-lock-warning-face) + ;;'face 'secondary-selection) + (number-to-string s)) + " "))) + (message "escreen: active screens: %s" emphased))) -;; Toggle screens. -(define-key escreen-map (kbd "l") 'escreen-goto-last-screen) -(define-key escreen-map (kbd "C-l") 'escreen-goto-last-screen) - -;; List screens. -(define-key escreen-map (kbd "a") - 'escreen-get-active-screen-numbers-with-emphasis) -(define-key escreen-map (kbd "C-a") - 'escreen-get-active-screen-numbers-with-emphasis) -(define-key escreen-map (kbd ";") - 'escreen-get-active-screen-numbers-with-emphasis) -(define-key escreen-map (kbd "C-;") - 'escreen-get-active-screen-numbers-with-emphasis) - -;; Goto screens. -(global-set-key (kbd "s-}") 'escreen-goto-next-screen) -(global-set-key (kbd "s-{") 'escreen-goto-prev-screen) - -;; Ctrl versions of default commands. -(define-key escreen-map (kbd "C-c") 'escreen-create-screen) -(define-key escreen-map (kbd "C-g") 'escreen-goto-screen) -(define-key escreen-map (kbd "C-k") 'escreen-kill-screen) -(define-key escreen-map (kbd "C-n") 'escreen-goto-next-screen) -(define-key escreen-map (kbd "C-p") 'escreen-goto-prev-screen) - -;; Show list of screens when you switch/create/kill. -(add-hook 'escreen-goto-screen-hook - 'escreen-get-active-screen-numbers-with-emphasis) + :config + (escreen-install) + (setq escreen-prefix-char (kbd "C-z")) + (global-set-key escreen-prefix-char 'escreen-prefix)) (provide 'siren-escreen) ;;; siren-escreen.el ends here diff --git a/modules/siren-eslintd-fix.el b/modules/siren-eslintd-fix.el new file mode 100644 index 0000000..9913a72 --- /dev/null +++ b/modules/siren-eslintd-fix.el @@ -0,0 +1,13 @@ +;;; siren-eslintd-fix.el --- jimeh's Emacs Siren: eslintd-fix configuration. + +;;; Commentary: + +;; Basic configuration for eslintd-fix. + +;;; Code: + +(use-package eslintd-fix + :defer t) + +(provide 'siren-eslintd-fix) +;;; siren-eslintd-fix.el ends here diff --git a/modules/siren-evil.el b/modules/siren-evil.el index 0376fb4..5a928de 100644 --- a/modules/siren-evil.el +++ b/modules/siren-evil.el @@ -6,23 +6,22 @@ ;;; Code: +;; Various evil config options borrowed from: +;; http://www.lukeswart.net/2015/04/lightning-intro-to-emacs-using-evil-mode-and-org-mode/ (use-package evil - :config - ;; Various evil config options borrowed from: - ;; http://www.lukeswart.net/2015/04/lightning-intro-to-emacs-using-evil-mode-and-org-mode/ - - ;; Treat wrapped line scrolling as single lines - (define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line) - (define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line) - - ;; esc quits pretty much anything (like pending prompts in the minibuffer) - (define-key evil-normal-state-map [escape] 'keyboard-quit) - (define-key evil-visual-state-map [escape] 'keyboard-quit) - (define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit) - (define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit) - (define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit) - (define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit) - (define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)) + :demand + :bind (:map evil-normal-state-map + ;; Treat wrapped line scrolling as single lines. + ("j" . evil-next-visual-line) + ("k" . evil-previous-visual-line) + ;; esc quits pretty much anything (like pending prompts in the minibuffer) + :map evil-normal-state-map ("" . keyboard-quit) + :map evil-visual-state-map ("" . keyboard-quit) + :map minibuffer-local-map ("" . minibuffer-keyboard-quit) + :map minibuffer-local-ns-map ("" . minibuffer-keyboard-quit) + :map minibuffer-local-completion-map ("" . minibuffer-keyboard-quit) + :map minibuffer-local-must-match-map ("" . minibuffer-keyboard-quit) + :map minibuffer-local-isearch-map ("" . minibuffer-keyboard-quit))) (provide 'siren-evil) ;;; siren-evil.el ends here diff --git a/modules/siren-folding.el b/modules/siren-folding.el index d91fbc1..6b75f28 100644 --- a/modules/siren-folding.el +++ b/modules/siren-folding.el @@ -6,8 +6,9 @@ ;;; Code: -;; Loads from vendor. -(require 'hideshowvis) +(use-package hideshowvis + :ensure nil ;; loaded from vendor +) (defun siren-toggle-hiding (column) "Toggle hiding/showing blocks via hs-mode. diff --git a/modules/siren-full-ack.el b/modules/siren-full-ack.el index 149b8cf..3891b63 100644 --- a/modules/siren-full-ack.el +++ b/modules/siren-full-ack.el @@ -11,35 +11,33 @@ ("C-c C-a" . ack) :config - (setq ack-arguments - '("--sort-files" - "--ignore-dir=vendor/ruby" - "--ignore-dir=vendor/bundle" - "--ignore-dir=coverage" - "--ignore-dir=savefile" - "--ignore-dir=Godeps" - "--ignore-dir=elpa" - "--ignore-dir=docs" - "--ignore-dir=doc" - "--type-add=js=.js,.js.erb" - "--type-add=ruby=.jbuilder,.rabl" - "--type-add=html=.haml,.hamlc,.jade" - "--type-add=css=.sass,.scss,.styl" - "--type-set=coffee=.coffee" - "--type-set=cucumber=.feature")) - (setq ack-project-root-file-patterns - '(".project\\'" - ".xcodeproj\\'" - ".sln\\'" - "\\`Project.ede\\'" - "\\`.git\\'" - "\\`.bzr\\'" - "\\`_darcs\\'" - "\\`.hg\\'" - "\\`Gemfile\\'" - "\\`Rakefile\\'" - "\\`Makefile\\'")) - (setq ack-prompt-for-directory 'unless-guessed)) + (setq ack-arguments '("--sort-files" + "--ignore-dir=vendor/ruby" + "--ignore-dir=vendor/bundle" + "--ignore-dir=coverage" + "--ignore-dir=savefile" + "--ignore-dir=Godeps" + "--ignore-dir=elpa" + "--ignore-dir=docs" + "--ignore-dir=doc" + "--type-add=js=.js,.js.erb" + "--type-add=ruby=.jbuilder,.rabl" + "--type-add=html=.haml,.hamlc,.jade" + "--type-add=css=.sass,.scss,.styl" + "--type-set=coffee=.coffee" + "--type-set=cucumber=.feature") + ack-project-root-file-patterns '(".project\\'" + ".xcodeproj\\'" + ".sln\\'" + "\\`Project.ede\\'" + "\\`.git\\'" + "\\`.bzr\\'" + "\\`_darcs\\'" + "\\`.hg\\'" + "\\`Gemfile\\'" + "\\`Rakefile\\'" + "\\`Makefile\\'") + ack-prompt-for-directory 'unless-guessed)) (provide 'siren-full-ack) ;;; siren-full-ack.el ends here diff --git a/modules/siren-gitconfig.el b/modules/siren-gitconfig.el index 80683fa..4f9d859 100644 --- a/modules/siren-gitconfig.el +++ b/modules/siren-gitconfig.el @@ -10,17 +10,14 @@ (use-package gitconfig-mode :mode "\\.gitconfig" "gitconfig\\'" "\\.git\\\/config" + :hook (gitconfig-mode . siren-gitconfig-mode-setup) - :config - (defun siren-gitconfig-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-gitconfig-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-current-column-mode) - (run-hooks 'siren-prog-mode-hook)) - - (setq siren-gitconfig-mode-hook 'siren-gitconfig-mode-defaults) - (add-hook 'gitconfig-mode-hook (lambda () - (run-hooks 'siren-gitconfig-mode-hook)))) + (run-hooks 'siren-prog-mode-hook))) (provide 'siren-gitconfig) ;;; siren-gitconfig.el ends here diff --git a/modules/siren-gitignore.el b/modules/siren-gitignore.el index 7a7d8ae..d1fb627 100644 --- a/modules/siren-gitignore.el +++ b/modules/siren-gitignore.el @@ -10,17 +10,14 @@ (use-package gitignore-mode :mode "\\.gitignore" "gitignore\\'" + :hook (gitignore-mode . siren-gitignore-mode-setup) - :config - (defun siren-gitignore-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-gitignore-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-current-column-mode) - (run-hooks 'siren-prog-mode-hook)) - - (setq siren-gitignore-mode-hook 'siren-gitignore-mode-defaults) - (add-hook 'gitignore-mode-hook (lambda () - (run-hooks 'siren-gitignore-mode-hook)))) + (run-hooks 'siren-prog-mode-hook))) (provide 'siren-gitignore) ;;; siren-gitignore.el ends here diff --git a/modules/siren-go.el b/modules/siren-go.el index cd50c83..d1d7fd8 100644 --- a/modules/siren-go.el +++ b/modules/siren-go.el @@ -7,6 +7,7 @@ ;;; Code: (require 'siren-programming) +(require 'siren-flycheck) (use-package go-mode :mode "\\.go\\'" @@ -20,21 +21,16 @@ ("C-c b" . go-run) ("C-c d" . godef-jump) ("C-c C-j" . avy-goto-word-or-subword-1) - ("C-h f" . godoc-at-point)) + ("C-h f" . godoc-at-point) + :map help-command + ("G" . godoc)) - :config - (message "loading go-mode") + :hook + (go-mode . siren-go-mode-setup) - (when (memq window-system '(mac ns)) - (exec-path-from-shell-copy-env "GOPATH")) - - ;; Ignore go test -c output files - (add-to-list 'completion-ignored-extensions ".test") - - (define-key 'help-command (kbd "G") 'godoc) - - (defun siren-go-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-go-mode-setup () + (siren-prog-mode-setup) ;; Prefer goimports to gofmt if installed (let ((goimports (executable-find "goimports"))) @@ -70,9 +66,14 @@ ;; CamelCase aware editing operations (subword-mode +1)) - (setq siren-go-mode-hook 'siren-go-mode-defaults) - (add-hook 'go-mode-hook (lambda () - (run-hooks 'siren-go-mode-hook)))) + :config + (message "loading go-mode") + + (when (memq window-system '(mac ns)) + (exec-path-from-shell-copy-env "GOPATH")) + + ;; Ignore go test -c output files + (add-to-list 'completion-ignored-extensions ".test")) (use-package company-go :defer t) (use-package go-eldoc :defer t) @@ -87,13 +88,13 @@ (setq go-projectile-switch-gopath 'never)) (use-package flycheck-gometalinter + :requires flycheck + :hook (flycheck-mode . flycheck-gometalinter-setup) + :init (setq flycheck-gometalinter-fast t flycheck-gometalinter-tests t - flycheck-gometalinter-vendor t) - :config - (eval-after-load 'flycheck - '(add-hook 'flycheck-mode-hook #'flycheck-gometalinter-setup))) + flycheck-gometalinter-vendor t)) (provide 'siren-go) ;;; siren-go.el ends here diff --git a/modules/siren-goto-chg.el b/modules/siren-goto-chg.el index 9518727..32f7abd 100644 --- a/modules/siren-goto-chg.el +++ b/modules/siren-goto-chg.el @@ -7,15 +7,14 @@ ;;; Code: (use-package goto-chg - :config - (global-set-key (kbd "C-.") 'goto-last-change) - (global-set-key (kbd "C-,") 'goto-last-change-reverse) - - ;; Flyspell uses C-. and C-, itself in a such a way that this is the only way - ;; to make goto-chg bind to those keys while flyspell-mode is enabled. - (let ((map flyspell-mode-map)) - (define-key map (kbd "C-.") 'goto-last-change) - (define-key map (kbd "C-,") 'goto-last-change-reverse))) + :bind (("C-." . goto-last-change) + ("C-," . goto-last-change-reverse) + ;; Flyspell uses C-. and C-, itself in a such a way that this is the + ;; only way to make goto-chg bind to those keys while flyspell-mode is + ;; enabled. + :map flyspell-mode-map + ("C-." . goto-last-change) + ("C-," . goto-last-change-reverse))) (provide 'siren-goto-chg) ;;; siren-goto-chg.el ends here diff --git a/modules/siren-haml.el b/modules/siren-haml.el index 68da340..c1bbe10 100644 --- a/modules/siren-haml.el +++ b/modules/siren-haml.el @@ -8,16 +8,14 @@ (use-package haml-mode :mode "\\.haml\\'" "\\.hamlc\\'" + :hook (haml-mode . siren-haml-mode-setup) - :config - (defun siren-haml-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-haml-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode)) - - (setq siren-haml-mode-hook 'siren-haml-mode-defaults) - (add-hook 'haml-mode-hook (lambda () (run-hooks 'siren-haml-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-haml) ;;; siren-haml.el ends here diff --git a/modules/siren-helm.el b/modules/siren-helm.el index 9b56422..6d257f2 100644 --- a/modules/siren-helm.el +++ b/modules/siren-helm.el @@ -8,18 +8,13 @@ (use-package helm :defer t - :config - (setq helm-autoresize-mode t - helm-autoresize-max-height 30 - helm-autoresize-min-height 30 - helm-buffer-max-length 64 - helm-case-fold-search 'smart - helm-echo-input-in-header-line t - helm-file-name-case-fold-search 'smart - helm-split-window-default-side 'below) - - (setq siren-helm--did-hide-neotree nil) + :hook ((helm-minibuffer-set-up . siren-helm--hide-minibuffer-maybe) + (helm-before-initialize . siren-helm--toggle-header-line) + (helm-minibuffer-set-up . siren-helm--popwin-help-mode-off) + (helm-cleanup . siren-helm--popwin-help-mode-on) + (helm-cleanup . siren-helm--show-neotree-maybe)) + :init ;; From: https://www.reddit.com/r/emacs/comments/3asbyn/new_and_very_useful_helm_feature_enter_search/ (defun siren-helm--hide-minibuffer-maybe () (when (with-helm-buffer helm-echo-input-in-header-line) @@ -29,16 +24,12 @@ `(:background ,bg-color :foreground ,bg-color))) (setq-local cursor-type nil)))) - (add-hook 'helm-minibuffer-set-up-hook #'siren-helm--hide-minibuffer-maybe) - ;; From: https://github.com/emacs-helm/helm/issues/918#issuecomment-81555133 (defun siren-helm--toggle-header-line () (if (= (length helm-sources) 1) (set-face-attribute 'helm-source-header nil :height 0.1) (set-face-attribute 'helm-source-header nil :height 1.0))) - (add-hook 'helm-before-initialize-hook #'siren-helm--toggle-header-line) - ;; From: https://github.com/emacs-helm/helm/wiki/Popwin (defun siren-helm--popwin-help-mode-off () "Turn `popwin-mode' off for *Help* buffers." @@ -46,8 +37,6 @@ (customize-set-variable 'popwin:special-display-config (delq 'help-mode popwin:special-display-config)))) - (add-hook 'helm-minibuffer-set-up-hook #'siren-helm--popwin-help-mode-off) - ;; From: https://github.com/emacs-helm/helm/wiki/Popwin (defun siren-helm--popwin-help-mode-on () "Turn `popwin-mode' on for *Help* buffers." @@ -55,8 +44,6 @@ (customize-set-variable 'popwin:special-display-config (add-to-list 'popwin:special-display-config 'help-mode nil #'eq)))) - (add-hook 'helm-cleanup-hook #'siren-helm--popwin-help-mode-on) - (defun siren-helm--hide-neotree (&rest plist) (when (and (fboundp 'neotree-hide) (fboundp 'neo-global--window-exists-p) @@ -64,15 +51,24 @@ (setq siren-helm--did-hide-neotree t) (neotree-hide))) - (advice-add 'helm :before 'siren-helm--hide-neotree) - (defun siren-helm--show-neotree-maybe () (when (and (fboundp 'neotree-show) siren-helm--did-hide-neotree) (setq siren-helm--did-hide-neotree nil) (run-with-timer 0.01 nil #'neotree-show))) - (add-hook 'helm-cleanup-hook #'siren-helm--show-neotree-maybe)) + :config + (setq helm-autoresize-max-height 30 + helm-autoresize-min-height 30 + helm-autoresize-mode t + helm-buffer-max-length 64 + helm-case-fold-search 'smart + helm-echo-input-in-header-line t + helm-file-name-case-fold-search 'smart + helm-split-window-default-side 'below + siren-helm--did-hide-neotree nil) + + (advice-add 'helm :before 'siren-helm--hide-neotree)) (use-package helm-descbinds :defer t) diff --git a/modules/siren-highlight-symbol.el b/modules/siren-highlight-symbol.el index beda145..5e78490 100644 --- a/modules/siren-highlight-symbol.el +++ b/modules/siren-highlight-symbol.el @@ -8,8 +8,9 @@ (use-package highlight-symbol :bind - (("C-c C-p" . highlight-symbol-prev) - ("C-c C-n" . highlight-symbol-next)) + ("C-c C-p" . highlight-symbol-prev) + ("C-c C-n" . highlight-symbol-next) + :config (setq highlight-symbol-highlight-single-occurrence 'nil highlight-symbol-idle-delay 0.5)) diff --git a/modules/siren-js.el b/modules/siren-js.el index 5fa7b71..28b8434 100644 --- a/modules/siren-js.el +++ b/modules/siren-js.el @@ -6,16 +6,16 @@ ;;; Code: -(use-package eslintd-fix - :defer t) - +(require 'siren-eslintd-fix) +(require 'siren-flycheck) +(require 'siren-folding) (require 'siren-programming) (add-to-list 'auto-mode-alist '("\\.js\\'" . js-mode)) (add-to-list 'auto-mode-alist '("\\.pac\\'" . js-mode)) (add-to-list 'interpreter-mode-alist '("node" . js-mode)) -(defun siren-js-mode-defaults () +(defun siren-js-mode-setup () "Default tweaks for `js-mode'." (let ((width 2)) (setq js-indent-level width @@ -25,7 +25,7 @@ (setq flycheck-checker 'javascript-eslint flycheck-javascript-eslint-executable "eslint_d") - (siren-prog-mode-defaults) + (siren-prog-mode-setup) (eslintd-fix-mode) (company-mode +1) (subword-mode +1) @@ -37,10 +37,7 @@ (define-key map (kbd "C-j") 'newline-and-indent) (define-key map (kbd "C-c C-h") 'siren-toggle-hiding))) -(setq siren-js-mode-hook 'siren-js-mode-defaults) - -(add-hook 'js-mode-hook (lambda () - (run-hooks 'siren-js-mode-hook))) +(add-hook 'js-mode-hook #'siren-js-mode-setup) (provide 'siren-js) ;;; siren-js.el ends here diff --git a/modules/siren-json.el b/modules/siren-json.el index d91af27..cf17fd6 100644 --- a/modules/siren-json.el +++ b/modules/siren-json.el @@ -6,16 +6,26 @@ ;;; Code: +(require 'siren-eslintd-fix) +(require 'siren-folding) (require 'siren-programming) +(use-package omnifmt + :ensure nil ;; loaded from vendor + ) + (use-package json-mode :mode "\\.json\\'" - :config - (require 'omnifmt) + :requires (flycheck highlight-indentation omnifmt hideshowvis) - (defun siren-json-mode-defaults () + :bind (:map json-mode-map + ("C-j" . newline-and-indent) + ("C-c C-h" . siren-toggle-hiding)) + + :init + (defun siren-json-mode-setup () "Default tweaks for `json-mode'." - (siren-prog-mode-defaults) + (siren-prog-mode-setup) (let ((width 2)) (setq js-indent-level width) @@ -26,19 +36,15 @@ (setq flycheck-checker 'json-jsonlint) (eslintd-fix-mode -1) - (omnifmt-mode) + (omnifmt-mode +1) (company-mode +1) (subword-mode +1) (hs-minor-mode 1) (highlight-indentation-current-column-mode) - (hideshowvis-enable) - (let ((map json-mode-map)) - (define-key map (kbd "C-j") 'newline-and-indent) - (define-key map (kbd "C-c C-h") 'siren-toggle-hiding))) + (hideshowvis-enable)) - (setq siren-json-mode-hook 'siren-json-mode-defaults) - (add-hook 'json-mode-hook (lambda () - (run-hooks 'siren-json-mode-hook)))) + :hook + (json-mode . siren-json-mode-setup)) (provide 'siren-json) ;;; siren-js.el ends here diff --git a/modules/siren-linum.el b/modules/siren-linum.el index 4436dc4..60ec64c 100644 --- a/modules/siren-linum.el +++ b/modules/siren-linum.el @@ -6,14 +6,18 @@ ;;; Code: -;; Customize line numbers - In gui mode the fringe is the spacer between line -;; numbers and code, while in console mode we add an extra space for it. -(if window-system (setq linum+-dynamic-format " %%%dd") - (setq linum+-dynamic-format " %%%dd ")) +(use-package linum+ + :ensure nil ;; loaded from vendor + :demand -(eval-after-load "linum+" '(progn (setq linum-format 'dynamic))) + :init + ;; Customize line numbers - In GUI mode the fringe is the spacer between line + ;; numbers and code, while in console mode we add an extra space for it. + (if window-system (setq linum+-dynamic-format " %%%dd") + (setq linum+-dynamic-format " %%%dd ")) -(require 'linum+) + :config + (setq linum-format 'dynamic)) (provide 'siren-linum) ;;; siren-linum.el ends here diff --git a/modules/siren-lisp.el b/modules/siren-lisp.el index 823954f..9d5f4f7 100644 --- a/modules/siren-lisp.el +++ b/modules/siren-lisp.el @@ -6,6 +6,8 @@ ;;; Code: +(require 'siren-programming) + ;; Lisp configuration (define-key read-expression-map (kbd "TAB") 'completion-at-point) diff --git a/modules/siren-lua.el b/modules/siren-lua.el index e1b2bb0..f7ffb2b 100644 --- a/modules/siren-lua.el +++ b/modules/siren-lua.el @@ -9,18 +9,18 @@ (require 'siren-programming) (use-package lua-mode - :config - (defun siren-lua-mode-defaults () - (siren-prog-mode-defaults) + :hook + (lua-mode . siren-lua-mode-setup) + + :init + (defun siren-lua-mode-setup () + (siren-prog-mode-setup) + + (setq lua-indent-level 2 + whitespace-action '(auto-cleanup)) (highlight-indentation-current-column-mode) - (subword-mode +1) - (setq lua-indent-level 2 - whitespace-action (quote (auto-cleanup)))) - - (setq siren-lua-mode-hook 'siren-lua-mode-defaults) - (add-hook 'lua-mode-hook (lambda () - (run-hooks 'siren-lua-mode-hook)))) + (subword-mode +1))) (provide 'siren-lua) ;;; siren-lua.el ends here diff --git a/modules/siren-magit.el b/modules/siren-magit.el index 74ee592..75e4a44 100644 --- a/modules/siren-magit.el +++ b/modules/siren-magit.el @@ -14,9 +14,23 @@ :bind ("C-x g". magit-status) + :hook + (siren-magit-mode . siren-magit-mode-setup) + (git-commit-mode . siren-git-commit-mode-setup) + :init (defalias 'bl 'magit-blame) + (defun siren-magit-mode-setup ()) + + (defun siren-git-commit-mode-setup () + (subword-mode) + (setq tab-width 2) + (fci-mode t) + ;; (flyspell-mode) ;; in GUI causes git-commit-mode to lock up emacs + (linum-mode t) + (auto-fill-mode)) + :config (require 'magit) @@ -27,28 +41,12 @@ magit-revert-buffers 'silent magit-default-tracking-name-function 'magit-default-tracking-name-branch-only magit-repository-directories '("~/Projects" "~/src" "~/.emacs.d" "~/.dotfiles") - magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1) - - (defun siren-magit-mode-defaults ()) - (setq siren-magit-mode-hook 'siren-magit-mode-defaults) - (add-hook 'magit-mode-hook (lambda () (run-hooks 'siren-magit-mode-hook))) - - (defun siren-git-commit-mode-defaults () - (subword-mode) - (setq tab-width 2) - (fci-mode t) - ;; (flyspell-mode) ;; in GUI causes git-commit-mode to lock up emacs - (linum-mode t) - (auto-fill-mode)) - - (setq siren-git-commit-mode-hook 'siren-git-commit-mode-defaults) - (add-hook 'git-commit-mode-hook (lambda () - (run-hooks 'siren-git-commit-mode-hook)))) + magit-display-buffer-function 'magit-display-buffer-same-window-except-diff-v1)) (use-package magit-gh-pulls + :hook (magit-mode . turn-on-magit-gh-pulls) :config - (setq gh-use-local-git-config t) - (add-hook 'magit-mode-hook 'turn-on-magit-gh-pulls)) + (setq gh-use-local-git-config t)) (provide 'siren-magit) ;;; siren-magit.el ends here diff --git a/modules/siren-makefile.el b/modules/siren-makefile.el index c55cc76..baeaed3 100644 --- a/modules/siren-makefile.el +++ b/modules/siren-makefile.el @@ -8,19 +8,16 @@ (require 'siren-programming) -(add-to-list 'siren-yank-indent-modes 'makefile-mode) +(add-to-list 'siren-indent-sensitive-modes 'makefile-mode) -(defun siren-makefile-mode-defaults () - (siren-prog-mode-defaults) +(defun siren-makefile-mode-setup () + (siren-prog-mode-setup) (subword-mode) (setq tab-width 4) (highlight-indentation-set-offset 4) (highlight-indentation-current-column-mode)) -(setq siren-makefile-mode-hook 'siren-makefile-mode-defaults) - -(add-hook 'makefile-mode-hook (lambda () - (run-hooks 'siren-makefile-mode-hook))) +(add-hook 'makefile-mode-hook #'siren-makefile-mode-setup) (provide 'siren-makefile) ;;; siren-makefile.el ends here diff --git a/modules/siren-markdown.el b/modules/siren-markdown.el index ceb3bff..30e678a 100644 --- a/modules/siren-markdown.el +++ b/modules/siren-markdown.el @@ -17,10 +17,14 @@ "\\.mdown" "\\.markdown" - :config - (setq markdown-command "redcarpet") + :bind (:map markdown-mode-map + ("C-c p" . markdown-preview)) - (defun siren-markdown-mode-defaults () + :hook + (markdown-mode . siren-markdown-mode-setup) + + :init + (defun siren-markdown-mode-setup () (setq whitespace-action nil fill-column 80 markdown-asymmetric-header t) @@ -30,15 +34,11 @@ (flyspell-mode) (auto-fill-mode) (smartparens-mode +1) - (subword-mode) - (define-key markdown-mode-map (kbd "C-c p") 'markdown-preview)) + (subword-mode)) - (setq siren-markdown-mode-hook 'siren-markdown-mode-defaults) - (add-hook 'markdown-mode-hook (lambda () - (run-hooks 'siren-markdown-mode-hook)))) - -(custom-set-faces - '(markdown-code-face ((t nil)))) + :config + (setq markdown-command "redcarpet") + (custom-set-faces '(markdown-code-face ((t nil))))) (provide 'siren-markdown) ;;; siren-markdown.el ends here diff --git a/modules/siren-move-beginning-of-line.el b/modules/siren-move-beginning-of-line.el index a1dbace..6f58d6b 100644 --- a/modules/siren-move-beginning-of-line.el +++ b/modules/siren-move-beginning-of-line.el @@ -7,7 +7,7 @@ ;;; Code: (defun siren-move-beginning-of-line (arg) - "Move point back to indentation of beginning of line. + "Move point back to indentation or beginning of line. Move point to the first non-whitespace character on this line. If point is already there, move to the beginning of the line. diff --git a/modules/siren-neotree.el b/modules/siren-neotree.el index 9b165f6..8f5854f 100644 --- a/modules/siren-neotree.el +++ b/modules/siren-neotree.el @@ -11,8 +11,8 @@ (use-package neotree :bind - ("C-x C-p" . neotree-toggle) - ("C-x p" . neotree-project-dir) + ("C-x p" . neotree-toggle) + ("C-x C-p" . neotree-project-dir) :init (defun neotree-project-dir () diff --git a/modules/siren-org-mode.el b/modules/siren-org-mode.el index 107a2b5..dbbb764 100644 --- a/modules/siren-org-mode.el +++ b/modules/siren-org-mode.el @@ -10,7 +10,7 @@ (require 'siren-flyspell) (require 'siren-smartparens) -(defun siren-org-mode-defaults () +(defun siren-org-mode-setup () (setq org-export-backends '(ascii html icalendar latex md confluence) fill-column 80 whitespace-action '(auto-cleanup)) @@ -31,9 +31,7 @@ (define-key map (kbd "C-M-n") 'outline-next-visible-heading) (define-key map (kbd "C-M-p") 'outline-previous-visible-heading))) -(setq siren-org-mode-hook 'siren-org-mode-defaults) -(add-hook 'org-mode-hook (lambda () - (run-hooks 'siren-org-mode-hook))) +(add-hook 'org-mode-hook #'siren-org-mode-setup) (provide 'siren-org-mode) ;;; siren-org-mode.el ends here diff --git a/modules/siren-package-lint.el b/modules/siren-package-lint.el index 8fb170c..40e9b69 100644 --- a/modules/siren-package-lint.el +++ b/modules/siren-package-lint.el @@ -6,6 +6,8 @@ ;;; Code: +(require 'siren-flycheck) + (use-package package-lint :defer t) diff --git a/modules/siren-perspective.el b/modules/siren-perspective.el index 09c7857..50b571a 100644 --- a/modules/siren-perspective.el +++ b/modules/siren-perspective.el @@ -7,44 +7,37 @@ ;;; Code: (use-package perspective + :demand + :bind (:map persp-mode-map + ("C-z z" . persp-switch) + ("C-z C-z" . persp-switch) + ("C-z c" . persp-switch) + ("C-z C-c" . persp-switch) + ("C-z s" . persp-switch) + ("C-z C-s" . persp-switch) + ("C-z b" . persp-switch) + ("C-z C-b" . persp-switch) + ("C-z l" . persp-switch-last) + ("C-z C-l" . persp-switch-last) + ("C-z c" . persp-remove-buffer) + ("C-z C-c" . persp-remove-buffer) + ("C-z k" . persp-kill) + ("C-z C-k" . persp-kill) + ("C-z r" . persp-rename) + ("C-z C-r" . persp-rename) + ("C-z a" . persp-add-buffer) + ("C-z C-a" . persp-add-buffer) + ("C-z i" . persp-import) + ("C-z C-i" . persp-import) + ("C-z n" . persp-next) + ("C-z C-n" . persp-next) + ("C-z p" . persp-prev) + ("C-z C-p" . persp-prev)) :config (setq persp-mode-prefix-key "" persp-initial-frame-name "0:main") (define-key persp-mode-map (kbd "C-z") perspective-map) - - (define-key persp-mode-map (kbd "C-z z") 'persp-switch) - (define-key persp-mode-map (kbd "C-z C-z") 'persp-switch) - (define-key persp-mode-map (kbd "C-z c") 'persp-switch) - (define-key persp-mode-map (kbd "C-z C-c") 'persp-switch) - (define-key persp-mode-map (kbd "C-z s") 'persp-switch) - (define-key persp-mode-map (kbd "C-z C-s") 'persp-switch) - (define-key persp-mode-map (kbd "C-z b") 'persp-switch) - (define-key persp-mode-map (kbd "C-z C-b") 'persp-switch) - - (define-key persp-mode-map (kbd "C-z l") 'persp-switch-last) - (define-key persp-mode-map (kbd "C-z C-l") 'persp-switch-last) - - (define-key persp-mode-map (kbd "C-z c") 'persp-remove-buffer) - (define-key persp-mode-map (kbd "C-z C-c") 'persp-remove-buffer) - - (define-key persp-mode-map (kbd "C-z k") 'persp-kill) - (define-key persp-mode-map (kbd "C-z C-k") 'persp-kill) - - (define-key persp-mode-map (kbd "C-z r") 'persp-rename) - (define-key persp-mode-map (kbd "C-z C-r") 'persp-rename) - - (define-key persp-mode-map (kbd "C-z a") 'persp-add-buffer) - (define-key persp-mode-map (kbd "C-z C-a") 'persp-add-buffer) - - (define-key persp-mode-map (kbd "C-z i") 'persp-import) - (define-key persp-mode-map (kbd "C-z C-i") 'persp-import) - - (define-key persp-mode-map (kbd "C-z n") 'persp-next) - (define-key persp-mode-map (kbd "C-z C-n") 'persp-next) - (define-key persp-mode-map (kbd "C-z p") 'persp-prev) - (define-key persp-mode-map (kbd "C-z C-p") 'persp-prev) - (persp-mode) ;; (custom-set-faces diff --git a/modules/siren-php.el b/modules/siren-php.el index 11dc69d..e3cce60 100644 --- a/modules/siren-php.el +++ b/modules/siren-php.el @@ -10,19 +10,20 @@ (require 'siren-rainbow) (use-package php-mode - :config - (defun siren-php-mode-defaults () - (siren-prog-mode-defaults) + :interpreter "php" + :mode "\\.php\\'" "\\.inc\\'" "\\.module\\'" + :hook + (php-mode . siren-php-mode-setup) + + :init + (defun siren-php-mode-setup () + (siren-prog-mode-setup) (rainbow-mode +1) (company-mode +1) (subword-mode +1) (highlight-indentation-current-column-mode) (hs-minor-mode 1) - (hideshowvis-enable)) - - (setq siren-php-mode-hook 'siren-php-mode-defaults) - (add-hook 'php-mode-hook (lambda () - (run-hooks 'siren-php-mode-hook)))) + (hideshowvis-enable))) (provide 'siren-php) ;;; siren-php.el ends here diff --git a/modules/siren-plantuml.el b/modules/siren-plantuml.el index 5be9100..c5f7a93 100644 --- a/modules/siren-plantuml.el +++ b/modules/siren-plantuml.el @@ -10,18 +10,16 @@ (use-package plantuml-mode :mode "\\.uml\\'" + :hook + (plantuml-mode . siren-plantuml-mode-setup) - :config - (defun siren-plantuml-mode-defaults () - (siren-prog-mode-defaults) - (setq tab-width 2) - (setq plantuml-jar-path "/usr/local/Cellar/plantuml/8048/plantuml.8048.jar") + :init + (defun siren-plantuml-mode-setup () + (siren-prog-mode-setup) + (setq tab-width 2 + plantuml-jar-path "/usr/local/opt/plantuml/libexec/plantuml.jar") (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode)) - - (setq siren-plantuml-mode-hook 'siren-plantuml-mode-defaults) - (add-hook 'plantuml-mode-hook (lambda () - (run-hooks 'siren-plantuml-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-plantuml) ;;; siren-plantuml.el ends here diff --git a/modules/siren-programming.el b/modules/siren-programming.el index 5bcfa1b..8b5dabf 100644 --- a/modules/siren-programming.el +++ b/modules/siren-programming.el @@ -13,26 +13,20 @@ (require 'siren-highlight-indentation) (require 'siren-highlight-symbol) -(defun siren-prog-mode-defaults () +(defun siren-prog-mode-setup () "Default coding hook, useful with any programming language." (setq fill-column 80) (linum-mode t) (flyspell-prog-mode) + (flycheck-mode +1) (fci-mode) (smartparens-mode +1) (highlight-symbol-mode) - (setq whitespace-action (quote (auto-cleanup))) + (setq whitespace-action '(auto-cleanup)) (visual-line-mode +1) (whitespace-mode +1)) -(setq siren-prog-mode-hook 'siren-prog-mode-defaults) -(add-hook 'prog-mode-hook (lambda () - (run-hooks 'siren-prog-mode-hook))) - -;; enable on-the-fly syntax checking -(if (fboundp 'global-flycheck-mode) - (global-flycheck-mode +1) - (add-hook 'prog-mode-hook 'flycheck-mode)) +(add-hook 'prog-mode-hook #'siren-prog-mode-setup) (provide 'siren-programming) ;;; siren-programming.el ends here diff --git a/modules/siren-rainbow.el b/modules/siren-rainbow.el index 210fd2c..f5bdefd 100644 --- a/modules/siren-rainbow.el +++ b/modules/siren-rainbow.el @@ -7,7 +7,8 @@ ;;; Code: (use-package rainbow-mode - :defer t) + :defer t + :diminish raindbox-mode) (provide 'siren-rainbow) ;;; siren-rainbow.el ends here diff --git a/modules/siren-rubocop.el b/modules/siren-rubocop.el index e6584ef..1985471 100644 --- a/modules/siren-rubocop.el +++ b/modules/siren-rubocop.el @@ -8,6 +8,15 @@ (use-package rubocop :defer t + :bind (:map rubocop-mode-map + ("C-c C-f" . siren-rubocop-autocorrect)) + + :hook + (rubocop-mode . siren-rubocop-mode-setup) + (after-save . siren-rubocop-autocorrect-hook) + + :init + (defun siren-rubocop-mode-setup ()) :config (defgroup siren-rubocop nil @@ -56,17 +65,7 @@ auto-correction is triggered." (defun siren-rubocop-autocorrect-hook () "Siren's Rubocop auto-correct hook." (if siren-rubocop-autocorrect-on-save - (siren-rubocop-autocorrect-p nil))) - - (defun siren-rubocop-mode-defaults () - (add-hook 'after-save-hook 'siren-rubocop-autocorrect-hook nil t) - - (let ((map rubocop-mode-map)) - (define-key map (kbd "C-c C-f") 'siren-rubocop-autocorrect))) - - (setq siren-rubocop-mode-hook 'siren-rubocop-mode-defaults) - (add-hook 'rubocop-mode-hook (lambda () - (run-hooks 'siren-rubocop-mode-hook)))) + (siren-rubocop-autocorrect-p nil)))) (provide 'siren-rubocop) ;;; siren-rubocop.el ends here diff --git a/modules/siren-ruby.el b/modules/siren-ruby.el index 55774ef..45aa84d 100644 --- a/modules/siren-ruby.el +++ b/modules/siren-ruby.el @@ -6,101 +6,108 @@ ;;; Code: +(require 'siren-company) +(require 'siren-folding) +(require 'siren-programming) +(require 'siren-smartparens) +(require 'siren-toggle-quotes) + +(require 'smartparens-ruby) + +(use-package rubocopfmt + :ensure nil ;; loaded from vendor + ) + (use-package inf-ruby :defer t) (use-package rspec-mode :defer t - :init - (eval-after-load 'rspec-mode '(rspec-install-snippets))) + :config + (rspec-install-snippets)) (use-package ruby-refactor :defer t) (use-package ruby-tools - :defer t) + :defer t + :bind (:map ruby-tools-mode-map + ("C-'" . toggle-quotes))) (use-package yari :defer t :init (define-key 'help-command (kbd "R") 'yari)) -(require 'siren-programming) -(require 'siren-company) -(require 'siren-smartparens) -(require 'siren-toggle-quotes) +(use-package ruby-mode + :ensure nil ;; loaded from emacs built-ins + :interpreter "ruby" + :mode + "Appraisals\\'" + "Berksfile\\'" + "Capfile\\'" + "Gemfile\\'" + "Guardfile\\'" + "Podfile\\'" + "Puppetfile\\'" + "Rakefile\\'" + "Thorfile\\'" + "Vagrantfile\\'" + "\\.cap\\'" + "\\.gemspec\\'" + "\\.jbuilder\\'" + "\\.podspec\\'" + "\\.rabl\\'" + "\\.rake\\'" + "\\.ru\\'" + "\\.thor\\'" + "\\.rb\\'" -(require 'smartparens-ruby) -(require 'rubocopfmt) -(require 'ruby-mode) + :bind (:map ruby-mode-map + ("C-j" . newline-and-indent) + ("RET" . newline-and-indent) + ("C-c C-h" . siren-toggle-hiding) + ("C-c C-l" . goto-line) + ("C-M-f" . sp-ruby-forward-sexp) + ("C-M-b" . sp-ruby-backward-sexp)) -;; Rake files are ruby, too, as are gemspecs, rackup files, and gemfiles. -(add-to-list 'auto-mode-alist '("\\.rake\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Rakefile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.gemspec\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.ru\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Gemfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Guardfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Capfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.cap\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.thor\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.rabl\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Thorfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Vagrantfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.jbuilder\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Podfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("\\.podspec\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Puppetfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Berksfile\\'" . ruby-mode)) -(add-to-list 'auto-mode-alist '("Appraisals\\'" . ruby-mode)) + :hook + (ruby-mode . siren-ruby-mode-setup) -;; We never want to edit Rubinius bytecode -(add-to-list 'completion-ignored-extensions ".rbc") + :init + (defun siren-ruby-mode-setup () + (siren-prog-mode-setup) -;; Set up hs-mode (HideShow) for Ruby -(add-to-list 'hs-special-modes-alist - `(ruby-mode - ,(rx (or "def" "class" "module" "do" "if" "case")) ;; Block start - ,(rx (or "end")) ;; Block end - ,(rx (or "#" "=begin")) ;; Comment start - ruby-forward-sexp nil)) + (setq c-tab-always-indent nil + rspec-primary-source-dirs '("app") + ruby-align-chained-calls t + ruby-insert-encoding-magic-comment t + ruby-refactor-add-parens t + ruby-use-smie t + tab-width 2) -;; Make company-mode play nice -(push 'ruby-mode company-dabbrev-code-modes) + (rubocopfmt-mode) + (ruby-tools-mode +1) + (hs-minor-mode 1) + (company-mode +1) + (subword-mode +1) + (highlight-indentation-current-column-mode) + (hideshowvis-enable)) -(defun siren-ruby-mode-defaults () - (siren-prog-mode-defaults) + :config + ;; We never want to edit Rubinius bytecode + (add-to-list 'completion-ignored-extensions ".rbc") - (setq c-tab-always-indent nil - rspec-primary-source-dirs '("app") - ruby-align-chained-calls t - ruby-insert-encoding-magic-comment t - ruby-refactor-add-parens t - ruby-use-smie t - tab-width 2) + ;; Set up hs-mode (HideShow) for Ruby + (add-to-list 'hs-special-modes-alist + `(ruby-mode + ,(rx (or "def" "class" "module" "do" "if" "case")) ;; Block start + ,(rx (or "end")) ;; Block end + ,(rx (or "#" "=begin")) ;; Comment start + ruby-forward-sexp nil)) - (rubocopfmt-mode) - (ruby-tools-mode +1) - (hs-minor-mode 1) - (company-mode +1) - (subword-mode +1) - (highlight-indentation-current-column-mode) - (hideshowvis-enable) - - (let ((map ruby-mode-map)) - (define-key map (kbd "C-j") 'newline-and-indent) - (define-key map (kbd "RET") 'newline-and-indent) - (define-key map (kbd "C-c C-h") 'siren-toggle-hiding) - (define-key map (kbd "C-c C-l") 'goto-line) - (define-key map (kbd "C-M-f") 'sp-ruby-forward-sexp) - (define-key map (kbd "C-M-b") 'sp-ruby-backward-sexp)) - - (let ((map ruby-tools-mode-map)) - (define-key map (kbd "C-'") 'toggle-quotes))) - -(setq siren-ruby-mode-hook 'siren-ruby-mode-defaults) -(add-hook 'ruby-mode-hook (lambda () - (run-hooks 'siren-ruby-mode-hook))) + ;; Make company-mode play nice + (push 'ruby-mode company-dabbrev-code-modes)) (provide 'siren-ruby) ;;; siren-ruby.el ends here diff --git a/modules/siren-sass.el b/modules/siren-sass.el index 5351444..4b6ed14 100644 --- a/modules/siren-sass.el +++ b/modules/siren-sass.el @@ -10,16 +10,15 @@ (use-package sass-mode :mode "\\.sass\\'" + :hook (sass-mode . siren-sass-mode-setup) + + :init + (defun siren-sass-mode-setup () + (siren-css-mode-css)) :config ;; turn off annoying auto-compile on save - (setq sass-compile-at-save nil) - - (defun siren-sass-mode-defaults () - (siren-css-mode-defaults)) - - (setq siren-sass-mode-hook 'siren-sass-mode-defaults) - (add-hook 'sass-mode-hook (lambda () (run-hooks 'siren-sass-mode-hook)))) + (setq sass-compile-at-save nil)) (provide 'siren-sass) ;;; siren-sass.el ends here diff --git a/modules/siren-scss.el b/modules/siren-scss.el index 904f4ba..9f347c2 100644 --- a/modules/siren-scss.el +++ b/modules/siren-scss.el @@ -10,16 +10,14 @@ (use-package scss-mode :mode "\\.scss\\'" + :hook (scss-mode-hook . siren-scss-mode-setup) :config ;; turn off annoying auto-compile on save (setq scss-compile-at-save nil) - (defun siren-scss-mode-defaults () - (siren-css-mode-defaults)) - - (setq siren-scss-mode-hook 'siren-scss-mode-defaults) - (add-hook 'scss-mode-hook (lambda () (run-hooks 'siren-scss-mode-hook)))) + (defun siren-scss-mode-setup () + (siren-css-mode-setup))) (provide 'siren-scss) ;;; siren-scss.el ends here diff --git a/modules/siren-sh.el b/modules/siren-sh.el index 66a9f09..2ccc539 100644 --- a/modules/siren-sh.el +++ b/modules/siren-sh.el @@ -8,8 +8,8 @@ (require 'siren-programming) -(defun siren-sh-mode-defaults () - (siren-prog-mode-defaults) +(defun siren-sh-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2 sh-basic-offset 2 @@ -21,9 +21,7 @@ (highlight-indentation-current-column-mode) (define-key sh-mode-map (kbd "RET") 'newline-and-indent)) -(setq siren-sh-mode-hook 'siren-sh-mode-defaults) -(add-hook 'sh-mode-hook (lambda () - (run-hooks 'siren-sh-mode-hook))) +(add-hook 'sh-mode-hook #'siren-sh-mode-setup) (provide 'siren-sh) ;;; siren-sh.el ends here diff --git a/modules/siren-slim.el b/modules/siren-slim.el index 3d19dc5..02e0a88 100644 --- a/modules/siren-slim.el +++ b/modules/siren-slim.el @@ -8,10 +8,11 @@ (use-package slim-mode :mode "\\.slim\\'" + :hook (slim-mode-hook . siren-slim-mode-hook) - :config - (defun siren-slim-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-slim-mode-setup () + (siren-prog-mode-setup) (highlight-indentation-current-column-mode)) (setq siren-slim-mode-hook 'siren-slim-mode-defaults) diff --git a/modules/siren-smartparens.el b/modules/siren-smartparens.el index 7ef7eab..60aef44 100644 --- a/modules/siren-smartparens.el +++ b/modules/siren-smartparens.el @@ -9,15 +9,35 @@ (use-package smartparens :defer t :diminish smartparens-mode + :bind (:map smartparens-mode-map + ("C-M-t" . sp-transpose-sexp) + ("C-M-r" . siren-sp-transpose-sexp-reverse) + ("C-M-f" . sp-forward-sexp) + ("C-M-b" . sp-backward-sexp) + ("C-M-a" . sp-beginning-of-sexp) + ("C-M-e" . sp-end-of-sexp) + ("C-M-]" . sp-forward-slurp-sexp) + ("C-M-[" . sp-forward-barf-sexp) + ("C-M-." . sp-forward-slurp-sexp) + ("C-M-," . sp-forward-barf-sexp) + ("s->" . sp-forward-slurp-sexp) + ("s-<" . sp-forward-barf-sexp) + ("M-|" . sp-split-sexp) + ("M-t" . sp-backward-up-sexp) + ("C-" . sp-backward-kill-sexp) + ("C-" . sp-kill-sexp)) :init - (defalias 'rw 'sp-rewrap-sexp) - (show-smartparens-global-mode +1) + (defun siren-sp-transpose-sexp-reverse () + (sp-transpose-sexp -1)) :config ;; smart pairing for all (require 'smartparens-config) + (defalias 'rw 'sp-rewrap-sexp) + (show-smartparens-global-mode +1) + (setq sp-base-key-bindings 'paredit sp-autoskip-closing-pair 'always sp-hybrid-kill-entire-symbol nil) @@ -27,27 +47,7 @@ (sp-pair "{" nil :post-handlers '(((lambda (&rest _ignored) - (siren-smart-open-line-above)) "RET"))) - - ;; Keybindings - (let ((map smartparens-mode-map)) - (define-key map (kbd "C-M-t") 'sp-transpose-sexp) - (define-key map (kbd "C-M-r") (lambda () - (interactive) (sp-transpose-sexp -1))) - (define-key map (kbd "C-M-f") 'sp-forward-sexp) - (define-key map (kbd "C-M-b") 'sp-backward-sexp) - (define-key map (kbd "C-M-a") 'sp-beginning-of-sexp) - (define-key map (kbd "C-M-e") 'sp-end-of-sexp) - (define-key map (kbd "C-M-]") 'sp-forward-slurp-sexp) - (define-key map (kbd "C-M-[") 'sp-forward-barf-sexp) - (define-key map (kbd "C-M-.") 'sp-forward-slurp-sexp) - (define-key map (kbd "C-M-,") 'sp-forward-barf-sexp) - (define-key map (kbd "s->") 'sp-forward-slurp-sexp) - (define-key map (kbd "s-<") 'sp-forward-barf-sexp) - (define-key map (kbd "M-|") 'sp-split-sexp) - ;; (define-key map (kbd "M-t") 'sp-backward-up-sexp) - (define-key map (kbd "C-") 'sp-backward-kill-sexp) - (define-key map (kbd "C-") 'sp-kill-sexp))) + (siren-smart-open-line-above)) "RET")))) (provide 'siren-smartparens) ;;; siren-smartparens.el ends here diff --git a/modules/siren-thrift.el b/modules/siren-thrift.el index 3e6944a..ff827a4 100644 --- a/modules/siren-thrift.el +++ b/modules/siren-thrift.el @@ -10,18 +10,15 @@ (use-package thrift :mode "\\.thrift\\'" + :hook (thrift-mode-hook . siren-thrift-mode-setup) - :config - (defun siren-thrift-mode-defaults () - (siren-prog-mode-defaults) + :init + (defun siren-thrift-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-current-column-mode) - (subword-mode +1)) - - (setq siren-thrift-mode-hook 'siren-thrift-mode-defaults) - (add-hook 'thrift-mode-hook (lambda () - (run-hooks 'siren-thrift-mode-hook)))) + (subword-mode +1))) (provide 'siren-thrift) ;;; siren-thrift.el ends here diff --git a/modules/siren-treemacs.el b/modules/siren-treemacs.el index 86f091b..cf293cd 100644 --- a/modules/siren-treemacs.el +++ b/modules/siren-treemacs.el @@ -7,8 +7,18 @@ ;;; Code: (use-package treemacs - :ensure t :defer t + + :bind + ([f8] . treemacs-toggle) + ("M-0" . treemacs-select-window) + ("C-c 1" . treemacs-delete-other-windows) + ;; ("M-m ft" . treemacs-toggle) + ;; ("M-m fT" . treemacs) + ;; ("M-m fB" . treemacs-bookmark) + ;; ("M-m f C-t" . treemacs-find-file) + ;; ("M-m f M-t" . treemacs-find-tag) + :config (progn (use-package treemacs-evil @@ -28,28 +38,16 @@ treemacs-goto-tag-strategy 'refetch-index) (treemacs-follow-mode t) - (treemacs-filewatch-mode t)) - :bind - (:map global-map - ([f8] . treemacs-toggle) - ("M-0" . treemacs-select-window) - ("C-c 1" . treemacs-delete-other-windows) - ;; ("M-m ft" . treemacs-toggle) - ;; ("M-m fT" . treemacs) - ;; ("M-m fB" . treemacs-bookmark) - ;; ("M-m f C-t" . treemacs-find-file) - ;; ("M-m f M-t" . treemacs-find-tag) - ) - ) + (treemacs-filewatch-mode t))) (use-package treemacs-projectile :defer t - :ensure t + :bind + ("C-x C-p" . treemacs-projectile) + ("C-x C-p" . treemacs-projectile-toggle) + :config - (setq treemacs-header-function #'treemacs-projectile-create-header) - :bind (:map global-map - ("C-x C-p" . treemacs-projectile) - ("C-x C-p" . treemacs-projectile-toggle))) + (setq treemacs-header-function #'treemacs-projectile-create-header)) (provide 'siren-treemacs) ;;; siren-treemacs.el ends here diff --git a/modules/siren-web-mode.el b/modules/siren-web-mode.el index fcc5639..b9b2138 100644 --- a/modules/siren-web-mode.el +++ b/modules/siren-web-mode.el @@ -13,29 +13,32 @@ "\\.html\\'" "\\.html.erb\\'" - :config - (setq web-mode-code-indent-offset 2 - web-mode-css-indent-offset 2 - web-mode-markup-indent-offset 2 - web-mode-sql-indent-offset 2) + :bind (:map web-mode-map + ("C-j" . newline-and-indent) + ("C-c C-h" . siren-toggle-hiding)) - (defun siren-web-mode-mode-hook () + :hook + (web-mode-hook . siren-web-mode-setup) + + :init + (defun siren-web-mode-mode-setup () "Default tweaks for `web-mode'." (setq tab-width 2) - (siren-prog-mode-defaults) + (siren-prog-mode-setup) (company-mode +1) (fci-mode -1) (hideshowvis-enable) (hs-minor-mode +1) (highlight-indentation-current-column-mode) (highlight-indentation-set-offset 2) - (subword-mode +1) - (let ((map web-mode-map)) - (define-key map (kbd "C-j") 'newline-and-indent) - (define-key map (kbd "C-c C-h") 'siren-toggle-hiding))) + (subword-mode +1)) - (add-hook 'web-mode-hook 'siren-web-mode-mode-hook)) + :config + (setq web-mode-code-indent-offset 2 + web-mode-css-indent-offset 2 + web-mode-markup-indent-offset 2 + web-mode-sql-indent-offset 2)) (provide 'siren-web-mode) ;;; siren-web-mode.el ends here diff --git a/modules/siren-yaml.el b/modules/siren-yaml.el index d5b16ed..02beb45 100644 --- a/modules/siren-yaml.el +++ b/modules/siren-yaml.el @@ -10,19 +10,21 @@ (use-package yaml-mode :mode "\\.yml\\'" "\\.yaml\\'" - :config - (defun siren-yaml-mode-defaults () - (siren-prog-mode-defaults) + :bind (:map yaml-mode-map + ("RET" . newline-and-indent)) + + :hook + (yaml-mode . siren-yaml-mode-setup) + + :init + (defun siren-yaml-mode-setup () + (siren-prog-mode-setup) (setq tab-width 2 whitespace-action '(auto-cleanup)) (highlight-indentation-set-offset 2) (highlight-indentation-current-column-mode) - (subword-mode +1) - (define-key yaml-mode-map (kbd "RET") 'newline-and-indent)) - - (setq siren-yaml-mode-hook 'siren-yaml-mode-defaults) - (add-hook 'yaml-mode-hook (lambda () (run-hooks 'siren-yaml-mode-hook)))) + (subword-mode +1))) (provide 'siren-yaml) ;;; siren-yaml.el ends here