diff --git a/core/siren-modules.el b/core/siren-modules.el index ab27cac..4763091 100644 --- a/core/siren-modules.el +++ b/core/siren-modules.el @@ -8,73 +8,86 @@ (setq siren-modules-dir (expand-file-name "modules" siren-dir)) (add-to-list 'load-path siren-modules-dir) +(siren-add-subfolders-to-load-path siren-modules-dir) -;; Modules +;; Core (require 'siren-aliases) +(require 'siren-global-keybindings) +(require 'siren-packages) + +;; Completion +(require 'siren-company) + +;; Editor +(require 'siren-browse-kill-ring) +(require 'siren-evil) +(require 'siren-ido) +(require 'siren-linum) +(require 'siren-linum-relative) +(require 'siren-rainbow) +(require 'siren-smex) +(require 'siren-undo-tree) +(require 'siren-which-key) + +;; Linting +(require 'siren-flycheck) + +;; Navigation (require 'siren-anzu) (require 'siren-avy) -(require 'siren-browse-kill-ring) -(require 'siren-company) -(require 'siren-diff-hl) (require 'siren-dired) (require 'siren-direx) (require 'siren-dumb-jump) -(require 'siren-editorconfig) -(require 'siren-evil) -(require 'siren-flyspell) (require 'siren-folding) (require 'siren-full-ack) (require 'siren-git-link) -(require 'siren-git-timemachine) -(require 'siren-github) -(require 'siren-global-keybindings) -(require 'siren-goto-chg) (require 'siren-goto-symbol) (require 'siren-helm) (require 'siren-helm-ag) (require 'siren-helm-gtags) (require 'siren-helm-open-github) -(require 'siren-helm-projectile) (require 'siren-helm-swoop) -(require 'siren-ido) -(require 'siren-linum) -(require 'siren-linum-relative) -(require 'siren-magit) (require 'siren-move-beginning-of-line) -(require 'siren-multiple-cursors) -(require 'siren-org-mode) -(require 'siren-packages) -(require 'siren-rainbow) (require 'siren-scroll-half-screen) -(require 'siren-smartparens) -(require 'siren-smex) -(require 'siren-string-inflection) -(require 'siren-text-manipulation) -(require 'siren-toggle-quotes) -(require 'siren-undo-tree) -(require 'siren-which-key) -(require 'siren-window-management) -(require 'siren-yasnippet) -(require 'siren-zoom-window) -;; (require 'siren-auto-complete) -;; (require 'siren-edit-server) -;; (require 'siren-swiper) -;; (require 'siren-volatile-highlights) -;; (require 'siren-zone) ;; Project management +(require 'siren-editorconfig) +(require 'siren-helm-projectile) (require 'siren-neotree) (require 'siren-projectile) -;; (require 'siren-ecb) -;; (require 'siren-project-explorer) -;; (require 'siren-treemacs) + +;; Spelling +(require 'siren-flyspell) + +;; Text editing +(require 'siren-expand-region) +(require 'siren-goto-chg) +(require 'siren-move-dup) +(require 'siren-multiple-cursors) +(require 'siren-randomize-region) +(require 'siren-smart-shift) +(require 'siren-smartparens) +(require 'siren-sort-symbols) +(require 'siren-sort-words) +(require 'siren-string-inflection) +(require 'siren-toggle-comments) +(require 'siren-toggle-quotes) +(require 'siren-yasnippet) + +;; Version control +(require 'siren-diff-hl) +(require 'siren-ediff) +(require 'siren-git-timemachine) +(require 'siren-github) +(require 'siren-magit) + +;; Window management +(require 'siren-buffer-move) +(require 'siren-windmove) +(require 'siren-zoom-window) ;; Workspace management (require 'siren-escreen) -;; (require 'siren-elscreen) -;; (require 'siren-eyebrowse) -;; (require 'siren-perspective) -;; (require 'siren-workgroups2) ;; Languages (require 'siren-coffee) @@ -93,17 +106,20 @@ (require 'siren-lua) (require 'siren-makefile) (require 'siren-markdown) +(require 'siren-org-mode) (require 'siren-php) (require 'siren-plantuml) +(require 'siren-prog-mode) (require 'siren-ruby) (require 'siren-rust) (require 'siren-sass) (require 'siren-scss) (require 'siren-sh) +(require 'siren-slim) +(require 'siren-text-mode) (require 'siren-thrift) (require 'siren-web-mode) (require 'siren-yaml) -;; (require 'siren-slim) (provide 'siren-modules) ;;; siren-modules.el ends here diff --git a/modules/siren-auto-complete.el b/modules/completion/siren-auto-complete.el similarity index 100% rename from modules/siren-auto-complete.el rename to modules/completion/siren-auto-complete.el diff --git a/modules/siren-company.el b/modules/completion/siren-company.el similarity index 100% rename from modules/siren-company.el rename to modules/completion/siren-company.el diff --git a/modules/siren-aliases.el b/modules/core/siren-aliases.el similarity index 100% rename from modules/siren-aliases.el rename to modules/core/siren-aliases.el diff --git a/modules/siren-global-keybindings.el b/modules/core/siren-global-keybindings.el similarity index 100% rename from modules/siren-global-keybindings.el rename to modules/core/siren-global-keybindings.el diff --git a/modules/siren-packages.el b/modules/core/siren-packages.el similarity index 100% rename from modules/siren-packages.el rename to modules/core/siren-packages.el diff --git a/modules/siren-browse-kill-ring.el b/modules/editor/siren-browse-kill-ring.el similarity index 100% rename from modules/siren-browse-kill-ring.el rename to modules/editor/siren-browse-kill-ring.el diff --git a/modules/siren-edit-server.el b/modules/editor/siren-edit-server.el similarity index 100% rename from modules/siren-edit-server.el rename to modules/editor/siren-edit-server.el diff --git a/modules/siren-evil.el b/modules/editor/siren-evil.el similarity index 100% rename from modules/siren-evil.el rename to modules/editor/siren-evil.el diff --git a/modules/siren-fci.el b/modules/editor/siren-fci.el similarity index 91% rename from modules/siren-fci.el rename to modules/editor/siren-fci.el index d6cd4b2..14f3f4b 100644 --- a/modules/siren-fci.el +++ b/modules/editor/siren-fci.el @@ -7,6 +7,7 @@ ;;; Code: (use-package fill-column-indicator + :hook (prog-mode . fci-mode) :config (setq fci-rule-width 1 fci-handle-trucate-lines nil)) diff --git a/modules/editor/siren-highlight-indent-guides.el b/modules/editor/siren-highlight-indent-guides.el new file mode 100644 index 0000000..65e1dfc --- /dev/null +++ b/modules/editor/siren-highlight-indent-guides.el @@ -0,0 +1,15 @@ +;;; siren-highlight-indent-guides.el --- jimeh's Emacs Siren: highlight-indent-guides-mode configuration. + +;;; Commentary: + +;; Basic configuration for highlight-indent-guides-mode. + +;;; Code: + +(use-package highlight-indent-guides + :defer t + :commands highlight-indent-guides-mode + :diminish highlight-indent-guides-mode) + +(provide 'siren-highlight-indent-guides) +;;; siren-highlight-indent-guides.el ends here diff --git a/modules/siren-highlight-indentation.el b/modules/editor/siren-highlight-indentation.el similarity index 89% rename from modules/siren-highlight-indentation.el rename to modules/editor/siren-highlight-indentation.el index 31fd54a..9f72d06 100644 --- a/modules/siren-highlight-indentation.el +++ b/modules/editor/siren-highlight-indentation.el @@ -11,8 +11,5 @@ :diminish (highlight-indentation-mode highlight-indentation-current-column-mode)) -(use-package highlight-indent-guides - :defer t) - (provide 'siren-highlight-indentation) ;;; siren-highlight-indentation.el ends here diff --git a/modules/siren-ido.el b/modules/editor/siren-ido.el similarity index 100% rename from modules/siren-ido.el rename to modules/editor/siren-ido.el diff --git a/modules/siren-linum-relative.el b/modules/editor/siren-linum-relative.el similarity index 100% rename from modules/siren-linum-relative.el rename to modules/editor/siren-linum-relative.el diff --git a/modules/siren-linum.el b/modules/editor/siren-linum.el similarity index 82% rename from modules/siren-linum.el rename to modules/editor/siren-linum.el index 60ec64c..56777f9 100644 --- a/modules/siren-linum.el +++ b/modules/editor/siren-linum.el @@ -6,10 +6,13 @@ ;;; Code: +(use-package linum + :ensure nil ;; loaded from emacs built-ins + :hook (prog-mode . linum-mode)) + (use-package linum+ :ensure nil ;; loaded from vendor - :demand - + :after linum :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. diff --git a/modules/siren-rainbow.el b/modules/editor/siren-rainbow.el similarity index 100% rename from modules/siren-rainbow.el rename to modules/editor/siren-rainbow.el diff --git a/modules/siren-smex.el b/modules/editor/siren-smex.el similarity index 100% rename from modules/siren-smex.el rename to modules/editor/siren-smex.el diff --git a/modules/siren-undo-tree.el b/modules/editor/siren-undo-tree.el similarity index 100% rename from modules/siren-undo-tree.el rename to modules/editor/siren-undo-tree.el diff --git a/modules/siren-volatile-highlights.el b/modules/editor/siren-volatile-highlights.el similarity index 61% rename from modules/siren-volatile-highlights.el rename to modules/editor/siren-volatile-highlights.el index 14071cc..94089dd 100644 --- a/modules/siren-volatile-highlights.el +++ b/modules/editor/siren-volatile-highlights.el @@ -6,11 +6,15 @@ ;;; Code: -(use-package volatile-highlights-mode +(require 'siren-undo-tree) + +(use-package volatile-highlights :demand :diminish volatile-highlights-mode :config - (volatile-highlights-mode t)) + (volatile-highlights-mode t) + (vhl/define-extension 'undo-tree 'undo-tree-yank 'undo-tree-move) + (vhl/install-extension 'undo-tree)) (provide 'siren-volatile-highlights) ;;; siren-volatile-highlights.el ends here diff --git a/modules/siren-which-key.el b/modules/editor/siren-which-key.el similarity index 100% rename from modules/siren-which-key.el rename to modules/editor/siren-which-key.el diff --git a/modules/siren-coffee.el b/modules/languages/siren-coffee.el similarity index 93% rename from modules/siren-coffee.el rename to modules/languages/siren-coffee.el index e09d6fa..77af804 100644 --- a/modules/siren-coffee.el +++ b/modules/languages/siren-coffee.el @@ -6,8 +6,6 @@ ;;; Code: -(require 'siren-programming) - (use-package coffee-mode :mode "\\.coffee\\'" :interpreter "coffee" @@ -15,8 +13,6 @@ :init (defun siren-coffee-mode-setup () - (siren-prog-mode-setup) - ;; remove the "Generated by CoffeeScript" header (add-to-list 'coffee-args-compile "--no-header") diff --git a/modules/siren-conf.el b/modules/languages/siren-conf.el similarity index 51% rename from modules/siren-conf.el rename to modules/languages/siren-conf.el index b6b0050..dcf60a7 100644 --- a/modules/siren-conf.el +++ b/modules/languages/siren-conf.el @@ -6,7 +6,14 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-fci) +(require 'siren-flyspell) +(require 'siren-linum) +(require 'siren-prog-mode) +(require 'siren-flycheck) +(require 'siren-highlight-indentation) +(require 'siren-highlight-symbol) +(require 'siren-smartparens) (use-package conf-mode :mode "Procfile\\'" "\\.conf\\'" "\\.cfg\\'" @@ -16,8 +23,15 @@ (defun siren-conf-mode-setup () (siren-prog-mode-setup) (setq tab-width 2) + + (fci-mode) + (flycheck-mode) + (flyspell-prog-mode) + (highlight-indentation-current-column-mode) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode))) + (highlight-symbol-mode) + (linum-mode) + (smartparens-mode))) (provide 'siren-conf) ;;; siren-conf.el ends here diff --git a/modules/siren-css.el b/modules/languages/siren-css.el similarity index 75% rename from modules/siren-css.el rename to modules/languages/siren-css.el index 5d53eb9..8a57a07 100644 --- a/modules/siren-css.el +++ b/modules/languages/siren-css.el @@ -6,7 +6,6 @@ ;;; Code: -(require 'siren-programming) (require 'siren-rainbow) (use-package css-mode @@ -18,10 +17,10 @@ :init (defun siren-css-mode-setup () - (siren-prog-mode-setup) - (rainbow-mode +1) (setq tab-width 2) - (highlight-indentation-current-column-mode))) + + (highlight-indentation-current-column-mode +1) + (rainbow-mode +1))) (provide 'siren-css) ;;; siren-css.el ends here diff --git a/modules/siren-cucumber.el b/modules/languages/siren-cucumber.el similarity index 53% rename from modules/siren-cucumber.el rename to modules/languages/siren-cucumber.el index 83df072..839a6e0 100644 --- a/modules/siren-cucumber.el +++ b/modules/languages/siren-cucumber.el @@ -6,7 +6,14 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-fci) +(require 'siren-flyspell) +(require 'siren-linum) +(require 'siren-prog-mode) +(require 'siren-flycheck) +(require 'siren-highlight-indentation) +(require 'siren-highlight-symbol) +(require 'siren-smartparens) (use-package feature-mode :mode "\\.feature\\'" @@ -17,8 +24,15 @@ (defun siren-feature-mode-setup () (siren-prog-mode-setup) (setq tab-width 2) + + (fci-mode) + (flycheck-mode) + (flyspell-prog-mode) + (highlight-indentation-current-column-mode) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode))) + (highlight-symbol-mode) + (linum-mode) + (smartparens-mode))) (provide 'siren-cucumber) ;;; siren-cucumber.el ends here diff --git a/modules/siren-dockerfile.el b/modules/languages/siren-dockerfile.el similarity index 87% rename from modules/siren-dockerfile.el rename to modules/languages/siren-dockerfile.el index 94d837e..d1a50c1 100644 --- a/modules/siren-dockerfile.el +++ b/modules/languages/siren-dockerfile.el @@ -6,15 +6,12 @@ ;;; Code: -(require 'siren-programming) - (use-package dockerfile-mode :mode "Dockerfile.*\\'" :hook (dockerfile-mode . siren-dockerfile-mode-setup) :init (defun siren-dockerfile-mode-setup () - (siren-prog-mode-setup) (subword-mode +1))) (provide 'siren-dockerfile) diff --git a/modules/siren-emacs-lisp.el b/modules/languages/siren-emacs-lisp.el similarity index 100% rename from modules/siren-emacs-lisp.el rename to modules/languages/siren-emacs-lisp.el diff --git a/modules/siren-gitconfig.el b/modules/languages/siren-gitconfig.el similarity index 63% rename from modules/siren-gitconfig.el rename to modules/languages/siren-gitconfig.el index 4f9d859..aafd9ea 100644 --- a/modules/siren-gitconfig.el +++ b/modules/languages/siren-gitconfig.el @@ -6,18 +6,12 @@ ;;; Code: -(require 'siren-programming) - (use-package gitconfig-mode :mode "\\.gitconfig" "gitconfig\\'" "\\.git\\\/config" :hook (gitconfig-mode . siren-gitconfig-mode-setup) :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))) + (defun siren-gitconfig-mode-setup ())) (provide 'siren-gitconfig) ;;; siren-gitconfig.el ends here diff --git a/modules/siren-gitignore.el b/modules/languages/siren-gitignore.el similarity index 62% rename from modules/siren-gitignore.el rename to modules/languages/siren-gitignore.el index d1fb627..ee8e3a2 100644 --- a/modules/siren-gitignore.el +++ b/modules/languages/siren-gitignore.el @@ -6,18 +6,12 @@ ;;; Code: -(require 'siren-programming) - (use-package gitignore-mode :mode "\\.gitignore" "gitignore\\'" :hook (gitignore-mode . siren-gitignore-mode-setup) :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))) + (defun siren-gitignore-mode-setup ())) (provide 'siren-gitignore) ;;; siren-gitignore.el ends here diff --git a/modules/siren-golang.el b/modules/languages/siren-golang.el similarity index 98% rename from modules/siren-golang.el rename to modules/languages/siren-golang.el index bb3dc4f..b305658 100644 --- a/modules/siren-golang.el +++ b/modules/languages/siren-golang.el @@ -6,9 +6,10 @@ ;;; Code: +(require 'siren-company) (require 'siren-flycheck) (require 'siren-folding) -(require 'siren-programming) +(require 'siren-projectile) (use-package go-mode :mode "\\.go\\'" @@ -23,8 +24,6 @@ :init (defun siren-go-mode-setup () - (siren-prog-mode-setup) - ;; Prefer goimports to gofmt if installed (let ((goimports (executable-find "goimports"))) (when goimports diff --git a/modules/siren-haml.el b/modules/languages/siren-haml.el similarity index 83% rename from modules/siren-haml.el rename to modules/languages/siren-haml.el index c1bbe10..e818ec3 100644 --- a/modules/siren-haml.el +++ b/modules/languages/siren-haml.el @@ -12,10 +12,9 @@ :init (defun siren-haml-mode-setup () - (siren-prog-mode-setup) (setq tab-width 2) (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode))) + (highlight-indentation-current-column-mode +1))) (provide 'siren-haml) ;;; siren-haml.el ends here diff --git a/modules/languages/siren-js.el b/modules/languages/siren-js.el new file mode 100644 index 0000000..1d7770c --- /dev/null +++ b/modules/languages/siren-js.el @@ -0,0 +1,42 @@ +;;; siren-js.el --- jimeh's Emacs Siren: js-mode configuration. + +;;; Commentary: + +;; Basic configuration for js-mode. + +;;; Code: + +(require 'siren-prettier-js) +(require 'siren-folding) + +(use-package js-mode + :ensure nil ;; loaded from emacs built-ins + :mode + "\\.js\\'" + "\\.pac\\'" + "node" + + :hook + (js-mode . siren-js-mode-setup) + + :init + (defun siren-js-mode-setup () + "Default tweaks for `js-mode'." + (let ((width 2)) + (setq js-indent-level width + indent-level width + tab-width width)) + + (prettier-js-mode) + (company-mode +1) + (subword-mode +1) + (hs-minor-mode 1) + (highlight-indentation-current-column-mode) + (hideshowvis-enable) + + (let ((map js-mode-map)) + (define-key map (kbd "C-j") 'newline-and-indent) + (define-key map (kbd "C-c C-h") 'siren-toggle-hiding)))) + +(provide 'siren-js) +;;; siren-js.el ends here diff --git a/modules/siren-json.el b/modules/languages/siren-json.el similarity index 65% rename from modules/siren-json.el rename to modules/languages/siren-json.el index cf17fd6..923ae81 100644 --- a/modules/siren-json.el +++ b/modules/languages/siren-json.el @@ -8,11 +8,6 @@ (require 'siren-eslintd-fix) (require 'siren-folding) -(require 'siren-programming) - -(use-package omnifmt - :ensure nil ;; loaded from vendor - ) (use-package json-mode :mode "\\.json\\'" @@ -22,10 +17,12 @@ ("C-j" . newline-and-indent) ("C-c C-h" . siren-toggle-hiding)) + :hook + (json-mode . siren-json-mode-setup) + :init (defun siren-json-mode-setup () "Default tweaks for `json-mode'." - (siren-prog-mode-setup) (let ((width 2)) (setq js-indent-level width) @@ -33,18 +30,7 @@ (setq tab-width width) (highlight-indentation-set-offset width)) - (setq flycheck-checker 'json-jsonlint) - - (eslintd-fix-mode -1) - (omnifmt-mode +1) - (company-mode +1) - (subword-mode +1) - (hs-minor-mode 1) - (highlight-indentation-current-column-mode) - (hideshowvis-enable)) - - :hook - (json-mode . siren-json-mode-setup)) + (setq flycheck-checker 'json-jsonlint))) (provide 'siren-json) ;;; siren-js.el ends here diff --git a/modules/siren-jsx.el b/modules/languages/siren-jsx.el similarity index 78% rename from modules/siren-jsx.el rename to modules/languages/siren-jsx.el index 548ad1c..e4840b5 100644 --- a/modules/siren-jsx.el +++ b/modules/languages/siren-jsx.el @@ -15,13 +15,11 @@ :init (defun siren-rjsx-mode-setup () - (siren-prog-mode-setup) - - (prettier-js-mode) + (prettier-js-mode +1) (company-mode +1) (subword-mode +1) - (hs-minor-mode 1) - (highlight-indentation-current-column-mode) + (hs-minor-mode +1) + (highlight-indentation-current-column-mode +1) (hideshowvis-enable))) (provide 'siren-jsx) diff --git a/modules/siren-lisp.el b/modules/languages/siren-lisp.el similarity index 94% rename from modules/siren-lisp.el rename to modules/languages/siren-lisp.el index 9d5f4f7..efe9fe2 100644 --- a/modules/siren-lisp.el +++ b/modules/languages/siren-lisp.el @@ -6,7 +6,7 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-highlight-indent-guides) ;; Lisp configuration (define-key read-expression-map (kbd "TAB") 'completion-at-point) diff --git a/modules/siren-lua.el b/modules/languages/siren-lua.el similarity index 88% rename from modules/siren-lua.el rename to modules/languages/siren-lua.el index f7ffb2b..2b0b258 100644 --- a/modules/siren-lua.el +++ b/modules/languages/siren-lua.el @@ -6,16 +6,12 @@ ;;; Code: -(require 'siren-programming) - (use-package lua-mode :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)) diff --git a/modules/languages/siren-makefile.el b/modules/languages/siren-makefile.el new file mode 100644 index 0000000..55a5656 --- /dev/null +++ b/modules/languages/siren-makefile.el @@ -0,0 +1,23 @@ +;;; siren-makefile.el --- jimeh's Emacs Siren: makefile-mode configuration. + +;;; Commentary: + +;; Basic configuration for makefile-mode. + +;;; Code: + +(use-package make-mode + :ensure nil ;; loaded from emacs built-ins + :hook + (makefile-mode-hook . siren-makefile-mode-setup) + + :init + (add-to-list 'siren-indent-sensitive-modes 'makefile-mode) + (defun siren-makefile-mode-setup () + (subword-mode +1) + (setq tab-width 4) + (highlight-indentation-set-offset 4) + (highlight-indentation-current-column-mode))) + +(provide 'siren-makefile) +;;; siren-makefile.el ends here diff --git a/modules/siren-markdown.el b/modules/languages/siren-markdown.el similarity index 86% rename from modules/siren-markdown.el rename to modules/languages/siren-markdown.el index 30e678a..1ab83e9 100644 --- a/modules/siren-markdown.el +++ b/modules/languages/siren-markdown.el @@ -6,7 +6,9 @@ ;;; Code: +(require 'siren-fci) (require 'siren-flyspell) +(require 'siren-linum) (require 'siren-smartparens) (use-package markdown-mode @@ -25,14 +27,13 @@ :init (defun siren-markdown-mode-setup () - (setq whitespace-action nil - fill-column 80 - markdown-asymmetric-header t) + (setq markdown-asymmetric-header t + whitespace-action nil) - (fci-mode) - (linum-mode t) - (flyspell-mode) (auto-fill-mode) + (fci-mode) + (flyspell-mode) + (linum-mode t) (smartparens-mode +1) (subword-mode)) diff --git a/modules/languages/siren-org-mode.el b/modules/languages/siren-org-mode.el new file mode 100644 index 0000000..91cb84b --- /dev/null +++ b/modules/languages/siren-org-mode.el @@ -0,0 +1,43 @@ +;;; siren-org-mode.el --- jimeh's Emacs Siren: org-mode configuration. + +;;; Commentary: + +;; Basic configuration for org-mode. + +;;; Code: + +(require 'siren-fci) +(require 'siren-flyspell) +(require 'siren-linum) +(require 'siren-smartparens) + +(use-package org-mode + :ensure nil ;; loaded from emacs built-ins + :hook (org-mode-hook . siren-org-mode-setup) + + :init + (defun siren-org-mode-setup () + (setq org-export-backends '(ascii html icalendar latex md confluence) + fill-column 80 + whitespace-action '(auto-cleanup)) + + (linum-mode t) + (flyspell-mode) + (fci-mode) + (smartparens-mode +1) + (visual-line-mode +1) + (whitespace-mode +1) + (let ((map org-mode-map)) + (define-key map (kbd "M-[") 'org-promote-subtree) + (define-key map (kbd "M-]") 'org-demote-subtree) + (define-key map (kbd "M-p") 'org-metaup) + (define-key map (kbd "M-n") 'org-metadown) + (define-key map (kbd "C-M-n") 'outline-next-visible-heading) + (define-key map (kbd "C-M-p") 'outline-previous-visible-heading)))) + +(use-package org-mouse + :ensure nil ;; loaded from emacs built-ins + :after org-mode) + +(provide 'siren-org-mode) +;;; siren-org-mode.el ends here diff --git a/modules/siren-php.el b/modules/languages/siren-php.el similarity index 89% rename from modules/siren-php.el rename to modules/languages/siren-php.el index e3cce60..28dfd59 100644 --- a/modules/siren-php.el +++ b/modules/languages/siren-php.el @@ -6,7 +6,8 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-folding) +(require 'siren-highlight-indentation) (require 'siren-rainbow) (use-package php-mode @@ -17,7 +18,6 @@ :init (defun siren-php-mode-setup () - (siren-prog-mode-setup) (rainbow-mode +1) (company-mode +1) (subword-mode +1) diff --git a/modules/siren-plantuml.el b/modules/languages/siren-plantuml.el similarity index 90% rename from modules/siren-plantuml.el rename to modules/languages/siren-plantuml.el index c5f7a93..f7c601a 100644 --- a/modules/siren-plantuml.el +++ b/modules/languages/siren-plantuml.el @@ -6,7 +6,7 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-highlight-indentation) (use-package plantuml-mode :mode "\\.uml\\'" @@ -15,9 +15,9 @@ :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))) diff --git a/modules/languages/siren-prog-mode.el b/modules/languages/siren-prog-mode.el new file mode 100644 index 0000000..464558e --- /dev/null +++ b/modules/languages/siren-prog-mode.el @@ -0,0 +1,24 @@ +;;; siren-prog-mode.el --- jimeh's Emacs Siren: defaults for programming modes + +;;; Commentary: + +;; Basic configuration shared across all programming languages. + +;;; Code: + +(use-package prog-mode + :ensure nil ;; loaded from emacs built-ins + :hook + (prog-mode . siren-prog-mode-setup) + + :init + (defun siren-prog-mode-setup () + "Default coding hook, useful with any programming language." + (setq fill-column 80 + whitespace-action '(auto-cleanup)) + + (visual-line-mode +1) + (whitespace-mode +1))) + +(provide 'siren-prog-mode) +;;; siren-prog-mode.el ends here diff --git a/modules/siren-ruby.el b/modules/languages/siren-ruby.el similarity index 96% rename from modules/siren-ruby.el rename to modules/languages/siren-ruby.el index 35ef76a..99efa72 100644 --- a/modules/siren-ruby.el +++ b/modules/languages/siren-ruby.el @@ -8,7 +8,7 @@ (require 'siren-company) (require 'siren-folding) -(require 'siren-programming) +(require 'siren-highlight-indentation) (require 'siren-smartparens) (require 'siren-toggle-quotes) @@ -50,8 +50,6 @@ :init (defun siren-ruby-mode-setup () - (siren-prog-mode-setup) - (setq c-tab-always-indent nil ruby-align-chained-calls t ruby-insert-encoding-magic-comment t @@ -99,7 +97,7 @@ '(push 'company-robe company-backends)) :config - ;; Unbind keys used by siren-text-manipulation module + ;; Unbind keys used by siren-expand-region module (unbind-key "M-." robe-mode-map) (unbind-key "M-," robe-mode-map)) diff --git a/modules/siren-rust.el b/modules/languages/siren-rust.el similarity index 93% rename from modules/siren-rust.el rename to modules/languages/siren-rust.el index ae63f0b..bfbf3c0 100644 --- a/modules/siren-rust.el +++ b/modules/languages/siren-rust.el @@ -6,9 +6,8 @@ ;;; Code: -(require 'siren-flycheck) (require 'siren-folding) -(require 'siren-programming) +(require 'siren-highlight-indentation) (use-package rust-mode :mode "\\.rs\\'" @@ -22,8 +21,6 @@ :init (defun siren-rust-mode-setup () - (siren-prog-mode-setup) - (setq rust-format-on-save t) (hs-minor-mode 1) diff --git a/modules/siren-sass.el b/modules/languages/siren-sass.el similarity index 100% rename from modules/siren-sass.el rename to modules/languages/siren-sass.el diff --git a/modules/siren-scss.el b/modules/languages/siren-scss.el similarity index 84% rename from modules/siren-scss.el rename to modules/languages/siren-scss.el index 9f347c2..e40b6f2 100644 --- a/modules/siren-scss.el +++ b/modules/languages/siren-scss.el @@ -12,12 +12,13 @@ :mode "\\.scss\\'" :hook (scss-mode-hook . siren-scss-mode-setup) + :init + (defun siren-scss-mode-setup () + (siren-css-mode-setup)) + :config ;; turn off annoying auto-compile on save - (setq scss-compile-at-save nil) - - (defun siren-scss-mode-setup () - (siren-css-mode-setup))) + (setq scss-compile-at-save nil)) (provide 'siren-scss) ;;; siren-scss.el ends here diff --git a/modules/languages/siren-sh.el b/modules/languages/siren-sh.el new file mode 100644 index 0000000..e80b10d --- /dev/null +++ b/modules/languages/siren-sh.el @@ -0,0 +1,29 @@ +;;; siren-sh.el --- jimeh's Emacs Siren: sh-mode configuration. + +;;; Commentary: + +;; Basic configuration for sh-mode. + +;;; Code: + +(require 'siren-highlight-indentation) + +(use-package sh-script + :ensure nil ;; loaded from emacs built-ins + :hook + (sh-mode-hook . siren-sh-mode-setup) + + :init + (defun siren-sh-mode-setup () + (setq tab-width 2 + sh-basic-offset 2 + sh-indentation 2 + whitespace-action '(auto-cleanup)) + + (subword-mode +1) + (highlight-indentation-set-offset 2) + (highlight-indentation-current-column-mode) + (define-key sh-mode-map (kbd "RET") 'newline-and-indent))) + +(provide 'siren-sh) +;;; siren-sh.el ends here diff --git a/modules/siren-slim.el b/modules/languages/siren-slim.el similarity index 60% rename from modules/siren-slim.el rename to modules/languages/siren-slim.el index 02e0a88..12ee148 100644 --- a/modules/siren-slim.el +++ b/modules/languages/siren-slim.el @@ -6,17 +6,15 @@ ;;; Code: +(require 'siren-highlight-indentation) + (use-package slim-mode :mode "\\.slim\\'" :hook (slim-mode-hook . siren-slim-mode-hook) :init (defun siren-slim-mode-setup () - (siren-prog-mode-setup) - (highlight-indentation-current-column-mode)) - - (setq siren-slim-mode-hook 'siren-slim-mode-defaults) - (add-hook 'slim-mode-hook (lambda () (run-hooks 'siren-slim-mode-hook)))) + (highlight-indentation-current-column-mode))) (provide 'siren-slim) ;;; siren-slim.el ends here diff --git a/modules/languages/siren-text-mode.el b/modules/languages/siren-text-mode.el new file mode 100644 index 0000000..c4b2a4f --- /dev/null +++ b/modules/languages/siren-text-mode.el @@ -0,0 +1,17 @@ +;;; siren-text-mode.el --- jimeh's Emacs Siren: text-mode configuration. + +;;; Commentary: + +;; Basic configuration for text-mode. + +;;; Code: + +(use-package text-mode + :ensure nil ;; loaded from emacs built-ins + :hook (text-mode . siren-text-mode-setup) + :init + (defun siren-text-mode-setup () + (setq fill-column 80))) + +(provide 'siren-text-mode) +;;; siren-text-mode.el ends here diff --git a/modules/siren-thrift.el b/modules/languages/siren-thrift.el similarity index 54% rename from modules/siren-thrift.el rename to modules/languages/siren-thrift.el index ff827a4..e7d3fac 100644 --- a/modules/siren-thrift.el +++ b/modules/languages/siren-thrift.el @@ -6,7 +6,14 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-fci) +(require 'siren-flyspell) +(require 'siren-linum) +(require 'siren-prog-mode) +(require 'siren-flycheck) +(require 'siren-highlight-indentation) +(require 'siren-highlight-symbol) +(require 'siren-smartparens) (use-package thrift :mode "\\.thrift\\'" @@ -15,9 +22,16 @@ :init (defun siren-thrift-mode-setup () (siren-prog-mode-setup) - (setq tab-width 2) + + (fci-mode) + (flycheck-mode) + (flyspell-prog-mode) (highlight-indentation-current-column-mode) + (highlight-indentation-set-offset 2) + (highlight-symbol-mode) + (linum-mode) + (smartparens-mode) (subword-mode +1))) (provide 'siren-thrift) diff --git a/modules/siren-web-mode.el b/modules/languages/siren-web-mode.el similarity index 89% rename from modules/siren-web-mode.el rename to modules/languages/siren-web-mode.el index b9b2138..604cd03 100644 --- a/modules/siren-web-mode.el +++ b/modules/languages/siren-web-mode.el @@ -6,7 +6,10 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-company) +(require 'siren-fci) +(require 'siren-folding) +(require 'siren-highlight-indentation) (use-package web-mode :mode @@ -25,7 +28,6 @@ "Default tweaks for `web-mode'." (setq tab-width 2) - (siren-prog-mode-setup) (company-mode +1) (fci-mode -1) (hideshowvis-enable) diff --git a/modules/siren-yaml.el b/modules/languages/siren-yaml.el similarity index 71% rename from modules/siren-yaml.el rename to modules/languages/siren-yaml.el index 02beb45..7e31495 100644 --- a/modules/siren-yaml.el +++ b/modules/languages/siren-yaml.el @@ -6,7 +6,12 @@ ;;; Code: -(require 'siren-programming) +(require 'siren-fci) +(require 'siren-flyspell) +(require 'siren-highlight-indentation) +(require 'siren-linum) +(require 'siren-prog-mode) +(require 'siren-smartparens) (use-package yaml-mode :mode "\\.yml\\'" "\\.yaml\\'" @@ -22,8 +27,12 @@ (setq tab-width 2 whitespace-action '(auto-cleanup)) - (highlight-indentation-set-offset 2) + (fci-mode) + (flyspell-mode) (highlight-indentation-current-column-mode) + (highlight-indentation-set-offset 2) + (linum-mode t) + (smartparens-mode +1) (subword-mode +1))) (provide 'siren-yaml) diff --git a/modules/siren-eslintd-fix.el b/modules/linting/siren-eslintd-fix.el similarity index 100% rename from modules/siren-eslintd-fix.el rename to modules/linting/siren-eslintd-fix.el diff --git a/modules/siren-flycheck.el b/modules/linting/siren-flycheck.el similarity index 93% rename from modules/siren-flycheck.el rename to modules/linting/siren-flycheck.el index 3f741c1..4b7d2f7 100644 --- a/modules/siren-flycheck.el +++ b/modules/linting/siren-flycheck.el @@ -7,6 +7,7 @@ ;;; Code: (use-package flycheck + :hook (prog-mode . flycheck-mode) :config (setq flycheck-completion-system 'ido flycheck-idle-change-delay 1.0 diff --git a/modules/siren-prettier-js.el b/modules/linting/siren-prettier-js.el similarity index 100% rename from modules/siren-prettier-js.el rename to modules/linting/siren-prettier-js.el diff --git a/modules/siren-rubocop.el b/modules/linting/siren-rubocop.el similarity index 100% rename from modules/siren-rubocop.el rename to modules/linting/siren-rubocop.el diff --git a/modules/siren-zone.el b/modules/misc/siren-zone.el similarity index 100% rename from modules/siren-zone.el rename to modules/misc/siren-zone.el diff --git a/modules/siren-anzu.el b/modules/navigation/siren-anzu.el similarity index 100% rename from modules/siren-anzu.el rename to modules/navigation/siren-anzu.el diff --git a/modules/siren-avy.el b/modules/navigation/siren-avy.el similarity index 100% rename from modules/siren-avy.el rename to modules/navigation/siren-avy.el diff --git a/modules/siren-dired.el b/modules/navigation/siren-dired.el similarity index 77% rename from modules/siren-dired.el rename to modules/navigation/siren-dired.el index 20684c0..4ca366f 100644 --- a/modules/siren-dired.el +++ b/modules/navigation/siren-dired.el @@ -17,7 +17,11 @@ (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))) + (toggle-diredp-find-file-reuse-dir 1)) + + :config + (unbind-key "M-i" dired-mode-map) + (unbind-key "M-l" dired-mode-map)) (provide 'siren-dired) ;;; siren-dired.el ends here diff --git a/modules/siren-direx.el b/modules/navigation/siren-direx.el similarity index 100% rename from modules/siren-direx.el rename to modules/navigation/siren-direx.el diff --git a/modules/siren-dumb-jump.el b/modules/navigation/siren-dumb-jump.el similarity index 100% rename from modules/siren-dumb-jump.el rename to modules/navigation/siren-dumb-jump.el diff --git a/modules/siren-folding.el b/modules/navigation/siren-folding.el similarity index 100% rename from modules/siren-folding.el rename to modules/navigation/siren-folding.el diff --git a/modules/siren-full-ack.el b/modules/navigation/siren-full-ack.el similarity index 100% rename from modules/siren-full-ack.el rename to modules/navigation/siren-full-ack.el diff --git a/modules/siren-git-link.el b/modules/navigation/siren-git-link.el similarity index 100% rename from modules/siren-git-link.el rename to modules/navigation/siren-git-link.el diff --git a/modules/siren-goto-symbol.el b/modules/navigation/siren-goto-symbol.el similarity index 100% rename from modules/siren-goto-symbol.el rename to modules/navigation/siren-goto-symbol.el diff --git a/modules/siren-helm-ag.el b/modules/navigation/siren-helm-ag.el similarity index 100% rename from modules/siren-helm-ag.el rename to modules/navigation/siren-helm-ag.el diff --git a/modules/siren-helm-gtags.el b/modules/navigation/siren-helm-gtags.el similarity index 100% rename from modules/siren-helm-gtags.el rename to modules/navigation/siren-helm-gtags.el diff --git a/modules/siren-helm-open-github.el b/modules/navigation/siren-helm-open-github.el similarity index 100% rename from modules/siren-helm-open-github.el rename to modules/navigation/siren-helm-open-github.el diff --git a/modules/siren-helm-swoop.el b/modules/navigation/siren-helm-swoop.el similarity index 100% rename from modules/siren-helm-swoop.el rename to modules/navigation/siren-helm-swoop.el diff --git a/modules/siren-helm.el b/modules/navigation/siren-helm.el similarity index 100% rename from modules/siren-helm.el rename to modules/navigation/siren-helm.el diff --git a/modules/siren-highlight-symbol.el b/modules/navigation/siren-highlight-symbol.el similarity index 91% rename from modules/siren-highlight-symbol.el rename to modules/navigation/siren-highlight-symbol.el index dfb3e4c..edaa677 100644 --- a/modules/siren-highlight-symbol.el +++ b/modules/navigation/siren-highlight-symbol.el @@ -12,6 +12,9 @@ ("C-c C-p" . highlight-symbol-prev) ("C-c C-n" . highlight-symbol-next) + :hook + (prog-mode . highlight-symbol-mode) + :config (setq highlight-symbol-highlight-single-occurrence 'nil highlight-symbol-idle-delay 0.5)) diff --git a/modules/siren-move-beginning-of-line.el b/modules/navigation/siren-move-beginning-of-line.el similarity index 100% rename from modules/siren-move-beginning-of-line.el rename to modules/navigation/siren-move-beginning-of-line.el diff --git a/modules/siren-scroll-half-screen.el b/modules/navigation/siren-scroll-half-screen.el similarity index 100% rename from modules/siren-scroll-half-screen.el rename to modules/navigation/siren-scroll-half-screen.el diff --git a/modules/siren-swiper.el b/modules/navigation/siren-swiper.el similarity index 100% rename from modules/siren-swiper.el rename to modules/navigation/siren-swiper.el diff --git a/modules/siren-all-the-icons.el b/modules/projects/siren-all-the-icons.el similarity index 100% rename from modules/siren-all-the-icons.el rename to modules/projects/siren-all-the-icons.el diff --git a/modules/siren-ecb.el b/modules/projects/siren-ecb.el similarity index 100% rename from modules/siren-ecb.el rename to modules/projects/siren-ecb.el diff --git a/modules/siren-editorconfig.el b/modules/projects/siren-editorconfig.el similarity index 100% rename from modules/siren-editorconfig.el rename to modules/projects/siren-editorconfig.el diff --git a/modules/siren-helm-projectile.el b/modules/projects/siren-helm-projectile.el similarity index 100% rename from modules/siren-helm-projectile.el rename to modules/projects/siren-helm-projectile.el diff --git a/modules/siren-neotree.el b/modules/projects/siren-neotree.el similarity index 100% rename from modules/siren-neotree.el rename to modules/projects/siren-neotree.el diff --git a/modules/siren-project-explorer.el b/modules/projects/siren-project-explorer.el similarity index 100% rename from modules/siren-project-explorer.el rename to modules/projects/siren-project-explorer.el diff --git a/modules/siren-projectile.el b/modules/projects/siren-projectile.el similarity index 100% rename from modules/siren-projectile.el rename to modules/projects/siren-projectile.el diff --git a/modules/siren-treemacs.el b/modules/projects/siren-treemacs.el similarity index 100% rename from modules/siren-treemacs.el rename to modules/projects/siren-treemacs.el diff --git a/modules/siren-flyspell.el b/modules/siren-flyspell.el deleted file mode 100644 index 2f45abf..0000000 --- a/modules/siren-flyspell.el +++ /dev/null @@ -1,17 +0,0 @@ -;;; siren-flyspell.el --- jimeh's Emacs Siren: flyspell configuration. - -;;; Commentary: - -;; Basic configuration for flyspell. - -;;; Code: - -(require 'flyspell) -(diminish 'flyspell-mode) -(setq ispell-program-name "aspell" ; use aspell instead of ispell - ispell-extra-args '("--lang=en" "--sug-mode=ultra")) - -(global-set-key (kbd "s-.") 'flyspell-correct-word-before-point) - -(provide 'siren-flyspell) -;;; siren-flyspell.el ends here diff --git a/modules/siren-js.el b/modules/siren-js.el deleted file mode 100644 index df3a540..0000000 --- a/modules/siren-js.el +++ /dev/null @@ -1,39 +0,0 @@ -;;; siren-js.el --- jimeh's Emacs Siren: js-mode configuration. - -;;; Commentary: - -;; Basic configuration for js-mode. - -;;; Code: - -(require 'siren-prettier-js) -(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-setup () - "Default tweaks for `js-mode'." - (let ((width 2)) - (setq js-indent-level width - indent-level width - tab-width width)) - - (siren-prog-mode-setup) - (prettier-js-mode) - (company-mode +1) - (subword-mode +1) - (hs-minor-mode 1) - (highlight-indentation-current-column-mode) - (hideshowvis-enable) - - (let ((map js-mode-map)) - (define-key map (kbd "C-j") 'newline-and-indent) - (define-key map (kbd "C-c C-h") 'siren-toggle-hiding))) - -(add-hook 'js-mode-hook #'siren-js-mode-setup) - -(provide 'siren-js) -;;; siren-js.el ends here diff --git a/modules/siren-makefile.el b/modules/siren-makefile.el deleted file mode 100644 index baeaed3..0000000 --- a/modules/siren-makefile.el +++ /dev/null @@ -1,23 +0,0 @@ -;;; siren-makefile.el --- jimeh's Emacs Siren: makefile-mode configuration. - -;;; Commentary: - -;; Basic configuration for makefile-mode. - -;;; Code: - -(require 'siren-programming) - -(add-to-list 'siren-indent-sensitive-modes 'makefile-mode) - -(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)) - -(add-hook 'makefile-mode-hook #'siren-makefile-mode-setup) - -(provide 'siren-makefile) -;;; siren-makefile.el ends here diff --git a/modules/siren-org-mode.el b/modules/siren-org-mode.el deleted file mode 100644 index dbbb764..0000000 --- a/modules/siren-org-mode.el +++ /dev/null @@ -1,37 +0,0 @@ -;;; siren-org-mode.el --- jimeh's Emacs Siren: org-mode configuration. - -;;; Commentary: - -;; Basic configuration for org-mode. - -;;; Code: - -(require 'siren-fci) -(require 'siren-flyspell) -(require 'siren-smartparens) - -(defun siren-org-mode-setup () - (setq org-export-backends '(ascii html icalendar latex md confluence) - fill-column 80 - whitespace-action '(auto-cleanup)) - - (require 'org-mouse) - - (linum-mode t) - (flyspell-mode) - (fci-mode) - (smartparens-mode +1) - (visual-line-mode +1) - (whitespace-mode +1) - (let ((map org-mode-map)) - (define-key map (kbd "M-[") 'org-promote-subtree) - (define-key map (kbd "M-]") 'org-demote-subtree) - (define-key map (kbd "M-p") 'org-metaup) - (define-key map (kbd "M-n") 'org-metadown) - (define-key map (kbd "C-M-n") 'outline-next-visible-heading) - (define-key map (kbd "C-M-p") 'outline-previous-visible-heading))) - -(add-hook 'org-mode-hook #'siren-org-mode-setup) - -(provide 'siren-org-mode) -;;; siren-org-mode.el ends here diff --git a/modules/siren-phi-search.el b/modules/siren-phi-search.el deleted file mode 100644 index 2eef5a1..0000000 --- a/modules/siren-phi-search.el +++ /dev/null @@ -1,14 +0,0 @@ -;;; siren-phi-search.el --- jimeh's Emacs Siren: phi-search configuration. - -;;; Commentary: - -;; Basic configuration for phi-search. - -;;; Code: - -(use-package phi-search - :config - (setq phi-search-limit 3000)) - -(provide 'siren-phi-search) -;;; siren-phi-search.el ends here diff --git a/modules/siren-programming.el b/modules/siren-programming.el deleted file mode 100644 index 8b5dabf..0000000 --- a/modules/siren-programming.el +++ /dev/null @@ -1,32 +0,0 @@ -;;; siren-programming.el --- jimeh's Emacs Siren: defaults for programming modes - -;;; Commentary: - -;; Basic configuration shared across all programming languages. - -;;; Code: - -(require 'siren-fci) -(require 'siren-flycheck) -(require 'siren-flyspell) -(require 'siren-smartparens) -(require 'siren-highlight-indentation) -(require 'siren-highlight-symbol) - -(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 '(auto-cleanup)) - (visual-line-mode +1) - (whitespace-mode +1)) - -(add-hook 'prog-mode-hook #'siren-prog-mode-setup) - -(provide 'siren-programming) -;;; siren-programming.el ends here diff --git a/modules/siren-sh.el b/modules/siren-sh.el deleted file mode 100644 index 2ccc539..0000000 --- a/modules/siren-sh.el +++ /dev/null @@ -1,27 +0,0 @@ -;;; siren-sh.el --- jimeh's Emacs Siren: sh-mode configuration. - -;;; Commentary: - -;; Basic configuration for sh-mode. - -;;; Code: - -(require 'siren-programming) - -(defun siren-sh-mode-setup () - (siren-prog-mode-setup) - - (setq tab-width 2 - sh-basic-offset 2 - sh-indentation 2 - whitespace-action '(auto-cleanup)) - - (subword-mode +1) - (highlight-indentation-set-offset 2) - (highlight-indentation-current-column-mode) - (define-key sh-mode-map (kbd "RET") 'newline-and-indent)) - -(add-hook 'sh-mode-hook #'siren-sh-mode-setup) - -(provide 'siren-sh) -;;; siren-sh.el ends here diff --git a/modules/siren-text-manipulation.el b/modules/siren-text-manipulation.el deleted file mode 100644 index 18d1fcf..0000000 --- a/modules/siren-text-manipulation.el +++ /dev/null @@ -1,86 +0,0 @@ -;;; siren-text-manipulation.el --- jimeh's Emacs Siren: text-manipulation. - -;;; Commentary: - -;; Various text manipulation functions and keybindings. Some of them shamelessly -;; ripped from textmate.el: https://github.com/defunkt/textmate.el - -;;; Code: - -(use-package move-dup - :bind - ("M-p" . md/move-lines-up) - ("M-n" . md/move-lines-down) - ("C-x C-d" . md/duplicate-down)) - -(use-package expand-region - :bind - ("M-." . er/expand-region) - ("M-," . er/contract-region)) - -(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")) - () - ,(format "Like `%s', but acts on the current line if mark is not active." - orig-function) - (interactive) - (if mark-active - (call-interactively (function ,orig-function)) - (save-excursion - ;; define a region (temporarily) -- so any C-u prefixes etc. are preserved. - (beginning-of-line) - (set-mark (point)) - (end-of-line) - (call-interactively (function ,orig-function)))))) - -(unless (fboundp 'comment-or-uncomment-region-or-line) - (allow-line-as-region-for-function comment-or-uncomment-region)) - -;; from: https://www.emacswiki.org/emacs/RandomizeBuffer -(defun randomize-region (beg end) - "Randomize lines in region from BEG to END." - (interactive "*r") - (let ((lines (split-string - (delete-and-extract-region beg end) "\n"))) - (when (string-equal "" (car (last lines 1))) - (setq lines (butlast lines 1))) - (apply 'insert - (mapcar 'cdr - (sort (mapcar - (lambda (x) (cons (random) (concat x "\n"))) lines) - (lambda (a b) (< (car a) (car b)))))))) - -;; from: https://www.emacswiki.org/emacs/SortWords -(defun sort-words (reverse beg end) - "Sort words in region alphabetically, in REVERSE if negative. -Prefixed with negative \\[universal-argument], sorts in reverse. - -The variable `sort-fold-case' determines whether alphabetic case -affects the sort order. - -See `sort-regexp-fields'." - (interactive "*P\nr") - (sort-regexp-fields reverse "\\w+" "\\&" beg end)) - -(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) - -;; from: https://www.emacswiki.org/emacs/SortWords -(defun sort-symbols (reverse beg end) - "Sort symbols in region alphabetically, in REVERSE if negative. -See `sort-words'." - (interactive "*P\nr") - (sort-regexp-fields reverse "\\(\\sw\\|\\s_\\)+" "\\&" beg end)) - -(defalias 'sw 'sort-words) -(defalias 'ss 'sort-symbols) - -(provide 'siren-text-manipulation) -;;; siren-text-manipulation.el ends here diff --git a/modules/siren-window-management.el b/modules/siren-window-management.el deleted file mode 100644 index 144d042..0000000 --- a/modules/siren-window-management.el +++ /dev/null @@ -1,33 +0,0 @@ -;;; siren-window-management.el --- jimeh's Emacs Siren: window-management. - -;;; Commentary: - -;; Basic window management stuff. - -;;; 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))))) - -;; Navigate to windows -(global-set-key (kbd "M-k") (ignore-error-wrapper 'windmove-down)) -(global-set-key (kbd "M-i") (ignore-error-wrapper 'windmove-up)) -(global-set-key (kbd "M-j") (ignore-error-wrapper 'windmove-left)) -(global-set-key (kbd "M-l") (ignore-error-wrapper 'windmove-right)) - -(provide 'siren-window-management) -;;; siren-window-management.el ends here diff --git a/modules/spelling/siren-flyspell.el b/modules/spelling/siren-flyspell.el new file mode 100644 index 0000000..77ad191 --- /dev/null +++ b/modules/spelling/siren-flyspell.el @@ -0,0 +1,28 @@ +;;; siren-flyspell.el --- jimeh's Emacs Siren: flyspell configuration. + +;;; Commentary: + +;; Basic configuration for flyspell. + +;;; Code: + +(use-package flyspell + :ensure nil ;; loaded from emacs built-ins + :demand + :diminish flyspell-mode + :bind + ("s-." . flyspell-correct-word-before-point) + + :hook + (prog-mode . flyspell-prog-mode) + + :config + ;; Ensure flyspell does not override keybindings of siren-goto-chg module. + (unbind-key "C-." flyspell-mode-map) + (unbind-key "C-," flyspell-mode-map) + + (setq ispell-program-name "aspell" ; use aspell instead of ispell + ispell-extra-args '("--lang=en" "--sug-mode=ultra"))) + +(provide 'siren-flyspell) +;;; siren-flyspell.el ends here diff --git a/modules/text-editing/siren-expand-region.el b/modules/text-editing/siren-expand-region.el new file mode 100644 index 0000000..e21254d --- /dev/null +++ b/modules/text-editing/siren-expand-region.el @@ -0,0 +1,15 @@ +;;; siren-expand-region.el --- jimeh's Emacs Siren: expand-region + +;;; Commentary: + +;; Configuration for expand-region + +;;; Code: + +(use-package expand-region + :bind + ("M-." . er/expand-region) + ("M-," . er/contract-region)) + +(provide 'siren-expand-region) +;;; siren-expand-region.el ends here diff --git a/modules/siren-goto-chg.el b/modules/text-editing/siren-goto-chg.el similarity index 50% rename from modules/siren-goto-chg.el rename to modules/text-editing/siren-goto-chg.el index 32f7abd..a52748d 100644 --- a/modules/siren-goto-chg.el +++ b/modules/text-editing/siren-goto-chg.el @@ -8,12 +8,6 @@ (use-package goto-chg :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) diff --git a/modules/text-editing/siren-move-dup.el b/modules/text-editing/siren-move-dup.el new file mode 100644 index 0000000..7b7ede2 --- /dev/null +++ b/modules/text-editing/siren-move-dup.el @@ -0,0 +1,16 @@ +;;; siren-move-dup.el --- jimeh's Emacs Siren: move-dup + +;;; Commentary: + +;; Configuration for move-dup + +;;; Code: + +(use-package move-dup + :bind + ("M-p" . md/move-lines-up) + ("M-n" . md/move-lines-down) + ("C-x C-d" . md/duplicate-down)) + +(provide 'siren-move-dup) +;;; siren-move-dup.el ends here diff --git a/modules/siren-multiple-cursors.el b/modules/text-editing/siren-multiple-cursors.el similarity index 83% rename from modules/siren-multiple-cursors.el rename to modules/text-editing/siren-multiple-cursors.el index 787d0fa..17a1f13 100644 --- a/modules/siren-multiple-cursors.el +++ b/modules/text-editing/siren-multiple-cursors.el @@ -6,8 +6,6 @@ ;;; Code: -(require 'siren-phi-search) - (use-package multiple-cursors :bind ("C-x C-@" . mc/edit-lines) ;; Terminal @@ -23,5 +21,10 @@ (global-unset-key (kbd "M-")) ;; must unset key first (global-set-key (kbd "M-") 'mc/add-cursor-on-click)) +;; Allows searching forward/back (C-s/C-r) searching with multiple cursors. +(use-package phi-search + :config + (setq phi-search-limit 3000)) + (provide 'siren-multiple-cursors) ;;; siren-multiple-cursors.el ends here diff --git a/modules/text-editing/siren-randomize-region.el b/modules/text-editing/siren-randomize-region.el new file mode 100644 index 0000000..e92f934 --- /dev/null +++ b/modules/text-editing/siren-randomize-region.el @@ -0,0 +1,24 @@ +;;; siren-randomize-region.el --- jimeh's Emacs Siren: randomize-region + +;;; Commentary: + +;; Helper command to randomize the order of lines in region. Shamelessly ripped +;; from: https://www.emacswiki.org/emacs/RandomizeBuffer + +;;; Code: + +(defun randomize-region (beg end) + "Randomize lines in region from BEG to END." + (interactive "*r") + (let ((lines (split-string + (delete-and-extract-region beg end) "\n"))) + (when (string-equal "" (car (last lines 1))) + (setq lines (butlast lines 1))) + (apply 'insert + (mapcar 'cdr + (sort (mapcar + (lambda (x) (cons (random) (concat x "\n"))) lines) + (lambda (a b) (< (car a) (car b)))))))) + +(provide 'siren-randomize-region) +;;; siren-randomize-region.el ends here diff --git a/modules/text-editing/siren-smart-shift.el b/modules/text-editing/siren-smart-shift.el new file mode 100644 index 0000000..4586593 --- /dev/null +++ b/modules/text-editing/siren-smart-shift.el @@ -0,0 +1,17 @@ +;;; siren-smart-shift.el --- jimeh's Emacs Siren: smart-shift + +;;; Commentary: + +;; Configuration for smart-shift + +;;; Code: + +(use-package smart-shift + :bind + ("C-c [" . smart-shift-left) + ("C-c ]" . smart-shift-right) + ("M-[" . smart-shift-left) + ("M-]" . smart-shift-right)) + +(provide 'siren-smart-shift) +;;; siren-smart-shift.el ends here diff --git a/modules/siren-smartparens.el b/modules/text-editing/siren-smartparens.el similarity index 97% rename from modules/siren-smartparens.el rename to modules/text-editing/siren-smartparens.el index 989ab4c..b22e168 100644 --- a/modules/siren-smartparens.el +++ b/modules/text-editing/siren-smartparens.el @@ -27,6 +27,9 @@ ("C-" . sp-backward-kill-sexp) ("C-" . sp-kill-sexp)) + :hook + (prog-mode . smartparens-mode) + :config ;; smart pairing for all (require 'smartparens-config) diff --git a/modules/text-editing/siren-sort-symbols.el b/modules/text-editing/siren-sort-symbols.el new file mode 100644 index 0000000..1c4f7b6 --- /dev/null +++ b/modules/text-editing/siren-sort-symbols.el @@ -0,0 +1,19 @@ +;;; siren-sort-symbols.el --- jimeh's Emacs Siren: sort-symbols. + +;;; Commentary: + +;; Helper command to sort symbols in region. Shamelessly ripped from: +;; https://www.emacswiki.org/emacs/SortWords + +;;; Code: + +(defun sort-symbols (reverse beg end) + "Sort symbols in region alphabetically, in REVERSE if negative. +See `sort-symbols'." + (interactive "*P\nr") + (sort-regexp-fields reverse "\\(\\sw\\|\\s_\\)+" "\\&" beg end)) + +(defalias 'ss 'sort-symbols) + +(provide 'siren-sort-symbols) +;;; siren-sort-symbols.el ends here diff --git a/modules/text-editing/siren-sort-words.el b/modules/text-editing/siren-sort-words.el new file mode 100644 index 0000000..739861e --- /dev/null +++ b/modules/text-editing/siren-sort-words.el @@ -0,0 +1,24 @@ +;;; siren-sort-words.el --- jimeh's Emacs Siren: sort-words. + +;;; Commentary: + +;; Helper command to sort words in region. Shamelessly ripped from: +;; https://www.emacswiki.org/emacs/SortWords + +;;; Code: + +(defun sort-words (reverse beg end) + "Sort words in region alphabetically, in REVERSE if negative. +Prefixed with negative \\[universal-argument], sorts in reverse. + +The variable `sort-fold-case' determines whether alphabetic case +affects the sort order. + +See `sort-regexp-fields'." + (interactive "*P\nr") + (sort-regexp-fields reverse "\\w+" "\\&" beg end)) + +(defalias 'sw 'sort-words) + +(provide 'siren-sort-words) +;;; siren-sort-words.el ends here diff --git a/modules/siren-string-inflection.el b/modules/text-editing/siren-string-inflection.el similarity index 100% rename from modules/siren-string-inflection.el rename to modules/text-editing/siren-string-inflection.el diff --git a/modules/text-editing/siren-toggle-comments.el b/modules/text-editing/siren-toggle-comments.el new file mode 100644 index 0000000..4b7abfc --- /dev/null +++ b/modules/text-editing/siren-toggle-comments.el @@ -0,0 +1,32 @@ +;;; siren-toggle-comments.el --- jimeh's Emacs Siren: toggle-comments + +;;; Commentary: + +;; Allows to toggle comments for current line or selected region. Shamelessly +;; ripped from textmate.el: https://github.com/defunkt/textmate.el + +;;; Code: + +(defmacro allow-line-as-region-for-function (orig-function) + `(defun ,(intern (concat (symbol-name orig-function) "-or-line")) + () + ,(format "Like `%s', but acts on the current line if mark is not active." + orig-function) + (interactive) + (if mark-active + (call-interactively (function ,orig-function)) + (save-excursion + ;; define a region (temporarily) -- so any C-u prefixes etc. are preserved. + (beginning-of-line) + (set-mark (point)) + (end-of-line) + (call-interactively (function ,orig-function)))))) + +(unless (fboundp 'comment-or-uncomment-region-or-line) + (allow-line-as-region-for-function comment-or-uncomment-region)) + +(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) + +(provide 'siren-toggle-comments) +;;; siren-toggle-comments.el ends here diff --git a/modules/siren-toggle-quotes.el b/modules/text-editing/siren-toggle-quotes.el similarity index 100% rename from modules/siren-toggle-quotes.el rename to modules/text-editing/siren-toggle-quotes.el diff --git a/modules/siren-yasnippet.el b/modules/text-editing/siren-yasnippet.el similarity index 100% rename from modules/siren-yasnippet.el rename to modules/text-editing/siren-yasnippet.el diff --git a/modules/siren-diff-hl.el b/modules/version-control/siren-diff-hl.el similarity index 100% rename from modules/siren-diff-hl.el rename to modules/version-control/siren-diff-hl.el diff --git a/modules/siren-ediff.el b/modules/version-control/siren-ediff.el similarity index 100% rename from modules/siren-ediff.el rename to modules/version-control/siren-ediff.el diff --git a/modules/siren-git-timemachine.el b/modules/version-control/siren-git-timemachine.el similarity index 100% rename from modules/siren-git-timemachine.el rename to modules/version-control/siren-git-timemachine.el diff --git a/modules/siren-github.el b/modules/version-control/siren-github.el similarity index 100% rename from modules/siren-github.el rename to modules/version-control/siren-github.el diff --git a/modules/siren-magit.el b/modules/version-control/siren-magit.el similarity index 98% rename from modules/siren-magit.el rename to modules/version-control/siren-magit.el index 75e4a44..12c861f 100644 --- a/modules/siren-magit.el +++ b/modules/version-control/siren-magit.el @@ -8,7 +8,6 @@ (require 'siren-fci) (require 'siren-flyspell) -(require 'siren-ediff) (use-package magit :bind diff --git a/modules/windows/siren-buffer-move.el b/modules/windows/siren-buffer-move.el new file mode 100644 index 0000000..d16792d --- /dev/null +++ b/modules/windows/siren-buffer-move.el @@ -0,0 +1,17 @@ +;;; siren-buffer-move.el --- jimeh's Emacs Siren: buffer-move + +;;; Commentary: + +;; Configuration for buffer-move + +;;; 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)) + +(provide 'siren-buffer-move) +;;; siren-buffer-move.el ends here diff --git a/modules/windows/siren-windmove.el b/modules/windows/siren-windmove.el new file mode 100644 index 0000000..98dec02 --- /dev/null +++ b/modules/windows/siren-windmove.el @@ -0,0 +1,18 @@ +;;; siren-windmove.el --- jimeh's Emacs Siren: windmove + +;;; Commentary: + +;; Configuration for windmove. + +;;; Code: + +(use-package windmove + :ensure nil ;; loaded from emacs built-ins + :config + (global-set-key (kbd "M-k") (siren-ignore-error-wrapper 'windmove-down)) + (global-set-key (kbd "M-i") (siren-ignore-error-wrapper 'windmove-up)) + (global-set-key (kbd "M-j") (siren-ignore-error-wrapper 'windmove-left)) + (global-set-key (kbd "M-l") (siren-ignore-error-wrapper 'windmove-right))) + +(provide 'siren-windmove) +;;; siren-windmove.el ends here diff --git a/modules/siren-zoom-window.el b/modules/windows/siren-zoom-window.el similarity index 100% rename from modules/siren-zoom-window.el rename to modules/windows/siren-zoom-window.el diff --git a/modules/siren-elscreen.el b/modules/workspaces/siren-elscreen.el similarity index 100% rename from modules/siren-elscreen.el rename to modules/workspaces/siren-elscreen.el diff --git a/modules/siren-escreen.el b/modules/workspaces/siren-escreen.el similarity index 100% rename from modules/siren-escreen.el rename to modules/workspaces/siren-escreen.el diff --git a/modules/siren-eyebrowse.el b/modules/workspaces/siren-eyebrowse.el similarity index 100% rename from modules/siren-eyebrowse.el rename to modules/workspaces/siren-eyebrowse.el diff --git a/modules/siren-perspective.el b/modules/workspaces/siren-perspective.el similarity index 100% rename from modules/siren-perspective.el rename to modules/workspaces/siren-perspective.el diff --git a/modules/siren-workgroups2.el b/modules/workspaces/siren-workgroups2.el similarity index 100% rename from modules/siren-workgroups2.el rename to modules/workspaces/siren-workgroups2.el