diff --git a/core/siren-core-modules.el b/core/siren-core-modules.el index 5a3c7ab..2464e6f 100644 --- a/core/siren-core-modules.el +++ b/core/siren-core-modules.el @@ -36,7 +36,6 @@ (require 'siren-display-indentation) (require 'siren-display-line-numbers) (require 'siren-embark) -(require 'siren-folding) (require 'siren-highlight-symbol) (require 'siren-marginalia) (require 'siren-minions) diff --git a/modules/editor/siren-folding.el b/modules/editor/siren-folding.el deleted file mode 100644 index 28592b7..0000000 --- a/modules/editor/siren-folding.el +++ /dev/null @@ -1,43 +0,0 @@ -;;; siren-folding.el --- jimeh's Emacs Siren: folding configuration. - -;;; Commentary: - -;; Basic configuration for folding code. - -;;; Code: - -(use-package hideshow - :straight (:type built-in) - - :general - ("C-=" 'siren-folding-toggle-selective-display) - ("C-c C-h" 'siren-folding-toggle) - - :preface - (defun siren-folding (&optional arg) - "Activate or deactivate code folding. -Optional ARG is passed directly to mode toggle function." - (hs-minor-mode (or arg t))) - - (defun siren-folding-toggle (column) - "Toggle hiding/showing blocks via hs-mode. - -Borrowed from: http://www.emacswiki.org/emacs/HideShow" - (interactive "P") - (if hs-minor-mode - (if (condition-case nil - (hs-toggle-hiding) - (error t)) - (hs-show-all)) - (siren-folding-toggle-selective-display column))) - - (defun siren-folding-toggle-selective-display (column) - "Helper function for `siren-folding-toggle'." - (interactive "P") - (set-selective-display - (or column - (unless selective-display - (1+ (current-column))))))) - -(provide 'siren-folding) -;;; siren-folding.el ends here diff --git a/modules/editor/siren-hideshow.el b/modules/editor/siren-hideshow.el new file mode 100644 index 0000000..9f091ab --- /dev/null +++ b/modules/editor/siren-hideshow.el @@ -0,0 +1,27 @@ +;;; siren-hideshow.el --- jimeh's Emacs Siren: folding configuration. + +;;; Commentary: + +;; Basic configuration for hideshow code. + +;;; Code: + +(use-package hideshow + :straight (:type built-in) + :general + (:keymaps 'hs-minor-mode-map + "C-=" 'siren-hideshow-toggle + "C-c C-h" 'siren-hideshow-toggle) + + :preface + (defun siren-hideshow-toggle (column) + "Toggle hiding/showing blocks via hs-mode. + +Borrowed from: http://www.emacswiki.org/emacs/HideShow" + (interactive "P") + (condition-case nil + (hs-toggle-hiding) + (error (hs-show-all))))) + +(provide 'siren-hideshow) +;;; siren-hideshow.el ends here diff --git a/modules/editor/siren-origami.el b/modules/editor/siren-origami.el new file mode 100644 index 0000000..96bda06 --- /dev/null +++ b/modules/editor/siren-origami.el @@ -0,0 +1,21 @@ +;;; siren-origami.el --- jimeh's Emacs Siren: origami configuration. + +;;; Commentary: + +;; Basic configuration for origami code. + +;;; Code: + +(use-package origami + :general + (:keymaps 'origami-mode-map + "M-0" 'origami-open-all-nodes + "M-9" 'origami-close-all-nodes + "C-=" 'origami-forward-toggle-node + "C-c C-h" 'origami-forward-toggle-node)) + +(use-package lsp-origami + :after lsp-mode) + +(provide 'siren-origami) +;;; siren-origami.el ends here diff --git a/modules/languages/siren-dart.el b/modules/languages/siren-dart.el index f047c91..2e3c6ab 100644 --- a/modules/languages/siren-dart.el +++ b/modules/languages/siren-dart.el @@ -6,8 +6,8 @@ ;;; Code: -(require 'siren-folding) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-projectile) (use-package dart-mode @@ -29,11 +29,15 @@ (auto-highlight-symbol-mode -1)) (lsp-deferred) - (siren-folding) - (subword-mode +1)) + (origami-mode t) + (subword-mode y)) :init - (with-eval-after-load "projectile" + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(dart-mode . origami-c-style-parser))) + + (with-eval-after-load 'projectile (add-to-list 'projectile-project-root-files-bottom-up "pubspec.yaml") (add-to-list 'projectile-project-root-files-bottom-up "BUILD"))) diff --git a/modules/languages/siren-golang.el b/modules/languages/siren-golang.el index a5300a2..ff0bfdd 100644 --- a/modules/languages/siren-golang.el +++ b/modules/languages/siren-golang.el @@ -8,8 +8,8 @@ (require 'siren-dap) (require 'siren-flycheck) -(require 'siren-folding) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-projectile) (require 'siren-reformatter) (require 'siren-tree-sitter) @@ -36,9 +36,9 @@ (when (fboundp 'auto-highlight-symbol-mode) (auto-highlight-symbol-mode -1)) - (tree-sitter-mode +1) - (siren-folding) - (subword-mode +1)) + (tree-sitter-mode t) + (origami-mode t) + (subword-mode t)) (defun siren-define-golines-format-mode () ;; Setup golines formatter for manual use - on save formatting is handled by diff --git a/modules/languages/siren-haskell.el b/modules/languages/siren-haskell.el index 49bdd7c..d612158 100644 --- a/modules/languages/siren-haskell.el +++ b/modules/languages/siren-haskell.el @@ -6,7 +6,7 @@ ;;; Code: -(require 'siren-folding) +(require 'siren-hideshow) (use-package haskell-mode :general @@ -18,8 +18,8 @@ :preface (defun siren-haskell-mode-setup () - (siren-folding) - (subword-mode +1))) + (hs-minor-mode) + (subword-mode t))) (provide 'siren-haskell) ;;; siren-haskell.el ends here diff --git a/modules/languages/siren-js.el b/modules/languages/siren-js.el index c10b13a..c998f44 100644 --- a/modules/languages/siren-js.el +++ b/modules/languages/siren-js.el @@ -6,8 +6,8 @@ ;;; Code: -(require 'siren-folding) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-tree-sitter) (use-package js-mode @@ -32,9 +32,9 @@ indent-level width tab-width width)) - (tree-sitter-mode +1) - (subword-mode) - (siren-folding))) + (tree-sitter-mode t) + (subword-mode t) + (origami-mode t))) (use-package lsp-javascript :straight lsp-mode diff --git a/modules/languages/siren-json.el b/modules/languages/siren-json.el index a5153e2..b732583 100644 --- a/modules/languages/siren-json.el +++ b/modules/languages/siren-json.el @@ -6,9 +6,9 @@ ;;; Code: -(require 'siren-folding) (require 'siren-js) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-tree-sitter) (use-package json-mode @@ -31,7 +31,13 @@ json-reformat:indent-width width tab-width width)) - (tree-sitter-mode +1))) + (tree-sitter-mode t) + (origami-mode t)) + + :init + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(json-mode . origami-c-style-parser)))) (use-package lsp-json :straight lsp-mode diff --git a/modules/languages/siren-jsx.el b/modules/languages/siren-jsx.el index 294619b..e9a9aeb 100644 --- a/modules/languages/siren-jsx.el +++ b/modules/languages/siren-jsx.el @@ -6,7 +6,7 @@ ;;; Code: -(require 'siren-folding) +(require 'siren-origami) (require 'siren-prettier-js) (use-package rjsx-mode @@ -17,8 +17,13 @@ :preface (defun siren-rjsx-mode-setup () (prettier-js-mode +1) - (subword-mode +1) - (siren-folding))) + (origami-mode t) + (subword-mode t)) + + :init + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(rjsx-mode . origami-c-style-parser)))) (provide 'siren-jsx) ;;; siren-jsx.el ends here diff --git a/modules/languages/siren-php.el b/modules/languages/siren-php.el index f12133a..82be9c9 100644 --- a/modules/languages/siren-php.el +++ b/modules/languages/siren-php.el @@ -6,7 +6,7 @@ ;;; Code: -(require 'siren-folding) +(require 'siren-origami) (require 'siren-prettier-js) (require 'siren-rainbow) (require 'siren-tree-sitter) @@ -19,11 +19,11 @@ :preface (defun siren-php-mode-setup () - (tree-sitter-mode +1) - (prettier-js-mode) - (rainbow-mode +1) - (subword-mode +1) - (siren-folding))) + (tree-sitter-mode t) + (prettier-js-mode t) + (rainbow-mode t) + (subword-mode t) + (origami-mode t))) (provide 'siren-php) ;;; siren-php.el ends here diff --git a/modules/languages/siren-protobuf.el b/modules/languages/siren-protobuf.el index ea164c0..4947019 100644 --- a/modules/languages/siren-protobuf.el +++ b/modules/languages/siren-protobuf.el @@ -6,8 +6,9 @@ ;;; Code: +(require 'siren-clang-format) (require 'siren-flycheck) -(require 'siren-folding) +(require 'siren-origami) (require 'siren-prog-mode) (require 'siren-reformatter) @@ -29,14 +30,19 @@ (setq-local flycheck-checker 'protobuf-buf) (protobuf-format-on-save-mode +1)) - (subword-mode +1) - (siren-folding)) + (subword-mode t) + (origami-mode t)) (defun flycheck-protobuf-buf-project-root (&optional _checker) "Return the nearest directory holding the buf.yaml configuration." (and buffer-file-name (locate-dominating-file buffer-file-name "buf.yaml"))) + :init + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(protobuf-mode . origami-c-style-parser))) + :config (unbind-key "C-c C-u" 'c-mode-base-map) diff --git a/modules/languages/siren-ruby.el b/modules/languages/siren-ruby.el index 57f8aa9..244804d 100644 --- a/modules/languages/siren-ruby.el +++ b/modules/languages/siren-ruby.el @@ -7,7 +7,7 @@ ;;; Code: (require 'siren-dap) -(require 'siren-folding) +(require 'siren-hideshow) (require 'siren-lsp) (require 'siren-projectile) (require 'siren-string-inflection) @@ -60,9 +60,9 @@ ruby-use-smie t tab-width 2) - (tree-sitter-mode +1) - (siren-folding) - (subword-mode +1)) + (tree-sitter-mode t) + (hs-minor-mode t) + (subword-mode t)) :init (with-eval-after-load "projectile" diff --git a/modules/languages/siren-rust.el b/modules/languages/siren-rust.el index eae9398..3e1ae65 100644 --- a/modules/languages/siren-rust.el +++ b/modules/languages/siren-rust.el @@ -6,8 +6,8 @@ ;;; Code: -(require 'siren-folding) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-tree-sitter) (use-package rust-mode @@ -25,10 +25,15 @@ (defun siren-rust-mode-setup () (setq-local rust-format-on-save t) - (tree-sitter-mode +1) + (tree-sitter-mode t) (lsp-deferred) - (siren-folding) - (subword-mode +1))) + (origami-mode t) + (subword-mode t)) + + :init + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(rust-mode . origami-c-style-parser)))) (use-package cargo :hook (rust-mode . cargo-minor-mode)) diff --git a/modules/languages/siren-typescript.el b/modules/languages/siren-typescript.el index 22a63e3..2162148 100644 --- a/modules/languages/siren-typescript.el +++ b/modules/languages/siren-typescript.el @@ -7,8 +7,8 @@ ;;; Code: (require 'siren-flycheck) -(require 'siren-folding) (require 'siren-lsp) +(require 'siren-origami) (require 'siren-prettier-js) (require 'siren-tree-sitter) (require 'siren-web-mode) @@ -32,8 +32,13 @@ tab-width width)) (lsp-deferred) - (subword-mode +1) - (siren-folding))) + (subword-mode t) + (origami-mode t)) + + :init + (with-eval-after-load 'origami + (add-to-list 'origami-parser-alist + '(typescript-mode . origami-c-style-parser)))) (use-package tide :hook @@ -52,11 +57,11 @@ (setq-local flycheck-check-syntax-automatically '(save mode-enabled) company-tooltip-align-annotations t) - (tree-sitter-mode +1) - (prettier-js-mode +1) - (flycheck-mode +1) - (eldoc-mode +1) - (tide-hl-identifier-mode +1)) + (tree-sitter-mode t) + (prettier-js-mode t) + (flycheck-mode t) + (eldoc-mode t) + (tide-hl-identifier-mode t)) :init (add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode)) diff --git a/modules/languages/siren-web-mode.el b/modules/languages/siren-web-mode.el index ad450f8..7eda468 100644 --- a/modules/languages/siren-web-mode.el +++ b/modules/languages/siren-web-mode.el @@ -7,7 +7,7 @@ ;;; Code: (require 'siren-display-fill-column) -(require 'siren-folding) +(require 'siren-hideshow) (use-package web-mode :mode @@ -39,9 +39,9 @@ (when (version< emacs-version "27.0") (siren-display-fill-column -1)) - (siren-folding) - (subword-mode +1) - (lsp-deferred))) + (lsp-deferred) + (hs-minor-mode t) + (subword-mode t))) (provide 'siren-web-mode) ;;; siren-web-mode.el ends here diff --git a/straight/versions/default.el b/straight/versions/default.el index 3635334..c638872 100644 --- a/straight/versions/default.el +++ b/straight/versions/default.el @@ -129,6 +129,7 @@ ("loop.el" . "9db6372791bbd0cf3fa907ed0ae3e6b7bcf6cc57") ("lsp-docker" . "a0d7cbf80652429c0be4dc7d39e1887ba4691ec7") ("lsp-mode" . "5a62d4aa1b05fd14e338c47dad976b0b53c4bbc0") + ("lsp-origami" . "7df9c91a309aa4229bec41f109920b37c4197618") ("lsp-treemacs" . "9859326df6b8e8c954a3c227e53b6878e54aaae8") ("lsp-ui" . "9a8983d95d823ae62e5f842a4bd433c860131398") ("lua-mode" . "5a9bee8d5fc978dc64fcb677167417010321ba65") @@ -151,6 +152,7 @@ ("ob-go" . "2067ed55f4c1d33a43cb3f6948609d240a8915f5") ("ob-http" . "b1428ea2a63bcb510e7382a1bf5fe82b19c104a7") ("ob-mermaid" . "b4ce25699e3ebff054f523375d1cf5a17bd0dbaf") + ("origami.el" . "e558710a975e8511b9386edc81cd6bdd0a5bda74") ("osx-trash" . "af74a2055a15bf4182d8196600f7decd66eec634") ("ox-gfm" . "99f93011b069e02b37c9660b8fcb45dab086a07f") ("ox-pandoc" . "f8eac5e5692fc44a4724ada43191e7c28a1ccf30")