aboutsummaryrefslogtreecommitdiffstats
path: root/oni-org/oni-org.el
diff options
context:
space:
mode:
authorGravatar Tom Willemse2023-06-01 22:46:52 -0700
committerGravatar Tom Willemse2023-06-01 22:46:52 -0700
commite54b77c8d7f5715fab3424f3332fe1fbe0210577 (patch)
tree1e14ac2ed0305f1a24ff8de336fc7340983867d1 /oni-org/oni-org.el
parent4ab9d3c4b3c7ff057b68cc45e39730a406a37612 (diff)
downloademacs-config-e54b77c8d7f5715fab3424f3332fe1fbe0210577.tar.gz
emacs-config-e54b77c8d7f5715fab3424f3332fe1fbe0210577.zip
[oni-org] Automatically hide source code blocks marked as hidden
Source: https://emacs.stackexchange.com/questions/44914/choose-individual-startup-visibility-of-org-modes-source-blocks
Diffstat (limited to 'oni-org/oni-org.el')
-rw-r--r--oni-org/oni-org.el19
1 files changed, 18 insertions, 1 deletions
diff --git a/oni-org/oni-org.el b/oni-org/oni-org.el
index 55e88c8..f401f60 100644
--- a/oni-org/oni-org.el
+++ b/oni-org/oni-org.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2023.0530.174013
+;; Version: 2023.0601.224638
;; Package-Requires: (oni-yasnippet oni-alert oni-hydra org org-bullets org-edna diminish all-the-icons olivetti form-feed org-pretty-table)
;; This program is free software; you can redistribute it and/or modify
@@ -1210,5 +1210,22 @@ otherwise return ‘oni-org-link-nonexistent-file’."
(org-link-set-parameters "file" :face #'oni-org-file-face-selector)
+;;; Automatically hide code blocks that specify they should be hidden.
+;; Inspired by
+;; https://emacs.stackexchange.com/questions/44914/choose-individual-startup-visibility-of-org-modes-source-blocks
+
+(defun oni-org-hide-hidden-code-blocks ()
+ "Hide any code blocks that have been marked as hidden.
+This is done by adding a ‘:hidden t’ header argument to the code block."
+ (interactive)
+ (org-block-map
+ (lambda ()
+ (let ((element (org-element-at-point)))
+ (when (and (equal (org-element-type element) 'src-block)
+ (map-elt (nth 2 (org-babel-get-src-block-info)) :hidden))
+ (org-fold-hide-block-toggle t nil element))))))
+
+(add-hook 'org-mode-hook #'oni-org-hide-hidden-code-blocks)
+
(provide 'oni-org)
;;; oni-org.el ends here