mirror of
https://github.com/jimeh/.emacs.d.git
synced 2026-02-19 13:46:41 +00:00
feat(editor): improve code folding with origami
Add and configure origami, and enable it for majro modes where it seems to do a good job, and keep using hideshow for other major modes.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
27
modules/editor/siren-hideshow.el
Normal file
27
modules/editor/siren-hideshow.el
Normal file
@@ -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
|
||||
21
modules/editor/siren-origami.el
Normal file
21
modules/editor/siren-origami.el
Normal file
@@ -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
|
||||
@@ -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")))
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user