Let's see if this fixes my ligature problem on Linux
This commit is contained in:
		
							parent
							
								
									ea2b5f9355
								
							
						
					
					
						commit
						b064c6310e
					
				
					 1 changed files with 12 additions and 31 deletions
				
			
		| 
						 | 
					@ -159,6 +159,7 @@ What would be nice, is that if I end quotes using the functions above, that if I
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Can we do the same with ellipses?
 | 
					Can we do the same with ellipses?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (defun ha-insert-dot-or-ellipsis ()
 | 
					  (defun ha-insert-dot-or-ellipsis ()
 | 
				
			||||||
    "Insert a `.' unless two have already be inserted.
 | 
					    "Insert a `.' unless two have already be inserted.
 | 
				
			||||||
| 
						 | 
					@ -175,8 +176,6 @@ Can we do the same with ellipses?
 | 
				
			||||||
       (t                         (insert ".")))))
 | 
					       (t                         (insert ".")))))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (define-key org-mode-map "." #'ha-insert-dot-or-ellipsis)
 | 
					  (define-key org-mode-map "." #'ha-insert-dot-or-ellipsis)
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
After reading [[https://www.punctuationmatters.com/en-dash-em-dash-hyphen][this essay]], I’ve gotten obsessive with elongating dashes. In this case, typing a dash surrounded with spaces, e.g. something – like this, we convert them to [[https://www.compart.com/en/unicode/U+2013][en dash]]. But if I type two dashes in a row—which identifies an emphasized clause—I can convert it directly to [[https://www.compart.com/en/unicode/U+2014][em dash]]. Continually typing a dash replaces that character with longer and longer dashes⸺
 | 
					After reading [[https://www.punctuationmatters.com/en-dash-em-dash-hyphen][this essay]], I’ve gotten obsessive with elongating dashes. In this case, typing a dash surrounded with spaces, e.g. something – like this, we convert them to [[https://www.compart.com/en/unicode/U+2013][en dash]]. But if I type two dashes in a row—which identifies an emphasized clause—I can convert it directly to [[https://www.compart.com/en/unicode/U+2014][em dash]]. Continually typing a dash replaces that character with longer and longer dashes⸺
 | 
				
			||||||
| 
						 | 
					@ -219,9 +218,11 @@ After reading [[https://www.punctuationmatters.com/en-dash-em-dash-hyphen][this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (define-key org-mode-map "-" #'ha-insert-long-dash)
 | 
					  (define-key org-mode-map "-" #'ha-insert-long-dash)
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The /issue/ is how do we deal with org’s dashed bullets? In this case, we want to insert an actual dash, but elsewhere, we /visually/ display the dash as a more emphasized glyph.
 | 
					The /issue/ is how do we deal with org’s dashed bullets? In this case, we want to insert an actual dash, but elsewhere, we /visually/ display the dash as a more emphasized glyph.
 | 
				
			||||||
** Ligatures
 | 
					** Ligatures
 | 
				
			||||||
Well, using the =composition-function-table=, we can finally get some ligatures to improve readability without Harfbuzz.
 | 
					Well, using the =composition-function-table=, we can finally get some ligatures to improve readability without Harfbuzz.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (defun ha-textual-litagures ()
 | 
					  (defun ha-textual-litagures ()
 | 
				
			||||||
    "Non-programming litagures for readable and text-derived modes."
 | 
					    "Non-programming litagures for readable and text-derived modes."
 | 
				
			||||||
| 
						 | 
					@ -230,7 +231,8 @@ Well, using the =composition-function-table=, we can finally get some ligatures
 | 
				
			||||||
    (set-char-table-range composition-function-table
 | 
					    (set-char-table-range composition-function-table
 | 
				
			||||||
                          ?T '(["\\(?:Th\\)" 0 font-shape-gstring])))
 | 
					                          ?T '(["\\(?:Th\\)" 0 font-shape-gstring])))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  (add-hook 'text-mode-hook #'ha-textual-litagures)
 | 
					  (when (ha-running-on-macos?)
 | 
				
			||||||
 | 
					    (add-hook 'text-mode-hook #'ha-textual-litagures))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
This is now fine and ffantastic!
 | 
					This is now fine and ffantastic!
 | 
				
			||||||
* Org Beautify
 | 
					* Org Beautify
 | 
				
			||||||
| 
						 | 
					@ -287,6 +289,7 @@ And decrease the prominence of the property drawers:
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
* Org Modern
 | 
					* Org Modern
 | 
				
			||||||
The [[https://github.com/minad/org-modern][org-modern]] project attempts to do a lot of what I was doing in this file.
 | 
					The [[https://github.com/minad/org-modern][org-modern]] project attempts to do a lot of what I was doing in this file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
  (use-package org-modern
 | 
					  (use-package org-modern
 | 
				
			||||||
    :straight (:host github :repo "minad/org-modern")
 | 
					    :straight (:host github :repo "minad/org-modern")
 | 
				
			||||||
| 
						 | 
					@ -296,9 +299,11 @@ The [[https://github.com/minad/org-modern][org-modern]] project attempts to do a
 | 
				
			||||||
    :custom
 | 
					    :custom
 | 
				
			||||||
    (org-modern-table nil))
 | 
					    (org-modern-table nil))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
I like the smaller code blocks as well as the <2022-06-16 Thu> timestamps.
 | 
					I like the smaller code blocks as well as the <2022-06-16 Thu> timestamps.
 | 
				
			||||||
* Checkboxes
 | 
					* 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. To make completed tasks more distinguishable, he changed the colors:
 | 
					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. To make completed tasks more distinguishable, he changed the colors:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					#+begin_src emacs-lisp
 | 
				
			||||||
(defface org-checkbox-done-text
 | 
					(defface org-checkbox-done-text
 | 
				
			||||||
  '((t (:foreground "#71696A" :strike-through t)))
 | 
					  '((t (:foreground "#71696A" :strike-through t)))
 | 
				
			||||||
| 
						 | 
					@ -324,7 +329,9 @@ The [[https://github.com/TonCherAmi/org-padding][org-padding]] project looks pla
 | 
				
			||||||
          org-padding-heading-padding-alist
 | 
					          org-padding-heading-padding-alist
 | 
				
			||||||
          '((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))))
 | 
					          '((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))))
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
However, I'm just going to have to write a function to clean this.
 | 
					However, I'm just going to have to write a function to clean this.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+begin_src emacs-lisp :tangle no
 | 
					#+begin_src emacs-lisp :tangle no
 | 
				
			||||||
  (defun ha-remove-superfluous-org-padding ()
 | 
					  (defun ha-remove-superfluous-org-padding ()
 | 
				
			||||||
    (interactive)
 | 
					    (interactive)
 | 
				
			||||||
| 
						 | 
					@ -399,39 +406,13 @@ Used to use [[https://github.com/takaxp/org-tree-slide][org-tree-slide]] for sho
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
* Technical Artifacts                               :noexport:
 | 
					* Technical Artifacts                               :noexport:
 | 
				
			||||||
Note, according to [[https://www.reddit.com/r/emacs/comments/vahsao/orgmode_use_capitalized_property_keywords_or/][this discussion]] (and especially [[https://scripter.co/org-keywords-lower-case/][this essay]]), I’m switching over to lower-case version of org properties. Using this helper function:
 | 
					Note, according to [[https://www.reddit.com/r/emacs/comments/vahsao/orgmode_use_capitalized_property_keywords_or/][this discussion]] (and especially [[https://scripter.co/org-keywords-lower-case/][this essay]]), I’m switching over to lower-case version of org properties. Using this helper function:
 | 
				
			||||||
#+begin_src emacs-lisp
 | 
					 | 
				
			||||||
  (defun modi/lower-case-org-keywords ()
 | 
					 | 
				
			||||||
    "Lower case Org keywords and block identifiers.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Example: \"#+TITLE\" -> \"#+title\"
 | 
					 | 
				
			||||||
           \"#+BEGIN_EXAMPLE\" -> \"#+begin_example\"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Inspiration:
 | 
					 | 
				
			||||||
  https://code.orgmode.org/bzg/org-mode/commit/13424336a6f30c50952d291e7a82906c1210daf0."
 | 
					 | 
				
			||||||
    (interactive)
 | 
					 | 
				
			||||||
    (save-excursion
 | 
					 | 
				
			||||||
      (goto-char (point-min))
 | 
					 | 
				
			||||||
      (let ((case-fold-search nil)
 | 
					 | 
				
			||||||
            (count 0)
 | 
					 | 
				
			||||||
            ;; All keywords can be found with this expression:
 | 
					 | 
				
			||||||
            ;; (org-keyword-re "\\(?1:#\\+[A-Z_]+\\(?:_[[:alpha:]]+\\)*\\)\\(?:[ :=~’”]\\|$\\)")
 | 
					 | 
				
			||||||
            ;; Match examples: "#+foo bar", "#+foo:", "=#+foo=", "~#+foo~",
 | 
					 | 
				
			||||||
            ;;                 "‘#+foo’", "“#+foo”", ",#+foo bar",
 | 
					 | 
				
			||||||
            ;;                 "#+FOO_bar<eol>", "#+FOO<eol>".
 | 
					 | 
				
			||||||
            ;;
 | 
					 | 
				
			||||||
            ;; Perhap I want the #+begin_src and whatnot:
 | 
					 | 
				
			||||||
            (org-keyword-re (rx line-start (optional (zero-or-more space))
 | 
					 | 
				
			||||||
                                "#+" (group (or "BEGIN" "END") "_" (one-or-more alpha)))))
 | 
					 | 
				
			||||||
        (while (re-search-forward org-keyword-re nil :noerror)
 | 
					 | 
				
			||||||
          (setq count (1+ count))
 | 
					 | 
				
			||||||
          (replace-match (downcase (match-string-no-properties 1)) :fixedcase nil nil 1))
 | 
					 | 
				
			||||||
        (message "Lower-cased %d matches" count))))
 | 
					 | 
				
			||||||
#+end_src
 | 
					 | 
				
			||||||
Let's provide a name so we can =require= this file:
 | 
					Let's provide a name so we can =require= this file:
 | 
				
			||||||
#+begin_src emacs-lisp :exports none
 | 
					#+begin_src emacs-lisp :exports none
 | 
				
			||||||
  (provide 'ha-org-word-processor)
 | 
					  (provide 'ha-org-word-processor)
 | 
				
			||||||
  ;;; ha-org-word-processor.el ends here
 | 
					  ;;; ha-org-word-processor.el ends here
 | 
				
			||||||
#+end_src
 | 
					#+end_src
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Before you can build this on a new system, make sure that you put the cursor over any of these properties, and hit: ~C-c C-c~
 | 
					Before you can build this on a new system, make sure that you put the cursor over any of these properties, and hit: ~C-c C-c~
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#+description: A literate programming file for making Org file more readable.
 | 
					#+description: A literate programming file for making Org file more readable.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue