From 85b729b201dd04dae3863fd13869267ccc896960 Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Tue, 8 Aug 2017 01:43:26 +0100 Subject: [PATCH] Tons of lazy-loading improvements and small cleanups --- modules/siren-auto-complete.el | 42 ++++++------ modules/siren-css.el | 3 +- modules/siren-ecb.el | 13 ++-- modules/siren-edit-server.el | 4 +- modules/siren-elscreen.el | 38 +++++------ modules/siren-global-keybindings.el | 4 -- modules/siren-magit.el | 7 +- modules/siren-markdown.el | 1 + modules/siren-org-mode.el | 1 + modules/siren-phi-search.el | 12 +++- modules/siren-php.el | 33 ++++------ modules/siren-plantuml.el | 27 ++++---- modules/siren-programming.el | 2 +- modules/siren-project-explorer.el | 42 ++++++------ modules/siren-projectile.el | 81 +++++++++++------------ modules/siren-rubocop.el | 97 ++++++++++++++-------------- modules/siren-ruby.el | 55 +++++++++------- modules/siren-sass.el | 18 +++--- modules/siren-scss.el | 18 +++--- modules/siren-sh.el | 10 +-- modules/siren-smartparens.el | 66 +++++++++---------- modules/siren-smex.el | 22 +++---- modules/siren-swiper.el | 21 +++--- modules/siren-text-manipulation.el | 34 +++++----- modules/siren-thrift.el | 23 +++---- modules/siren-toggle-quotes.el | 2 - modules/siren-undo-tree.el | 13 +++- modules/siren-use-package.el | 15 ----- modules/siren-volatile-highlights.el | 9 ++- modules/siren-web-mode.el | 2 - modules/siren-window-management.el | 23 +++---- modules/siren-workgroups2.el | 8 +-- modules/siren-yaml.el | 9 ++- modules/siren-yasnippet.el | 10 ++- modules/siren-zoom-window.el | 10 +-- siren-modules.el | 1 + 36 files changed, 382 insertions(+), 394 deletions(-) delete mode 100644 modules/siren-use-package.el diff --git a/modules/siren-auto-complete.el b/modules/siren-auto-complete.el index a1c5929..ddefdf6 100644 --- a/modules/siren-auto-complete.el +++ b/modules/siren-auto-complete.el @@ -6,31 +6,29 @@ ;;; Code: -(siren-require-packages '(auto-complete)) +(use-package auto-complete + :config + (require 'siren-flyspell) + (ac-flyspell-workaround) -(require 'auto-complete) -;; (require 'auto-complete-config) -;; (ac-config-default) -(ac-flyspell-workaround) + (setq ac-auto-show-menu 0.2 + ac-auto-start 3 + ac-delay 0.05 + ac-menu-height 15) -(setq ac-auto-show-menu 0.2) -(setq ac-auto-start 3) -(setq ac-delay 0.05) -(setq 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)) -(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." - (if (ac-trigger-command-p last-command) - (auto-complete) - ad-do-it)) + ;; Auto-complete when indenting. + (defadvice indent-for-tab-command (around ac-before-indent activate) + "Call `auto-complete' if text was recently entered." + (if (ac-trigger-command-p last-command) + (auto-complete) + ad-do-it))) (provide 'siren-auto-complete) ;;; siren-auto-complete.el ends here diff --git a/modules/siren-css.el b/modules/siren-css.el index 1c50af3..52b3c06 100644 --- a/modules/siren-css.el +++ b/modules/siren-css.el @@ -18,8 +18,7 @@ (siren-prog-mode-defaults) (rainbow-mode +1) (setq tab-width 2) - (highlight-indentation-current-column-mode) - (run-hooks 'siren-prog-mode-hook)) + (highlight-indentation-current-column-mode)) (setq siren-css-mode-hook 'siren-css-mode-defaults) (add-hook 'css-mode-hook (lambda () diff --git a/modules/siren-ecb.el b/modules/siren-ecb.el index efb7e19..8aae2d9 100644 --- a/modules/siren-ecb.el +++ b/modules/siren-ecb.el @@ -26,13 +26,14 @@ ("~/src" "src") ("~/Sites" "Sites") ("~" "~") - ("/" "/"))) + ("/" "/")) - ;; Add "^Icon$" as a exclude to the default sources. Dropbox uses "Icon" files - ;; with some weird unprintable character at the end of the filename to customize - ;; the folder icon. ECB however errors out when trying to render this file, - ;; hence we're no longer displaying it at all. - (setq ecb-source-file-regexps + ;; Add "^Icon$" as a exclude to the default sources. Dropbox uses "Icon" + ;; files with some weird unprintable character at the end of the + ;; filename to customize the folder icon. ECB however errors out when + ;; trying to render this file, hence we're no longer displaying it at + ;; all. + ecb-source-file-regexps (quote ((".*" ("\\(^\\(#\\)\\|\\(~$\\|\\.\\(elc\\|obj\\|o\\|class\\|lib\\|dll\\|a\\|so\\|cache\\)$\\)\\)" "^Icon$") diff --git a/modules/siren-edit-server.el b/modules/siren-edit-server.el index 152dacd..b3409e2 100644 --- a/modules/siren-edit-server.el +++ b/modules/siren-edit-server.el @@ -9,8 +9,8 @@ (use-package edit-server :if window-system :init - (setq edit-server-default-major-mode 'markdown-mode) - (setq edit-server-new-frame-alist + (setq edit-server-default-major-mode 'markdown-mode + edit-server-new-frame-alist '((name . "Edit with Emacs FRAME") (width . 90) (height . 45) diff --git a/modules/siren-elscreen.el b/modules/siren-elscreen.el index 59a440f..86c75ab 100644 --- a/modules/siren-elscreen.el +++ b/modules/siren-elscreen.el @@ -7,28 +7,28 @@ ;;; Code: (use-package elscreen + :bind (("s-}" . elscreen-next) + ("s-{" . elscreen-previous) + + :map elscreen-map + ;; Prefix key. + ("C-z" . elscreen-map) + + ;; Set screen nickname + ("," . elscreen-screen-nickname) + ("C-," . elscreen-screen-nickname) + + ;; Toggle screens. + ("l" . elscreen-toggle) + ("C-l" . elscreen-toggle) + + ;; Display list of screens. + (";" . elscreen-display-screen-name-list) + ("C-;" . elscreen-display-screen-name-list)) + :config (use-package elscreen-buffer-group) - ;; Prefix key. - (define-key elscreen-map (kbd "C-z") elscreen-map) - - ;; Goto screens. - (global-set-key (kbd "s-}") 'elscreen-next) - (global-set-key (kbd "s-{") 'elscreen-previous) - - ;; Set screen nickname - (define-key elscreen-map (kbd ",") 'elscreen-screen-nickname) - (define-key elscreen-map (kbd "C-,") 'elscreen-screen-nickname) - - ;; Toggle screens. - (define-key elscreen-map (kbd "l") 'elscreen-toggle) - (define-key elscreen-map (kbd "C-l") 'elscreen-toggle) - - ;; Display list of screens. - (define-key elscreen-map (kbd ";") 'elscreen-display-screen-name-list) - (define-key elscreen-map (kbd "C-;") 'elscreen-display-screen-name-list) - ;; Start ElScreen. (elscreen-start)) diff --git a/modules/siren-global-keybindings.el b/modules/siren-global-keybindings.el index 4ce1eb6..00aebc1 100644 --- a/modules/siren-global-keybindings.el +++ b/modules/siren-global-keybindings.el @@ -39,10 +39,6 @@ ;; Rename current file and buffer (global-set-key (kbd "C-c r") 'siren-rename-file-and-buffer) -;; Flyspell correct previous word -(when (require 'flyspell nil 'noerror) - (global-set-key (kbd "s-.") 'flyspell-correct-word-before-point)) - ;; Mac OS X specific keybindings (when (eq system-type 'darwin) ;; Move to beginning/end of buffer diff --git a/modules/siren-magit.el b/modules/siren-magit.el index be5b9a3..3bba31b 100644 --- a/modules/siren-magit.el +++ b/modules/siren-magit.el @@ -9,14 +9,17 @@ (use-package magit :bind ("C-x g". magit-status) + ("C-x C-g". magit-status) + + :init + (defalias 'bl 'magit-blame) :config (require 'siren-fci) + (require 'siren-flyspell) (require 'siren-ediff) (require 'magit) - (defalias 'bl 'magit-blame) - (setq magit-completing-read-function 'magit-ido-completing-read magit-status-buffer-switch-function 'switch-to-buffer magit-bury-buffer-function 'bury-buffer diff --git a/modules/siren-markdown.el b/modules/siren-markdown.el index 14ce963..6d31c64 100644 --- a/modules/siren-markdown.el +++ b/modules/siren-markdown.el @@ -15,6 +15,7 @@ "\\.markdown" :config + (require 'siren-flyspell) (setq markdown-command "redcarpet") (defun siren-markdown-mode-defaults () diff --git a/modules/siren-org-mode.el b/modules/siren-org-mode.el index b4dc6c7..3e07197 100644 --- a/modules/siren-org-mode.el +++ b/modules/siren-org-mode.el @@ -7,6 +7,7 @@ ;;; Code: (require 'siren-fci) +(require 'siren-flyspell) (require 'siren-smartparens) (defun siren-org-mode-defaults () diff --git a/modules/siren-phi-search.el b/modules/siren-phi-search.el index 87a4c11..f28587d 100644 --- a/modules/siren-phi-search.el +++ b/modules/siren-phi-search.el @@ -6,9 +6,17 @@ ;;; Code: -(siren-require-packages '(phi-search)) +(use-package phi-search + :bind + ("C-s" . phi-search) + ("C-r" . phi-search-backward) -(require 'phi-search) + :config + (custom-set-faces + '(phi-search-match-face + ((t (:background "paleturquoise4")))) + '(phi-search-selection-face + ((t (:background "palevioletred2" :foreground "brown4")))))) (provide 'siren-phi-search) ;;; siren-phi-search.el ends here diff --git a/modules/siren-php.el b/modules/siren-php.el index 8eb8ec8..89acab0 100644 --- a/modules/siren-php.el +++ b/modules/siren-php.el @@ -6,27 +6,22 @@ ;;; Code: -(require 'siren-programming) -(siren-require-packages '(php-mode)) +(use-package php-mode + :config + (require 'siren-rainbow) -(eval-after-load 'php-mode - '(progn - (siren-require-packages '(rainbow-mode)) + (defun siren-php-mode-defaults () + (siren-prog-mode-defaults) + (rainbow-mode +1) + (company-mode +1) + (subword-mode +1) + (highlight-indentation-current-column-mode) + (hs-minor-mode 1) + (hideshowvis-enable)) - (defun siren-php-mode-defaults () - (siren-prog-mode-defaults) - (rainbow-mode +1) - (company-mode +1) - (subword-mode +1) - (highlight-indentation-current-column-mode) - (hs-minor-mode 1) - (hideshowvis-enable) - (run-hooks 'siren-prog-mode-hook)) - - (setq siren-php-mode-hook 'siren-php-mode-defaults) - - (add-hook 'php-mode-hook (lambda () - (run-hooks 'siren-php-mode-hook))))) + (setq siren-php-mode-hook 'siren-php-mode-defaults) + (add-hook 'php-mode-hook (lambda () + (run-hooks 'siren-php-mode-hook)))) (provide 'siren-php) ;;; siren-php.el ends here diff --git a/modules/siren-plantuml.el b/modules/siren-plantuml.el index 863f228..2107343 100644 --- a/modules/siren-plantuml.el +++ b/modules/siren-plantuml.el @@ -6,23 +6,22 @@ ;;; Code: -(require 'siren-programming) +(use-package plantuml-mode + :mode "\\.uml\\'" -(siren-require-packages '(plantuml-mode)) + :config + (require 'siren-programming) -(add-to-list 'auto-mode-alist '("\\.uml\\'" . plantuml-mode)) + (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") + (highlight-indentation-set-offset 2) + (highlight-indentation-current-column-mode)) -(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") - (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))) + (setq siren-plantuml-mode-hook 'siren-plantuml-mode-defaults) + (add-hook 'plantuml-mode-hook (lambda () + (run-hooks 'siren-plantuml-mode-hook)))) (provide 'siren-plantuml) ;;; siren-plantuml.el ends here diff --git a/modules/siren-programming.el b/modules/siren-programming.el index ece05f0..5bcfa1b 100644 --- a/modules/siren-programming.el +++ b/modules/siren-programming.el @@ -8,6 +8,7 @@ (require 'siren-fci) (require 'siren-flycheck) +(require 'siren-flyspell) (require 'siren-smartparens) (require 'siren-highlight-indentation) (require 'siren-highlight-symbol) @@ -25,7 +26,6 @@ (whitespace-mode +1)) (setq siren-prog-mode-hook 'siren-prog-mode-defaults) - (add-hook 'prog-mode-hook (lambda () (run-hooks 'siren-prog-mode-hook))) diff --git a/modules/siren-project-explorer.el b/modules/siren-project-explorer.el index d0149a8..dd885a8 100644 --- a/modules/siren-project-explorer.el +++ b/modules/siren-project-explorer.el @@ -6,29 +6,29 @@ ;;; Code: -(siren-require-packages '(project-explorer)) +(use-package project-explorer + :bind + ("C-x C-p" . project-explorer-toggle) -(require 'project-explorer) -(setq pe/follow-current t) -(setq pe/width 54) -(setq pe/cache-directory (expand-file-name - "project-explorer-cache" siren-savefile-dir)) + :config + (setq pe/follow-current t + pe/width 54 + pe/cache-directory (expand-file-name + "project-explorer-cache" siren-savefile-dir)) -(global-set-key (kbd "C-x C-p") 'project-explorer-toggle) - -;; ;; Make Project Explorer open selected file in last used buffer -;; (setq pe/display-content-buffer-function -;; (lambda (buffer) -;; (let* (( last-buffer -;; (car (cl-remove 'project-explorer-mode -;; (buffer-list) -;; :key (apply-partially 'buffer-local-value -;; 'major-mode)))) -;; ( window (get-buffer-window last-buffer))) -;; (if window -;; (set-window-buffer window buffer) -;; (pe/show-buffer buffer))) -;; )) + ;; Make Project Explorer open selected file in last used buffer + (setq pe/display-content-buffer-function + (lambda (buffer) + (let* (( last-buffer + (car (cl-remove 'project-explorer-mode + (buffer-list) + :key (apply-partially 'buffer-local-value + 'major-mode)))) + ( window (get-buffer-window last-buffer))) + (if window + (set-window-buffer window buffer) + (pe/show-buffer buffer))) + ))) (provide 'siren-project-explorer) ;;; siren-project-explorer.el ends here diff --git a/modules/siren-projectile.el b/modules/siren-projectile.el index 1ba6f8c..f9b9d1d 100644 --- a/modules/siren-projectile.el +++ b/modules/siren-projectile.el @@ -6,52 +6,47 @@ ;;; Code: -(siren-require-packages '(projectile)) +(use-package projectile + :bind + ("C-c p p" . projectile-switch-project) + ("C-c C-b" . projectile-ibuffer) + ("C-x C-t" . projectile-find-file) + ("C-x t" . projectile-find-test-file) + ("C-x C-v" . projectile-switch-to-buffer) -(require 'projectile) -(setq projectile-completion-system 'ido) -(setq projectile-enable-caching nil) -(setq projectile-globally-ignored-directories - (quote (".idea" - ".eunit" - ".git" - ".hg" - ".fslckout" - ".bzr" - ".svn" - "_darcs" - "vendor/bundle" - "vendor/ruby" - "coverage" - "docs" - "doc" - "log" - "logs" - "tmp" - "Godeps" - "elpa" - "savefile"))) -(setq projectile-globally-ignored-files (quote ("TAGS" "*.log"))) -(setq projectile-sort-order 'recently-active) -(setq projectile-mode-line (quote "")) -(setq projectile-cache-file (expand-file-name - "projectile.cache" siren-savefile-dir)) + :config + (setq projectile-completion-system 'ido + projectile-enable-caching nil + projectile-globally-ignored-directories '(".idea" + ".eunit" + ".git" + ".hg" + ".fslckout" + ".bzr" + ".svn" + "_darcs" + "vendor/bundle" + "vendor/ruby" + "coverage" + "docs" + "doc" + "log" + "logs" + "tmp" + "Godeps" + "elpa" + "savefile") + projectile-globally-ignored-files (quote ("TAGS" "*.log")) + projectile-sort-order 'recently-active + projectile-mode-line (quote "") + projectile-cache-file (expand-file-name + "projectile.cache" siren-savefile-dir)) -;; Treat separate directories with Gemfiles within a single git repo as separate -;; projects. -(push "Gemfile" projectile-project-root-files-bottom-up) + ;; Treat separate directories with Gemfiles within a single git repo as separate + ;; projects. + (push "Gemfile" projectile-project-root-files-bottom-up) -;; Bug lets projectile write to the file, but not read from it -;; (setq projectile-known-projects-file (expand-file-name -;; "projectile-bookmarks.eld" siren-savefile-dir)) - -(projectile-global-mode t) - -;; Keybindings -(global-set-key (kbd "C-c C-b") 'projectile-ibuffer) -(global-set-key (kbd "C-x C-t") 'projectile-find-file) -(global-set-key (kbd "C-x t") 'projectile-find-test-file) -(global-set-key (kbd "C-x C-v") 'projectile-switch-to-buffer) + (projectile-global-mode t)) (provide 'siren-projectile) ;;; siren-projectile.el ends here diff --git a/modules/siren-rubocop.el b/modules/siren-rubocop.el index 5f387ea..e6584ef 100644 --- a/modules/siren-rubocop.el +++ b/modules/siren-rubocop.el @@ -6,66 +6,67 @@ ;;; Code: -(siren-require-packages '(rubocop)) +(use-package rubocop + :defer t -(defgroup siren-rubocop nil - "Rubocop options specific to Siren." - :group 'siren) + :config + (defgroup siren-rubocop nil + "Rubocop options specific to Siren." + :group 'siren) -(defcustom siren-rubocop-autocorrect-on-save t - "Auto-correct files with rubocop when saving." - :group 'siren-rubocop - :type 'boolean) + (defcustom siren-rubocop-autocorrect-on-save t + "Auto-correct files with rubocop when saving." + :group 'siren-rubocop + :type 'boolean) -(defadvice compilation-start - (around inhibit-display - (command &optional mode name-function highlight-regexp)) - (if (not (string-match "^\\(find\\|grep\\)" command)) - (flet ((display-buffer) - (set-window-point) - (goto-char)) - (fset 'display-buffer 'ignore) - (fset 'goto-char 'ignore) - (fset 'set-window-point 'ignore) - (save-window-excursion - ad-do-it)) - ad-do-it)) + (defadvice compilation-start + (around inhibit-display + (command &optional mode name-function highlight-regexp)) + (if (not (string-match "^\\(find\\|grep\\)" command)) + (flet ((display-buffer) + (set-window-point) + (goto-char)) + (fset 'display-buffer 'ignore) + (fset 'goto-char 'ignore) + (fset 'set-window-point 'ignore) + (save-window-excursion + ad-do-it)) + ad-do-it)) -(defun siren-rubocop-autocorrect () - "Auto-correct with Rubocop and instantly revert buffer." - (interactive) - (if siren-rubocop-autocorrect-on-save - (save-buffer) - (siren-rubocop-autocorrect-p t))) + (defun siren-rubocop-autocorrect () + "Auto-correct with Rubocop and instantly revert buffer." + (interactive) + (if siren-rubocop-autocorrect-on-save + (save-buffer) + (siren-rubocop-autocorrect-p t))) -(defun siren-rubocop-autocorrect-p (force-save) - "Auto-correct with Rubocop and instantly revert buffer. + (defun siren-rubocop-autocorrect-p (force-save) + "Auto-correct with Rubocop and instantly revert buffer. If FORCE-SAVE is nil then file will not be saved before auto-correction is triggered." - (if force-save (save-buffer)) - (ad-activate 'compilation-start) - (rubocop-autocorrect-current-file) - (ad-deactivate 'compilation-start) - ;; doesn't work, buffer just updates a few seconds later via auto-revert. - ;; (revert-buffer t t) - ) + (if force-save (save-buffer)) + (ad-activate 'compilation-start) + (rubocop-autocorrect-current-file) + (ad-deactivate 'compilation-start) + ;; doesn't work, buffer just updates a few seconds later via auto-revert. + ;; (revert-buffer t t) + ) -(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-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) + (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))) + (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))) + (setq siren-rubocop-mode-hook 'siren-rubocop-mode-defaults) + (add-hook 'rubocop-mode-hook (lambda () + (run-hooks 'siren-rubocop-mode-hook)))) (provide 'siren-rubocop) ;;; siren-rubocop.el ends here diff --git a/modules/siren-ruby.el b/modules/siren-ruby.el index 52b40b5..9afae8a 100644 --- a/modules/siren-ruby.el +++ b/modules/siren-ruby.el @@ -6,7 +6,24 @@ ;;; Code: -(siren-require-packages '(ruby-tools inf-ruby yari ruby-refactor rspec-mode)) +(use-package inf-ruby + :defer t) + +(use-package rspec-mode + :defer t + :init + (eval-after-load 'rspec-mode '(rspec-install-snippets))) + +(use-package ruby-refactor + :defer t) + +(use-package ruby-tools + :defer t) + +(use-package yari + :defer t + :init + (define-key 'help-command (kbd "R") 'yari)) (require 'siren-programming) (require 'siren-company) @@ -14,6 +31,10 @@ (require 'siren-smartparens) (require 'siren-toggle-quotes) +(require 'smartparens-ruby) +(require 'rubocopfmt) +(require 'ruby-mode) + ;; 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)) @@ -37,41 +58,30 @@ ;; We never want to edit Rubinius bytecode (add-to-list 'completion-ignored-extensions ".rbc") -(define-key 'help-command (kbd "R") 'yari) - ;; Set up hs-mode (HideShow) for Ruby (add-to-list 'hs-special-modes-alist `(ruby-mode - ,(rx (or "def" "class" "module" "do")) ;; Block start - ,(rx (or "end")) ;; Block end - ,(rx (or "#" "=begin")) ;; Comment start + ,(rx (or "def" "class" "module" "do" "if" "case")) ;; Block start + ,(rx (or "end")) ;; Block end + ,(rx (or "#" "=begin")) ;; Comment start ruby-forward-sexp nil)) ;; Make company-mode play nice (push 'ruby-mode company-dabbrev-code-modes) -(require 'rspec-mode) -(require 'rubocopfmt) -(require 'ruby-mode) -(require 'ruby-refactor) -(require 'smartparens-ruby) - -(eval-after-load 'rspec-mode - '(rspec-install-snippets)) - (defun siren-ruby-mode-defaults () (siren-prog-mode-defaults) - (setq ruby-use-smie t) - (setq ruby-align-chained-calls t) - (setq ruby-insert-encoding-magic-comment t) - (setq c-tab-always-indent nil) - (setq ruby-refactor-add-parens t) - (setq rspec-primary-source-dirs '("app")) + (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) (rubocopfmt-mode) (ruby-tools-mode +1) - (setq tab-width 2) (hs-minor-mode 1) (company-mode +1) (subword-mode +1) @@ -90,7 +100,6 @@ (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))) diff --git a/modules/siren-sass.el b/modules/siren-sass.el index ed7ec0d..d77c559 100644 --- a/modules/siren-sass.el +++ b/modules/siren-sass.el @@ -6,18 +6,20 @@ ;;; Code: -(require 'siren-css) -(siren-require-packages '(sass-mode)) +(use-package sass-mode + :mode "\\.sass\\'" -;; turn off annoying auto-compile on save -(setq sass-compile-at-save nil) + :config + (require 'siren-css) -(defun siren-sass-mode-defaults () - (siren-css-mode-defaults)) + ;; turn off annoying auto-compile on save + (setq sass-compile-at-save nil) -(setq siren-sass-mode-hook 'siren-sass-mode-defaults) + (defun siren-sass-mode-defaults () + (siren-css-mode-defaults)) -(add-hook 'sass-mode-hook (lambda () (run-hooks 'siren-sass-mode-hook))) + (setq siren-sass-mode-hook 'siren-sass-mode-defaults) + (add-hook 'sass-mode-hook (lambda () (run-hooks 'siren-sass-mode-hook)))) (provide 'siren-sass) ;;; siren-sass.el ends here diff --git a/modules/siren-scss.el b/modules/siren-scss.el index 4ef0a21..9fe84c7 100644 --- a/modules/siren-scss.el +++ b/modules/siren-scss.el @@ -6,18 +6,20 @@ ;;; Code: -(require 'siren-css) -(siren-require-packages '(scss-mode)) +(use-package scss-mode + :mode "\\.scss\\'" -;; turn off annoying auto-compile on save -(setq scss-compile-at-save nil) + :config + (require 'siren-css) -(defun siren-scss-mode-defaults () - (siren-css-mode-defaults)) + ;; turn off annoying auto-compile on save + (setq scss-compile-at-save nil) -(setq siren-scss-mode-hook 'siren-scss-mode-defaults) + (defun siren-scss-mode-defaults () + (siren-css-mode-defaults)) -(add-hook 'scss-mode-hook (lambda () (run-hooks 'siren-scss-mode-hook))) + (setq siren-scss-mode-hook 'siren-scss-mode-defaults) + (add-hook 'scss-mode-hook (lambda () (run-hooks 'siren-scss-mode-hook)))) (provide 'siren-scss) ;;; siren-scss.el ends here diff --git a/modules/siren-sh.el b/modules/siren-sh.el index 935d2c4..66a9f09 100644 --- a/modules/siren-sh.el +++ b/modules/siren-sh.el @@ -11,17 +11,17 @@ (defun siren-sh-mode-defaults () (siren-prog-mode-defaults) + (setq tab-width 2 + sh-basic-offset 2 + sh-indentation 2 + whitespace-action '(auto-cleanup)) + (subword-mode +1) - (setq tab-width 2) - (setq sh-basic-offset 2) - (setq sh-indentation 2) (highlight-indentation-set-offset 2) (highlight-indentation-current-column-mode) - (setq whitespace-action (quote (auto-cleanup))) (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))) diff --git a/modules/siren-smartparens.el b/modules/siren-smartparens.el index 1cababe..b210de5 100644 --- a/modules/siren-smartparens.el +++ b/modules/siren-smartparens.el @@ -6,45 +6,45 @@ ;;; Code: -(siren-require-packages '(smartparens)) +(use-package smartparens + :defer t + :diminish smartparens-mode -;; smart pairing for all -(require 'smartparens-config) -(setq sp-base-key-bindings 'paredit) -(setq sp-autoskip-closing-pair 'always) -(setq sp-hybrid-kill-entire-symbol nil) -(custom-set-faces - '(sp-pair-overlay-face ((t (:inherit nil))))) + :init + (defalias 'rw 'sp-rewrap-sexp) + (show-smartparens-global-mode +1) -(sp-pair "{" nil :post-handlers - '(((lambda (&rest _ignored) - (siren-smart-open-line-above)) "RET"))) + :config + ;; smart pairing for all + (require 'smartparens-config) -(show-smartparens-global-mode +1) -(diminish 'smartparens-mode) + (setq sp-base-key-bindings 'paredit + sp-autoskip-closing-pair 'always + sp-hybrid-kill-entire-symbol nil) -;; Aliases -(defalias 'rw 'sp-rewrap-sexp) + (custom-set-faces + '(sp-pair-overlay-face ((t (:inherit nil))))) -;; Keybindings -(let ((map smartparens-mode-map)) - (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)) + (sp-pair "{" nil :post-handlers + '(((lambda (&rest _ignored) + (siren-smart-open-line-above)) "RET"))) -(custom-set-faces - '(sp-pair-overlay-face ((t (:inherit nil))))) + ;; Keybindings + (let ((map smartparens-mode-map)) + (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))) (provide 'siren-smartparens) ;;; siren-smartparens.el ends here diff --git a/modules/siren-smex.el b/modules/siren-smex.el index be52444..f67f4d5 100644 --- a/modules/siren-smex.el +++ b/modules/siren-smex.el @@ -6,19 +6,17 @@ ;;; Code: -(siren-require-packages '(smex)) +(use-package smex + :bind + ("M-x" . smex) + ("M-X" . smex-major-mode-commands) + ("C-x C-m" . smex) + ("C-c C-m" . smex) + ("C-c C-c M-x" . execute-extended-command) -;;; smex, remember recently and most frequently used commands -(require 'smex) -(setq smex-save-file (expand-file-name ".smex-items" siren-savefile-dir)) -(smex-initialize) - -;; Keybindings -(global-set-key (kbd "M-x") 'smex) -(global-set-key (kbd "M-X") 'smex-major-mode-commands) -(global-set-key (kbd "C-x C-m") 'smex) -(global-set-key (kbd "C-c C-m") 'smex) -(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command) + :config + (setq smex-save-file (expand-file-name ".smex-items" siren-savefile-dir)) + (smex-initialize)) (provide 'siren-smex) ;;; siren-smex.el ends here diff --git a/modules/siren-swiper.el b/modules/siren-swiper.el index 07c0a9c..1e15f8f 100644 --- a/modules/siren-swiper.el +++ b/modules/siren-swiper.el @@ -6,19 +6,18 @@ ;;; Code: -(siren-require-packages '(swiper)) +(use-package swiper + :bind + ("C-s" . swiper) + ("C-c C-r" . ivy-resume) -(require 'swiper) + :config + (ivy-mode 1) + (setq ivy-use-virtual-buffers t) -(ivy-mode 1) -(setq ivy-use-virtual-buffers t) - -(global-set-key (kbd "C-s") 'swiper) -(global-set-key (kbd "C-c C-r") 'ivy-resume) - -(custom-set-faces - '(ivy-current-match ((t (:background "#7e9fc9" :foreground "black")))) - '(swiper-line-face ((t (:background "#313c4d"))))) + (custom-set-faces + '(ivy-current-match ((t (:background "#7e9fc9" :foreground "black")))) + '(swiper-line-face ((t (:background "#313c4d")))))) (provide 'siren-swiper) ;;; siren-swiper.el ends here diff --git a/modules/siren-text-manipulation.el b/modules/siren-text-manipulation.el index 0b0547a..527ec4e 100644 --- a/modules/siren-text-manipulation.el +++ b/modules/siren-text-manipulation.el @@ -7,13 +7,23 @@ ;;; Code: -(siren-require-packages '(move-dup expand-region smart-shift)) +(use-package move-dup + :bind + ("M-p" . md/move-lines-up) + ("M-n" . md/move-lines-down) + ("C-x C-d" . md/duplicate-down)) -(require 'move-dup) -(require 'expand-region) +(use-package expand-region + :bind + ("M-." . er/expand-region) + ("M-," . er/contract-region)) -(require 'smart-shift) -(global-smart-shift-mode 1) +(use-package smart-shift + :bind + ("C-c [" . smart-shift-left) + ("C-c ]" . smart-shift-right) + ("M-[" . smart-shift-left) + ("M-]" . smart-shift-right)) (defmacro allow-line-as-region-for-function (orig-function) `(defun ,(intern (concat (symbol-name orig-function) "-or-line")) @@ -47,22 +57,8 @@ (lambda (x) (cons (random) (concat x "\n"))) lines) (lambda (a b) (< (car a) (car b)))))))) -;; Keybindings -(global-set-key (kbd "M-p") 'md/move-lines-up) -(global-set-key (kbd "M-n") 'md/move-lines-down) -;; (global-set-key (kbd "C-x C-d") 'md/duplicate-up) -(global-set-key (kbd "C-x C-d") 'md/duplicate-down) - -(global-set-key (kbd "C-c [") 'smart-shift-left) -(global-set-key (kbd "C-c ]") 'smart-shift-right) -(global-set-key (kbd "M-[") 'smart-shift-left) -(global-set-key (kbd "M-]") 'smart-shift-right) - (global-set-key (kbd "C-c /") 'comment-or-uncomment-region-or-line) (global-set-key (kbd "C-c C-/") 'comment-or-uncomment-region-or-line) -(global-set-key (kbd "M-.") 'er/expand-region) -(global-set-key (kbd "M-,") 'er/contract-region) - (provide 'siren-text-manipulation) ;;; siren-text-manipulation.el ends here diff --git a/modules/siren-thrift.el b/modules/siren-thrift.el index 1dfdbc1..7e7f651 100644 --- a/modules/siren-thrift.el +++ b/modules/siren-thrift.el @@ -6,21 +6,22 @@ ;;; Code: -(require 'siren-programming) +(use-package thrift + :mode "\\.thrift\\'" -(siren-require-packages '(thrift)) + :config + (require 'siren-programming) -(defun siren-thrift-mode-defaults () - (siren-prog-mode-defaults) + (defun siren-thrift-mode-defaults () + (siren-prog-mode-defaults) - (setq tab-width 2) - (highlight-indentation-current-column-mode) - (subword-mode +1)) + (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))) + (setq siren-thrift-mode-hook 'siren-thrift-mode-defaults) + (add-hook 'thrift-mode-hook (lambda () + (run-hooks 'siren-thrift-mode-hook)))) (provide 'siren-thrift) ;;; siren-thrift.el ends here diff --git a/modules/siren-toggle-quotes.el b/modules/siren-toggle-quotes.el index c029b23..cd3cc56 100644 --- a/modules/siren-toggle-quotes.el +++ b/modules/siren-toggle-quotes.el @@ -6,8 +6,6 @@ ;;; Code: -(require 'siren-use-package) - (use-package toggle-quotes :bind (("C-'" . toggle-quotes))) diff --git a/modules/siren-undo-tree.el b/modules/siren-undo-tree.el index c47b40f..9083bc2 100644 --- a/modules/siren-undo-tree.el +++ b/modules/siren-undo-tree.el @@ -12,7 +12,18 @@ ("M--" . undo-tree-undo) ("M-_" . undo-tree-redo) ("s-z" . undo-tree-undo) - ("s-Z" . undo-tree-redo)) + ("s-Z" . undo-tree-redo) + + :diminish + undo-tree-mode + + :init + (global-undo-tree-mode) + + :config + ;; autosave the undo-tree history + (setq undo-tree-history-directory-alist `((".*" . ,temporary-file-directory)) + undo-tree-auto-save-history t)) (provide 'siren-undo-tree) ;;; siren-undo-tree.el ends here diff --git a/modules/siren-use-package.el b/modules/siren-use-package.el deleted file mode 100644 index f342410..0000000 --- a/modules/siren-use-package.el +++ /dev/null @@ -1,15 +0,0 @@ -;;; siren-use-package.el --- jimeh's Emacs Siren: dumb-jump configuration. - -;;; Commentary: - -;; Basic configuration for use-package. - -;;; Code: - -(siren-require-packages '(use-package)) - -(require 'use-package) -(setq use-package-always-ensure t) - -(provide 'siren-use-package) -;;; siren-use-package.el ends here diff --git a/modules/siren-volatile-highlights.el b/modules/siren-volatile-highlights.el index 159782c..9fef853 100644 --- a/modules/siren-volatile-highlights.el +++ b/modules/siren-volatile-highlights.el @@ -6,11 +6,10 @@ ;;; Code: -(siren-require-packages '(volatile-highlights)) - -(require 'volatile-highlights) -(volatile-highlights-mode t) -(diminish 'volatile-highlights-mode) +(use-package volatile-highlights-mode + :diminish volatile-highlights-mode + :init + (volatile-highlights-mode t)) (provide 'siren-volatile-highlights) ;;; siren-volatile-highlights.el ends here diff --git a/modules/siren-web-mode.el b/modules/siren-web-mode.el index 81cffe5..645f3c5 100644 --- a/modules/siren-web-mode.el +++ b/modules/siren-web-mode.el @@ -6,8 +6,6 @@ ;;; Code: -(require 'siren-use-package) - (use-package web-mode :mode "\\.html\\'" diff --git a/modules/siren-window-management.el b/modules/siren-window-management.el index a841d13..144d042 100644 --- a/modules/siren-window-management.el +++ b/modules/siren-window-management.el @@ -6,19 +6,22 @@ ;;; Code: +(use-package buffer-move + :bind + ("M-K" . buf-move-down) + ("M-I" . buf-move-up) + ("M-J" . buf-move-left) + ("M-L" . buf-move-right)) + +(require 'windmove) + (defun ignore-error-wrapper (fn) "Funtion return new function that ignore errors. The function wraps a function with `ignore-errors' macro." (lexical-let ((fn fn)) (lambda () (interactive) - (ignore-errors - (funcall fn))))) - -(siren-require-packages '(buffer-move)) - -(require 'windmove) -(require 'buffer-move) + (ignore-errors (funcall fn))))) ;; Navigate to windows (global-set-key (kbd "M-k") (ignore-error-wrapper 'windmove-down)) @@ -26,11 +29,5 @@ (global-set-key (kbd "M-j") (ignore-error-wrapper 'windmove-left)) (global-set-key (kbd "M-l") (ignore-error-wrapper 'windmove-right)) -;; Swap buffers between windows -(global-set-key (kbd "M-K") 'buf-move-down) -(global-set-key (kbd "M-I") 'buf-move-up) -(global-set-key (kbd "M-J") 'buf-move-left) -(global-set-key (kbd "M-L") 'buf-move-right) - (provide 'siren-window-management) ;;; siren-window-management.el ends here diff --git a/modules/siren-workgroups2.el b/modules/siren-workgroups2.el index 221669b..52e881b 100644 --- a/modules/siren-workgroups2.el +++ b/modules/siren-workgroups2.el @@ -6,11 +6,9 @@ ;;; Code: -(siren-require-packages '(workgroups2)) - -(require 'workgroups2) -(setq wg-prefix-key (kbd "C-z")) - +(use-package workgroups2 + :config + (setq wg-prefix-key (kbd "C-z"))) (provide 'siren-workgroups2) ;;; siren-workgroups2.el ends here diff --git a/modules/siren-yaml.el b/modules/siren-yaml.el index 61dd818..663cccc 100644 --- a/modules/siren-yaml.el +++ b/modules/siren-yaml.el @@ -6,8 +6,6 @@ ;;; Code: -(require 'siren-use-package) - (use-package yaml-mode :mode "\\.yml\\'" "\\.yaml\\'" :config @@ -15,11 +13,12 @@ (defun siren-yaml-mode-defaults () (siren-prog-mode-defaults) - (subword-mode +1) - (setq tab-width 2) + (setq tab-width 2 + whitespace-action '(auto-cleanup)) + (highlight-indentation-set-offset 2) (highlight-indentation-current-column-mode) - (setq whitespace-action (quote (auto-cleanup))) + (subword-mode +1) (define-key yaml-mode-map (kbd "RET") 'newline-and-indent)) (setq siren-yaml-mode-hook 'siren-yaml-mode-defaults) diff --git a/modules/siren-yasnippet.el b/modules/siren-yasnippet.el index e016049..ecf1436 100644 --- a/modules/siren-yasnippet.el +++ b/modules/siren-yasnippet.el @@ -6,12 +6,10 @@ ;;; Code: -(siren-require-packages '(yasnippet)) - -(require 'yasnippet) -(diminish 'yas-minor-mode) - -(yas/global-mode t) +(use-package yasnippet + :diminish yas-minor-mode + :init + (yas-global-mode t)) (provide 'siren-yasnippet) ;;; siren-yasnippet.el ends here diff --git a/modules/siren-zoom-window.el b/modules/siren-zoom-window.el index 1db61ae..7e22dad 100644 --- a/modules/siren-zoom-window.el +++ b/modules/siren-zoom-window.el @@ -6,12 +6,12 @@ ;;; Code: -(siren-require-packages '(zoom-window)) +(use-package zoom-window + :bind + ("C-x C-" . zoom-window-zoom) -(require 'zoom-window) -(global-set-key (kbd "C-x C-") 'zoom-window-zoom) - -(setq zoom-window-mode-line-color "#2a1f1f") + :config + (setq zoom-window-mode-line-color "#2a1f1f")) (provide 'siren-zoom-window) ;;; siren-zoom-window.el ends here diff --git a/siren-modules.el b/siren-modules.el index 067ae80..25c7de0 100644 --- a/siren-modules.el +++ b/siren-modules.el @@ -81,6 +81,7 @@ (require 'siren-makefile) (require 'siren-markdown) (require 'siren-plantuml) +(require 'siren-php) (require 'siren-ruby) (require 'siren-sass) (require 'siren-scss)