Reverted the org-modern vs. org-notebook
Just like how the Notebook looks.
This reverts commit 6237637f90
.
This commit is contained in:
parent
e06ccd08b9
commit
802b1ea8ee
1 changed files with 118 additions and 27 deletions
|
@ -38,7 +38,6 @@ Since I use ellipsis in my writing… to /change/ how org renders a collapsed he
|
||||||
org-src-fontify-natively t ; Pretty code blocks
|
org-src-fontify-natively t ; Pretty code blocks
|
||||||
org-hide-emphasis-markers t)
|
org-hide-emphasis-markers t)
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Oh, and as I indent lists, they should change the /bulleting/ in a particular sequence. If I begin with an =*= asterisk, I walk down the chain, but with the dashed bullets (my default choice), I just stay with dashed bullets. Numeric bullets should cycle:
|
Oh, and as I indent lists, they should change the /bulleting/ in a particular sequence. If I begin with an =*= asterisk, I walk down the chain, but with the dashed bullets (my default choice), I just stay with dashed bullets. Numeric bullets should cycle:
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
@ -148,6 +147,78 @@ This process allows us to use =variable-pitch= mode for all org documents.
|
||||||
(use-package org
|
(use-package org
|
||||||
:hook (org-mode . variable-pitch-mode))
|
:hook (org-mode . variable-pitch-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
* Superstar
|
||||||
|
Now that headers are noticeable, I have no reason to see a number of asterisks. I would think that this would work:
|
||||||
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
|
(setq org-hide-leading-stars t)
|
||||||
|
#+END_SRC
|
||||||
|
But since it doesn’t, I need to roll my own. I add a hook to standard Org, and since this is a Lisp-2, I can get away with using the same name as the variable:
|
||||||
|
#+BEGIN_SRC emacs-lisp :tangle no
|
||||||
|
(defun org-hide-leading-stars ()
|
||||||
|
(let* ((keyword
|
||||||
|
`(("^\\(\\*+ \\)\\s-*\\S-" ; Do not hide empty headings!
|
||||||
|
(1 (put-text-property (match-beginning 1) (match-end 1) 'invisible t)
|
||||||
|
nil)))))
|
||||||
|
(font-lock-add-keywords nil keyword)))
|
||||||
|
|
||||||
|
(add-hook 'org-mode-hook 'org-hide-leading-stars)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Once I used the [[https://github.com/sabof/org-bullets][org-bullets]] package, but we've replaced it with [[https://github.com/integral-dw/org-superstar-mode][org-superstar-mode]], so the following is an improvement, especially with the sub-bullets:
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(use-package org-superstar
|
||||||
|
:after org
|
||||||
|
:straight (:type git :protocol ssh :host github :repo "integral-dw/org-superstar-mode")
|
||||||
|
:hook (org-mode . org-superstar-mode)
|
||||||
|
:init
|
||||||
|
(setq ; org-superstar-headline-bullets-list '("▶")
|
||||||
|
org-superstar-special-todo-items nil
|
||||||
|
org-superstar-todo-bullet-alist t
|
||||||
|
org-superstar-prettify-item-bullets t
|
||||||
|
org-superstar-item-bullet-alist '((42 . "●") ; *
|
||||||
|
(43 . "○") ; +
|
||||||
|
(45 . "•"))))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
If this works, then we get the prettier bulleted list:
|
||||||
|
* Top bullets
|
||||||
|
* Plus bullets:
|
||||||
|
+ Apples
|
||||||
|
+ Oranges
|
||||||
|
+ Bananas
|
||||||
|
* Minus bullets:
|
||||||
|
- Dogs
|
||||||
|
- Cats
|
||||||
|
- Birds
|
||||||
|
* Checkboxes
|
||||||
|
According to an idea by [[https://jft.home.blog/2019/07/17/use-unicode-symbol-to-display-org-mode-checkboxes/][Huy Trần]], (and expanded by the [[https://github.com/minad/org-modern][org-modern]] project), we can prettify the list checkboxes as well:
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun ha-org-prettify-checkboxes ()
|
||||||
|
"Beautify Org Checkbox Symbol"
|
||||||
|
(push '("[ ]" . "☐") prettify-symbols-alist)
|
||||||
|
(push '("[X]" . "☐✓") prettify-symbols-alist)
|
||||||
|
(push '("[-]" . "☐-") prettify-symbols-alist)
|
||||||
|
(prettify-symbols-mode))
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
And now we can attach it to a newly loaded org files:
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(add-hook 'org-mode-hook 'ha-org-prettify-checkboxes)
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
To make it more distinguishable, he also changed the colors:
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defface org-checkbox-done-text
|
||||||
|
'((t (:foreground "#71696A" :strike-through t)))
|
||||||
|
"Face for the text part of a checked org-mode checkbox.")
|
||||||
|
|
||||||
|
(font-lock-add-keywords
|
||||||
|
'org-mode
|
||||||
|
`(("^[ \t]*\\(?:[-+*]\\|[0-9]+[).]\\)[ \t]+\\(\\(?:\\[@\\(?:start:\\)?[0-9]+\\][ \t]*\\)?\\[\\(?:X\\|\\([0-9]+\\)/\\2\\)\\][^\n]*\n\\)"
|
||||||
|
1 'org-checkbox-done-text prepend))
|
||||||
|
'append)
|
||||||
|
#+END_SRC
|
||||||
* SVG-Based Prettiness
|
* SVG-Based Prettiness
|
||||||
While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[https://github.com/rougier/notebook-mode][notebook project]], I really just want to steal their [[https://github.com/rougier/svg-lib][svg-lib project]] that allows me to create and display various SVG objects, namely tags, progress bars, progress pies and icons. Each object fits nicely in a text buffer ensuring width is an integer multiple of character width.
|
While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[https://github.com/rougier/notebook-mode][notebook project]], I really just want to steal their [[https://github.com/rougier/svg-lib][svg-lib project]] that allows me to create and display various SVG objects, namely tags, progress bars, progress pies and icons. Each object fits nicely in a text buffer ensuring width is an integer multiple of character width.
|
||||||
|
|
||||||
|
@ -159,12 +230,12 @@ While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[
|
||||||
:straight (:type git :protocol ssh :host github :repo "rougier/svg-tag-mode")
|
:straight (:type git :protocol ssh :host github :repo "rougier/svg-tag-mode")
|
||||||
:config
|
:config
|
||||||
(setq svg-tag-tags
|
(setq svg-tag-tags
|
||||||
'(("TODO:" . ((lambda (tag) (svg-tag-make "TODO" :face 'org-tag
|
'(("TODO:" . ((lambda (tag) (svg-tag-make "TODO" :face 'org-todo
|
||||||
:radius 2 :inverse t
|
:radius 2 :inverse t
|
||||||
:margin 0 :padding 0 :height 0.8))))
|
:margin 0 :padding 0 :height 0.8))))
|
||||||
("NOTE:" . ((lambda (tag) (svg-tag-make "NOTE" :face 'font-lock-comment-face
|
("NOTE:" . ((lambda (tag) (svg-tag-make "NOTE" :face 'org-done
|
||||||
:inverse nil :margin 0 :radius 2 :height 0.8))))
|
:inverse nil :margin 0 :radius 2 :height 0.8))))
|
||||||
; The org-modern overrides this:
|
; The notebook-mode overrides this:
|
||||||
; ("#\\+RESULTS:" . ((lambda (tag) (svg-tag-make tag :beg 0 :end -1 :height 0.6))))
|
; ("#\\+RESULTS:" . ((lambda (tag) (svg-tag-make tag :beg 0 :end -1 :height 0.6))))
|
||||||
("\\(:[A-Z-]+\\):[a-zA-Z#0-9]+:" . ((lambda (tag)
|
("\\(:[A-Z-]+\\):[a-zA-Z#0-9]+:" . ((lambda (tag)
|
||||||
(svg-tag-make tag :beg 1 :inverse t
|
(svg-tag-make tag :beg 1 :inverse t
|
||||||
|
@ -175,39 +246,59 @@ While I'm intrigued with [[https://github.com/rougier][Nicolas P. Rougier]]'s [[
|
||||||
("\\(:[A-Z-]+:\\)[ \n]" . ((lambda (tag) (svg-tag-make tag :beg 1 :end -1 :margin 0))))))
|
("\\(:[A-Z-]+:\\)[ \n]" . ((lambda (tag) (svg-tag-make tag :beg 1 :end -1 :margin 0))))))
|
||||||
(global-svg-tag-mode 1))
|
(global-svg-tag-mode 1))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
What does do? Here are some examples:
|
|
||||||
TODO: Marks comments for tasks (this can be in source files too).
|
|
||||||
NOTE: Highlights comments and other notes.
|
|
||||||
:PROP:tag: are highlighted as two parts of the same tag
|
|
||||||
And :TAG: with colons are highlighted, which include :PROPERTY: drawers.
|
|
||||||
|
|
||||||
When the project is more complete, I need to dive into this:
|
What does do? Here are some examples:
|
||||||
#+BEGIN_SRC emacs-lisp :tangle no
|
- TODO: Marks comments for tasks (this can be in source files too).
|
||||||
|
- NOTE: Highlights comments and other notes.
|
||||||
|
- :PROP:tag: are highlighted as two parts of the same tag
|
||||||
|
- And :TAG: with colons are highlighted, which include :PROPERTY: drawers.
|
||||||
|
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package notebook
|
(use-package notebook
|
||||||
:straight (:type git :protocol ssh :host github :repo "rougier/notebook")
|
:straight (:type git :protocol ssh :host github :repo "rougier/notebook")
|
||||||
:after org
|
:after org
|
||||||
:hook (org-mode . notebook-mode))
|
:hook (org-mode . notebook-mode))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
* Padding
|
||||||
|
The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks places extra space before and after headers and blocks (essentially leading), to create a more word-processor-y experience. Great idea, however, I have spent a lot of extra time entering blank lines before and after my headers and blocks:
|
||||||
|
|
||||||
In the interim, let’s use [[https://github.com/minad/org-modern][org-modern]] mode:
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(use-package org-modern
|
(use-package org-padding
|
||||||
:straight (:type git :protocol ssh :host github :repo "minad/org-modern")
|
:straight (:type git :protocol ssh :host github :repo "TonCherAmi/org-padding")
|
||||||
:custom (org-modern-label-border 0.1
|
:hook
|
||||||
org-modern-variable-pitch t
|
(org-mode . org-padding-mode)
|
||||||
org-modern-tag nil ; Letting svg-tag do this
|
:config
|
||||||
org-modern-list . '((?+ . "◦")
|
(setq org-padding-block-begin-line-padding '(0.5 . 0.3)
|
||||||
(?- . "•")
|
org-padding-block-end-line-padding '(0.1 . 0.5)
|
||||||
(?* . "●")))
|
org-padding-heading-padding-alist
|
||||||
:config
|
'((4.0 . 1.5) (3.0 . 0.5) (3.0 . 0.5) (3.0 . 0.5) (2.5 . 0.5) (2.0 . 0.5) (1.5 . 0.5) (0.5 . 0.5))))
|
||||||
(setq org-auto-align-tags nil
|
|
||||||
org-tags-column 0)
|
|
||||||
:hook
|
|
||||||
(org-mode . org-modern-mode)
|
|
||||||
(org-agenda-finalize . org-modern-agenda))
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
However, I'm just going to have to write a function to clean this.
|
||||||
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
(defun ha-remove-superfluous-org-padding ()
|
||||||
|
(interactive)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(ha-remove-org-header-padding)
|
||||||
|
(goto-char (point-min))
|
||||||
|
(ha-remove-org-block-padding))
|
||||||
|
|
||||||
I liked the approach to the [[https://github.com/TonCherAmi/org-padding][org-padding]] project in how it allowed granular tweaks to add extra padding. This package doesn’t work with =org-modern=, but I may look more into it later.
|
(defun ha-remove-org-header-padding ()
|
||||||
|
;; (goto-char (point-min))
|
||||||
|
(while (re-search-forward (rx (optional bol (zero-or-more space) eol "\n")
|
||||||
|
(group bol (one-or-more "*") (one-or-more space) (one-or-more any) "\n")
|
||||||
|
(optional bol (zero-or-more space) eol "\n")) nil t)
|
||||||
|
(replace-match (match-string 1) nil :no-error)))
|
||||||
|
|
||||||
|
(defun ha-remove-org-block-padding ()
|
||||||
|
;; (goto-char (point-min))
|
||||||
|
(while (re-search-forward (rx (optional bol (zero-or-more space) eol "\n")
|
||||||
|
(group bol (zero-or-more space) "#+BEGIN" (one-or-more any) eol "\n"
|
||||||
|
(zero-or-more (group bol (zero-or-more any) eol "\n"))
|
||||||
|
bol (zero-or-more space) "#+END" (zero-or-more any) eol "\n")
|
||||||
|
(optional bol (zero-or-more space) eol "\n")) nil t)
|
||||||
|
(replace-match (match-string 1) nil :no-error)))
|
||||||
|
#+END_SRC
|
||||||
|
Now that is some complicated regular expressions.
|
||||||
* Pasting
|
* Pasting
|
||||||
I like the idea that I will paste HTML text from the clipboard and have it converted to org-formatted text:
|
I like the idea that I will paste HTML text from the clipboard and have it converted to org-formatted text:
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
|
|
Loading…
Reference in a new issue