Commit caef42513786

Vincent Demeester <vincent@sbr.pm>
2020-04-06 15:35:05
emacs.org: add base typeface configurations
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 326725b
Changed files (2)
docs
tools
emacs
docs/emacs.org
@@ -488,6 +488,18 @@
 
 #+INCLUDE: "../tools/emacs/config/01-server.el" src emacs-lisp :range-begin "UseServer" :range-end "-UseServer" :lines "4-6"
 
+** Base typeface configurations
+:PROPERTIES:
+:CUSTOM_ID: h:117f0725-0708-43b9-b191-0956ad0a0a7a
+:END:
+
+Let's configure the font that Emacs will use. In the emacs world this is call =face=. I am
+a big fan of the [[https://design.ubuntu.com/font/][=Ubuntu= fonts]], so this is the set of font family I use, if available. If
+the =Ubuntu= font are not available on the system, I am just letting Emacs start with its
+default font.
+
+#+INCLUDE: "../tools/emacs/config/setup-style.el" src emacs-lisp :range-begin "TypeFaceConfiguration" :range-end "-TypeFaceConfiguration" :lines "7-47"
+
 * TODO Selection candidates and search methods
 :PROPERTIES:
 :CUSTOM_ID: h:4323a022-5419-48f7-acf9-7af94e43eddf
@@ -554,7 +566,7 @@
 
 First, let's define some basic constants, mainly on how my main =org= folder is organized.
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgConstants" :range-end "-OrgConstants" :lines "4-15"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgConstants" :range-end "-OrgConstants" :lines "7-18"
 
 In a nutshell, I am currently trying the following organization, with =~/desktop/org/= as
 the base of almost all =org-mode= things:
@@ -585,7 +597,7 @@
 =inbox.org=. For this, we can use the emacs [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Registers.html][registers]] and more accurately the [[https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Registers.html#File-Registers][file
 registers]].
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgRegisters" :range-end "-OrgRegisters" :lines "18-23"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgRegisters" :range-end "-OrgRegisters" :lines "21-26"
 
 With this, I can jump to the inbox with ~C-x r j i~, to the journal using ~C-x r j j~, โ€ฆ
 
@@ -678,7 +690,7 @@
 /The =ensure org-plus-contrib= is there to make sure I am loading the =org= module from my
 nix configuration and not the built-in =org= module (that might lag in terms of version)/
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgMain" :range-end "-OrgMain" :lines "26-98"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgMain" :range-end "-OrgMain" :lines "29-104"
 
 I've set-up an =org-mode= hook to add few modes to the default setup.
 - I am really annoyed by trailing white-space so I want them to be shown
@@ -687,15 +699,15 @@
   + I turn on =auto-revert-mode= so that the buffer is always up-to-date.
   + I like to have header indented, so I'm enabling =org-indent-mode=.
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgHook" :range-end "-OrgHook" :lines "101-110"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgHook" :range-end "-OrgHook" :lines "107-116"
 
 Let's also use =org-id=โ€ฆ
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgId" :range-end "-OrgId" :lines "113-142"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgId" :range-end "-OrgId" :lines "119-148"
 
 โ€ฆ and =org-crypt= (for encrypted =org-mode= files).
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCrypt" :range-end "-OrgCrypt" :lines "145-150"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCrypt" :range-end "-OrgCrypt" :lines "151-156"
 
 **** TODO Refiling
 :PROPERTIES:
@@ -730,11 +742,11 @@
 agenda views. This allows to group things and overall set-up the agenda view I want. This
 agenda view uses the =n= key.
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgAgenda" :range-end "-OrgAgenda" :lines "153-203"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgAgenda" :range-end "-OrgAgenda" :lines "159-208"
 
 Let's try to get my work calendar entries in my agenda too. It is a little bit tricky ๐Ÿ‘ผ.
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgGcal" :range-end "-OrgGcal" :lines "206-220"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgGcal" :range-end "-OrgGcal" :lines "211-225"
 
 *** Habits                                                         :ATTACH:
 :PROPERTIES:
@@ -766,14 +778,14 @@
 
 [[./images/2020-02-29-14-41-59.png]]
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgHabit" :range-end "-OrgHabit" :lines "223-228"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgHabit" :range-end "-OrgHabit" :lines "228-233"
 
 *** TODO Sources
 :PROPERTIES:
 :CUSTOM_ID: h:82c3b800-9d80-408d-b3b6-54dc15b0590c
 :END:
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgSrc" :range-end "-OrgSrc" :lines "231-238"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgSrc" :range-end "-OrgSrc" :lines "236-243"
 
 *** TODO Capture
 :PROPERTIES:
@@ -790,7 +802,7 @@
 options. This is very interesting when you want to group some capture template together
 (like templates related to /work/, โ€ฆ).
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureStart" :range-end "-OrgCaptureStart" :lines "241-245"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureStart" :range-end "-OrgCaptureStart" :lines "246-250"
 
 Some of my capture template are big and hard to read if embedded in the =emacs-lisp=
 code. The good thing is that =org-mode= is able to load the template from files too ๐Ÿ’ƒ.
@@ -798,44 +810,44 @@
 Here is a list of my templates:
 - Default :: Store a link (mainly used with =org-protocol=) and take a random note
 
-  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureOldTemplate" :range-end "-OrgCaptureOldTemplate" :lines "248-257"
+  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureOldTemplate" :range-end "-OrgCaptureOldTemplate" :lines "253-262"
 
 - Tasks :: /work/ task, like reviewing a PR, or cleaning a folder.
 
-  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureTask" :range-end "-OrgCaptureTask" :lines "260-272"
+  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureTask" :range-end "-OrgCaptureTask" :lines "265-277"
 
 - journaling :: As I use =org-mode= for my /journal/ too, I need capture entry for
   it. I currently have two types of journal entry :
 
-  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureJournalBase" :range-end "-OrgCaptureJournalBase" :lines "275-277"
+  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureJournalBase" :range-end "-OrgCaptureJournalBase" :lines "280-282"
 
   + standard: one title and some text
 
     #+INCLUDE: "../tools/emacs/etc/orgmode/journal.org" src org
 
-    #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureJournalEntry" :range-end "-OrgCaptureJournalEntry" :lines "280-287"
+    #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureJournalEntry" :range-end "-OrgCaptureJournalEntry" :lines "285-292"
 
   + worklog: related to work, to be able to say what I did, what I wanted to do, problems,
     โ€ฆ during the daily
 
     #+INCLUDE: "../tools/emacs/etc/orgmode/worklog.org" src org
 
-    #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureWorklog" :range-end "-OrgCaptureWorklog" :lines "290-295"
+    #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureWorklog" :range-end "-OrgCaptureWorklog" :lines "295-300"
 
 - weekly review :: each and every week, I am going through this item to make my review of
   the week.
 
   #+INCLUDE: "../tools/emacs/etc/orgmode/weekly.org" src org
 
-  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureWeekly" :range-end "-OrgCaptureWeekly" :lines "298-303"
+  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureWeekly" :range-end "-OrgCaptureWeekly" :lines "303-308"
 
 - blog posts ::
 
-  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureBlog" :range-end "-OrgCaptureBlog" :lines "313-315"
+  #+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureBlog" :range-end "-OrgCaptureBlog" :lines "318-320"
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureEnd" :range-end "-OrgCaptureEnd" :lines "318-319"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgCaptureEnd" :range-end "-OrgCaptureEnd" :lines "323-324"
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgProtocol" :range-end "-OrgProtocol" :lines "322-324"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgProtocol" :range-end "-OrgProtocol" :lines "327-329"
 
 *** Clocking
 :PROPERTIES:
@@ -855,32 +867,32 @@
 In addition to that workflow, I want to switch the state of the task to =STARTED= when I
 am clocking-in, if it's not already =STARTED=.
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgClock" :range-end "-OrgClock" :lines "327-420"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgClock" :range-end "-OrgClock" :lines "332-425"
 
 *** TODO Links
 :PROPERTIES:
 :CUSTOM_ID: h:afc81fbb-f7a0-401c-8b56-19f51edebd88
 :END:
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgAttach" :range-end "-OrgAttach" :lines "423-428"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgAttach" :range-end "-OrgAttach" :lines "428-433"
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgLinks" :range-end "-OrgLinks" :lines "431-467"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgLinks" :range-end "-OrgLinks" :lines "436-461"
 
 *** TODO Litterate programming
 :PROPERTIES:
 :CUSTOM_ID: h:b5f6beba-6195-4ff0-a194-502ac2a9e3da
 :END:
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgBabel" :range-end "-OrgBabel" :lines "470-529"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgBabel" :range-end "-OrgBabel" :lines "464-523"
 
 *** TODO Exporting
 :PROPERTIES:
 :CUSTOM_ID: h:afad00e0-367c-4c7b-b191-e3ed72be754b
 :END:
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgExportConstants" :range-end "-OrgExportConstants" :lines "532-534"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgExportConstants" :range-end "-OrgExportConstants" :lines "526-528"
 
-#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgExportCfg" :range-end "-OrgExportCfg" :lines "537-548"
+#+INCLUDE: "../tools/emacs/config/setup-org.el" src emacs-lisp :range-begin "OrgExportCfg" :range-end "-OrgExportCfg" :lines "531-542"
 
 ** TODO Email and newsgroup
 :PROPERTIES:
tools/emacs/config/setup-style.el
@@ -1,39 +1,50 @@
-;;; -*- lexical-binding: t; -*-
+;;; setup-style.el --- -*- lexical-binding: t -*-
+;;; Commentary:
+;;; Setup of the style, from font faces to themes
+;;; Code:
+
+;; TypeFaceConfiguration
 ;;; ยฏ\_(ใƒ„)_/ยฏ
-;;; - Iosevka (https://github.com/be5invis/Iosevka)
-;;; - Fira Sans (https://github.com/mozilla/Fira/)
-(defconst font-height 130)
-;; Middle/Near East: ืฉืœื•ื, ุงู„ุณู‘ู„ุงู… ุนู„ูŠูƒู…
-(when (member "Noto Sans Arabic" (font-family-list))
-  (set-fontset-font t 'arabic "Noto Sans Arabic"))
-(when (member "Noto Sans Hebrew" (font-family-list))
-  (set-fontset-font t 'arabic "Noto Sans Hebrew"))
+(defconst font-height 130
+  "Default font-height to use.")
 
-;; Africa: แˆ แˆ‹แˆ
-(when (member "Noto Sans Ethiopic" (font-family-list))
-  (set-fontset-font t 'ethiopic "Noto Sans Ethiopic"))
+(use-package emacs
+  :bind ("C-c f r" . mu-reset-fonts)
+  :config
+  ;; Middle/Near East: ืฉืœื•ื, ุงู„ุณู‘ู„ุงู… ุนู„ูŠูƒู…
+  (when (member "Noto Sans Arabic" (font-family-list))
+    (set-fontset-font t 'arabic "Noto Sans Arabic"))
+  (when (member "Noto Sans Hebrew" (font-family-list))
+    (set-fontset-font t 'arabic "Noto Sans Hebrew"))
+  ;; Africa: แˆ แˆ‹แˆ
+  (when (member "Noto Sans Ethiopic" (font-family-list))
+    (set-fontset-font t 'ethiopic "Noto Sans Ethiopic"))
 
-(set-face-attribute 'default nil
-                    :family "Ubuntu Mono"
-                    :height font-height)
-(set-face-attribute 'variable-pitch nil
-                    :family "Ubuntu Sans"
-                    :height font-height
-                    :weight 'regular)
+  ;; Default font is Ubuntu Mono (and Ubuntu Sans for variable-pitch)
+  ;; If Ubuntu Mono or Ubuntu Sans are not available, use the default Emacs face
+  (when (member "Ubuntu Mono" (font-family-list))
+    (set-face-attribute 'default nil
+                        :family "Ubuntu Mono"
+                        :height font-height))
+  (when (member "Ubuntu Sans" (font-family-list))
+    (set-face-attribute 'variable-pitch nil
+                        :family "Ubuntu Sans"
+                        :height font-height
+                        :weight 'regular))
 
-;;; Utilities and key bindings
-(defun mu-reset-fonts ()
-  "Reset fonts to my preferences."
-  (interactive)
-  (set-face-attribute 'default nil
-                      :family "Ubuntu Mono"
-                      :height font-height)
-  (set-face-attribute 'variable-pitch nil
-                      :family "Ubuntu Sans"
-                      :height font-height
-                      :weight 'regular))
-
-(bind-key "C-c f r" #'mu-reset-fonts)
+  (defun mu-reset-fonts ()
+    "Reset fonts to my preferences."
+    (interactive)
+    (when when (member "Ubuntu Mono" (font-family-list))
+          (set-face-attribute 'default nil
+                              :family "Ubuntu Mono"
+                              :height font-height))
+    (when when (member "Ubuntu Sans" (font-family-list))
+          (set-face-attribute 'variable-pitch nil
+                              :family "Ubuntu Sans"
+                              :height font-height
+                              :weight 'regular))))
+;; -TypeFaceConfiguration
 
 ;;; Interface
 (use-package frame                      ; Frames