Better font managing.
This commit is contained in:
289
README.org
289
README.org
@@ -16,8 +16,7 @@ State that we will need package support and define a macro for adding package re
|
||||
|
||||
;; add to the package repos
|
||||
(append-to-list package-archives
|
||||
'(("melpa" . "http://melpa.org/packages/")
|
||||
("org-elpa" . "https://orgmode.org/elpa/")))
|
||||
'(("melpa" . "http://melpa.org/packages/")))
|
||||
(package-initialize)
|
||||
(unless (package-installed-p 'use-package)
|
||||
(package-refresh-contents)
|
||||
@@ -28,7 +27,7 @@ State that we will need package support and define a macro for adding package re
|
||||
(use-package gnu-elpa-keyring-update)
|
||||
#+END_SRC
|
||||
|
||||
* Fix defaults
|
||||
* Fix Defaults
|
||||
** Hide UI elements
|
||||
Remove all those UI elements. They do not look good and waste space.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
@@ -39,13 +38,13 @@ Remove all those UI elements. They do not look good and waste space.
|
||||
(fringe-mode -1)
|
||||
#+END_SRC
|
||||
** Disable file backups
|
||||
Emacs, loves to clutter directories with backup files.
|
||||
Emacs sure loves to clutter directories with backup files.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq make-backup-files nil)
|
||||
(setq auto-save-default nil)
|
||||
(setq create-lockfiles nil)
|
||||
#+END_SRC
|
||||
** Other settings
|
||||
** Other Settings
|
||||
#+begin_src emacs-lisp
|
||||
;; The default encoding should be utf-8 everywhere
|
||||
(prefer-coding-system 'utf-8)
|
||||
@@ -107,7 +106,7 @@ Unbind useless keys.
|
||||
(unbind-key "C-x C-d") ;; list-directory is utterly useless given the existence of dired
|
||||
(unbind-key "C-x C-r") ;; as is find-file-read-only
|
||||
#+END_SRC
|
||||
* Useful functions
|
||||
* Useful Functions
|
||||
** Edit the config file
|
||||
A simple funtion to open this file for quick editing.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
@@ -142,29 +141,45 @@ Reindet the whole buffer with ~F12~
|
||||
#+END_SRC
|
||||
** Quick buffer switching
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun switch-to-previous-buffer ()
|
||||
"Switch to previously open buffer. Repeated invocations toggle between the two most recently open buffers."
|
||||
(interactive)
|
||||
(switch-to-buffer (other-buffer (current-buffer) 1)))
|
||||
(defun switch-to-previous-buffer ()
|
||||
"Switch to previously open buffer.Repeated invocations toggle between the two most recently open buffers."
|
||||
(interactive)
|
||||
(switch-to-buffer (other-buffer (current-buffer) 1)))
|
||||
#+END_SRC
|
||||
** Quickly open the links file
|
||||
The link dump is the file to throw all links for later reading in.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defvar lux/link-dump "")
|
||||
(defun lux/open-link-dump ()
|
||||
(interactive)
|
||||
(find-file lux/link-dump))
|
||||
#+END_SRC
|
||||
* Theming
|
||||
Apply a nice looking theme.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
;; Light Theme
|
||||
(use-package modus-operandi-theme)
|
||||
(load-theme 'modus-operandi t)
|
||||
|
||||
;; Syntax highlighing
|
||||
(setq modus-operandi-theme-faint-syntax t)
|
||||
|
||||
(setq modus-operandi-theme-org-blocks "greyscale")
|
||||
(load-theme 'modus-operandi t)
|
||||
#+END_SRC
|
||||
|
||||
Set up the default frame look.
|
||||
#+begin_src emacs-lisp
|
||||
(setq default-frame-alist
|
||||
(append (list '(width . 90) '(height . 50)
|
||||
'(vertical-scroll-bars . nil)
|
||||
'(internal-border-width . 10)
|
||||
'(font . "Roboto Mono Light 10"))))
|
||||
#+END_SRC
|
||||
'(internal-border-width . 5))))
|
||||
#+end_src
|
||||
|
||||
Configure the Fonts
|
||||
#+begin_src emacs-lisp
|
||||
(set-face-attribute 'default nil :font "Roboto Mono-11")
|
||||
(set-face-attribute 'fixed-pitch nil :font "Roboto Mono-11")
|
||||
(set-face-attribute 'variable-pitch nil :font "Roboto-11")
|
||||
#+end_src
|
||||
|
||||
Use a nice looking modeline package
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
@@ -281,45 +296,23 @@ Don't prompt to save unmodified buffers on exit.
|
||||
#+END_SRC
|
||||
|
||||
* Org Mode
|
||||
** Define important files
|
||||
*** The Link Dump
|
||||
I use a single file to dump all links I plan on viewing later.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defvar link-dump "")
|
||||
|
||||
(defun open-link-dump ()
|
||||
(interactive)
|
||||
(find-file link-dump))
|
||||
#+END_SRC
|
||||
** Configure org-mode
|
||||
This is the main configuration for the infamous org-mode.
|
||||
The most important parts are configuring key bindings to quickly access the files we have defined above.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org
|
||||
;; Always get this from the GNU archive.
|
||||
:pin gnu
|
||||
:bind (("C-c o c" . org-capture)
|
||||
("C-c o l" . open-link-dump)
|
||||
("C-c o l" . lux/open-link-dump)
|
||||
("C-c o s" . org-store-link)
|
||||
("C-c o a" . org-agenda)
|
||||
:map org-mode-map
|
||||
("M-s-<return>" . org-insert-todo-heading)
|
||||
("M-<return>" . org-insert-heading-respect-content)
|
||||
("C-c c" . org-mode-insert-code)
|
||||
("C-c a s" . org-emphasize)
|
||||
("C-c a r" . org-ref)
|
||||
("C-c a e" . outline-show-all)
|
||||
("C-c a t" . unindent-by-four)
|
||||
("C-c -" . org-edit-special))
|
||||
:hook ((org-mode . visual-line-mode)
|
||||
(org-mode . variable-pitch-mode)
|
||||
(org-mode . org-indent-mode))
|
||||
:config
|
||||
(let ((todo-path (expand-file-name "~/Notes/todo.org")))
|
||||
(when (file-exists-p todo-path)
|
||||
(setq org-agenda-files (list todo-path)
|
||||
org-default-notes-file todo-path)))
|
||||
|
||||
(setq org-footnote-section ""
|
||||
org-startup-with-inline-images t
|
||||
org-pretty-entities t
|
||||
@@ -331,120 +324,32 @@ The most important parts are configuring key bindings to quickly access the file
|
||||
org-display-inline-images t
|
||||
org-hide-emphasis-markers t
|
||||
)
|
||||
(setcar (nthcdr 4 org-emphasis-regexp-components) 4)
|
||||
|
||||
(defun org-mode-insert-code ()
|
||||
(interactive)
|
||||
(org-emphasize ?~)))
|
||||
(setcar (nthcdr 4 org-emphasis-regexp-components) 4))
|
||||
#+END_SRC
|
||||
|
||||
** Set default archive location
|
||||
** Archive Location
|
||||
When archiving items in org files, the default ist to crate a separate file named ~<filename>.org_archive~.
|
||||
This clutters up my notes folder quite a bit, as I use a lot of separate files with thier respective archives.
|
||||
All archives should be stored in a single ~.archive~ file per directory.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-archive-location "./.archive::* From %s")
|
||||
#+END_SRC
|
||||
** Beautify org-mode
|
||||
*** Icons
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org-bullets
|
||||
:init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
||||
|
||||
(setq org-bullets-bullet-list '("◉" "○" "◆" "✿" "✚" "▶"))
|
||||
** Export Location
|
||||
This snippet will create a sub dir for exports from org-mode.
|
||||
[[https://stackoverflow.com/questions/9559753/emacs-org-mode-export-to-another-directory][See the Stackoverflow question]]
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun org-export-output-file-name-modified (orig-fun extension &optional subtreep pub-dir)
|
||||
(unless pub-dir
|
||||
(setq pub-dir "Exports")
|
||||
(unless (file-directory-p pub-dir)
|
||||
(make-directory pub-dir)))
|
||||
(apply orig-fun extension subtreep pub-dir nil))
|
||||
(advice-add 'org-export-output-file-name :around #'org-export-output-file-name-modified)
|
||||
#+END_SRC
|
||||
|
||||
Ellipsis icon:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-ellipsis "▾")
|
||||
#+END_SRC
|
||||
|
||||
Nice Icons for lists:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
"Beautify Org Checkbox Symbol"
|
||||
(push '("[ ]" . "☐") prettify-symbols-alist)
|
||||
(push '("[X]" . "☑" ) prettify-symbols-alist)
|
||||
(push '("[-]" . "❍" ) prettify-symbols-alist)
|
||||
(prettify-symbols-mode)))
|
||||
#+END_SRC
|
||||
|
||||
We also want them in exported HTML files
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-html-checkbox-type 'html)
|
||||
#+END_SRC
|
||||
|
||||
*** Strike out done ckeckbox items
|
||||
#+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
|
||||
|
||||
*** Replace dash in bullet lists with unicode symbol
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(font-lock-add-keywords 'org-mode
|
||||
'(("^ *\\([-]\\) "
|
||||
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
||||
#+END_SRC
|
||||
|
||||
*** Prettier Timestamps in Exports
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq-default org-display-custom-times t)
|
||||
(setq org-time-stamp-custom-formats
|
||||
'("<%a %d.%m.%Y>" . "<%d.%m.%y %H:%M>"))
|
||||
#+END_SRC
|
||||
** Templates
|
||||
*** Babel
|
||||
Here we set custom templates to be used for structure expansion.
|
||||
These are used when we type "<" folowed by the shortcut for a template and hit "TAB".
|
||||
e.g. "<s TAB" expands to ~#+BEGIN_SRC ?\n\n#+END_SRC~
|
||||
|
||||
Use ~org-tempo~ to quickly insert the structures
|
||||
#+begin_src emacs-lisp
|
||||
(require 'org-tempo)
|
||||
#+end_src
|
||||
**** emacs-lisp
|
||||
Shortcut for creating ~emacs-lisp~ code blocks. This is used extensively in this very file.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
#+END_SRC
|
||||
*** Capture Support Functions
|
||||
First we define a function to look the subheading under which we want to file captures:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun org-get-target-headline (&optional targets prompt)
|
||||
"Prompt for a location in an org file and jump to it.
|
||||
|
||||
This is for promping for refile targets when doing captures.
|
||||
Targets are selected from `org-refile-targets'. If TARGETS is
|
||||
given it temporarily overrides `org-refile-targets'. PROMPT will
|
||||
replace the default prompt message.
|
||||
|
||||
If CAPTURE-LOC is is given, capture to that location instead of
|
||||
prompting."
|
||||
(let ((org-refile-targets (or targets org-refile-targets))
|
||||
(prompt (or prompt "Capture Location")))
|
||||
(org-refile t nil nil prompt))
|
||||
)
|
||||
#+END_SRC
|
||||
|
||||
*** Org Capture
|
||||
Here we define templates we want to use to quickly capture stuff and automatically file them away.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-capture-templates
|
||||
'(("l" "Link" entry (file link-dump)
|
||||
"* NEW %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n%i\n")
|
||||
))
|
||||
#+END_SRC
|
||||
|
||||
** CSS inlining
|
||||
** Export HTML
|
||||
Auto inline a CSS theme for org HTML exports.
|
||||
This will make sure a self contained single HTML file is created.
|
||||
|
||||
@@ -468,19 +373,92 @@ This will make sure a self contained single HTML file is created.
|
||||
|
||||
(add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook)
|
||||
#+END_SRC
|
||||
** Export to a subdirectory
|
||||
This snippet will create a sub dir for exports from org-mode.
|
||||
[[https://stackoverflow.com/questions/9559753/emacs-org-mode-export-to-another-directory][See the Stackoverflow question]]
|
||||
|
||||
** Org Mode Bling
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun org-export-output-file-name-modified (orig-fun extension &optional subtreep pub-dir)
|
||||
(unless pub-dir
|
||||
(setq pub-dir "Exports")
|
||||
(unless (file-directory-p pub-dir)
|
||||
(make-directory pub-dir)))
|
||||
(apply orig-fun extension subtreep pub-dir nil))
|
||||
(advice-add 'org-export-output-file-name :around #'org-export-output-file-name-modified)
|
||||
(use-package org-bullets
|
||||
:init (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
|
||||
(setq org-bullets-bullet-list '("◉" "○" "◆" "✿" "✚" "▶"))
|
||||
|
||||
;; Ellipsis icon
|
||||
(setq org-ellipsis "▾")
|
||||
|
||||
;; Nice Icons for lists
|
||||
(add-hook 'org-mode-hook
|
||||
(lambda ()
|
||||
"Beautify Org Checkbox Symbol"
|
||||
(push '("[ ]" . "☐") prettify-symbols-alist)
|
||||
(push '("[X]" . "☑" ) prettify-symbols-alist)
|
||||
(push '("[-]" . "❍" ) prettify-symbols-alist)
|
||||
(prettify-symbols-mode)))
|
||||
;; We also want them in exported HTML files
|
||||
(setq org-html-checkbox-type 'html)
|
||||
|
||||
;; Replace dash in bullet lists with unicode symbol
|
||||
(font-lock-add-keywords 'org-mode
|
||||
'(("^ *\\([-]\\) "
|
||||
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
||||
|
||||
;; Strike out done ckeckbox items
|
||||
(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)
|
||||
|
||||
;; Prettier Timestamps in Exports
|
||||
(setq-default org-display-custom-times t)
|
||||
(setq org-time-stamp-custom-formats
|
||||
'("<%a %d.%m.%Y>" . "<%d.%m.%y %H:%M>"))
|
||||
#+END_SRC
|
||||
|
||||
** Templates
|
||||
*** Babel
|
||||
Here we set custom templates to be used for structure expansion.
|
||||
These are used when we type "<" folowed by the shortcut for a template and hit "TAB".
|
||||
e.g. "<s TAB" expands to ~#+BEGIN_SRC ?\n\n#+END_SRC~
|
||||
|
||||
Use ~org-tempo~ to quickly insert the structures
|
||||
#+begin_src emacs-lisp
|
||||
(require 'org-tempo)
|
||||
#+end_src
|
||||
|
||||
Shortcut for creating ~emacs-lisp~ code blocks. This is used extensively in this very file.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
|
||||
#+END_SRC
|
||||
|
||||
*** Capture
|
||||
First we define a function to look the subheading under which we want to file captures:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun org-get-target-headline (&optional targets prompt)
|
||||
"Prompt for a location in an org file and jump to it.
|
||||
|
||||
This is for promping for refile targets when doing captures.
|
||||
Targets are selected from `org-refile-targets'. If TARGETS is
|
||||
given it temporarily overrides `org-refile-targets'. PROMPT will
|
||||
replace the default prompt message.
|
||||
|
||||
If CAPTURE-LOC is is given, capture to that location instead of
|
||||
prompting."
|
||||
(let ((org-refile-targets (or targets org-refile-targets))
|
||||
(prompt (or prompt "Capture Location")))
|
||||
(org-refile t nil nil prompt))
|
||||
)
|
||||
#+END_SRC
|
||||
|
||||
Here we define templates we want to use to quickly capture stuff and automatically file them away.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq org-capture-templates
|
||||
'(("l" "Link" entry (file lux/link-dump)
|
||||
"* NEW %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n%i\n")
|
||||
))
|
||||
#+END_SRC
|
||||
|
||||
* Treemacs
|
||||
Treemacs makes navigating folders and files much easier. This is the default config from [[https://github.com/Alexander-Miller/treemacs][the offical repository]] as a base, with slight modifications to suite my config.
|
||||
|
||||
@@ -568,7 +546,7 @@ elfeed can be extended with various hooks for ease of used
|
||||
(elfeed-make-tagger :before "2 weeks ago"
|
||||
:remove 'unread))
|
||||
#+END_SRC
|
||||
* Misc packages
|
||||
* Misc Packages
|
||||
** All The Icons
|
||||
We want to have some nice looking icons
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
@@ -652,7 +630,8 @@ A simple Emacs minor mode for a nice writing environment.
|
||||
Auto enable it in text modes
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(add-hook 'text-mode-hook 'olivetti-mode)
|
||||
;; Do not use for now
|
||||
;;(add-hook 'text-mode-hook 'olivetti-mode)
|
||||
#+END_SRC
|
||||
** Ag
|
||||
Ag.el allows you to search using ~ag~ from inside Emacs. You can filter by file type, edit results inline, or find files.
|
||||
@@ -687,6 +666,6 @@ Load a custom file from the emacs home dir.
|
||||
This file is specific to the machine emacs runs on.
|
||||
It conatins customizations and file locations that are machine dependend.
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(setq custom-file "~/.emacs.d/custom.el")
|
||||
(load custom-file 'noerror)
|
||||
(setq custom-file "~/.emacs.d/custom.el")
|
||||
;;(load custom-file 'noerror)
|
||||
#+END_SRC
|
||||
|
||||
Reference in New Issue
Block a user