better font configuration, added csv mode, and other minor improvements
This commit is contained in:
parent
a7768782fe
commit
0e91b480dc
|
|
@ -12,7 +12,7 @@ Functions needed at the start of the configuration
|
||||||
* User Emacs Directories
|
* User Emacs Directories
|
||||||
set the directory for emacs and it's apps to put stuff.
|
set the directory for emacs and it's apps to put stuff.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(if (version< emacs-version "28")
|
(if (version< "28" emacs-version)
|
||||||
(setq user-emacs-directory
|
(setq user-emacs-directory
|
||||||
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))))
|
(expand-file-name "emacs" (safe-getenv "XDG_DATA_HOME" "~/.local/share"))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ this speeds up emacs startup
|
||||||
|
|
||||||
** Set Package Directory
|
** Set Package Directory
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq package-user-dir (expand-file-name "emacs/packages" (safe-getenv "XDG_DATA_HOME" "~/.local/share")))
|
(setq package-user-dir (expand-file-name "packages" user-emacs-directory))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Add package sources
|
** Add package sources
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,81 @@
|
||||||
#+TITLE: Font Configuration
|
#+TITLE: Font Configuration
|
||||||
|
|
||||||
* Configuration
|
* set default fonts
|
||||||
** default fonts
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
(let ((default-family "Roboto Mono")
|
||||||
|
(variable-family "Inter"))
|
||||||
(custom-set-faces
|
(custom-set-faces
|
||||||
;; set default font
|
;; set default font
|
||||||
'(default ((t (:inherit nil :extend nil :stipple nil
|
`(default ((t (:inherit nil :extend nil :stipple nil
|
||||||
:inverse-video nil :box nil
|
:inverse-video nil :box nil
|
||||||
:strike-through nil :overline nil :underline nil
|
:strike-through nil :overline nil :underline nil
|
||||||
:slant normal :weight normal
|
:slant normal :weight normal
|
||||||
:height 100 :width normal
|
:height 100 :width normal
|
||||||
:foundry "CTDB" :family "Roboto Mono"))))
|
:family ,default-family))))
|
||||||
'(fixed-pitch ((t (:family "Roboto Mono"))))
|
`(fixed-pitch ((t (:family ,default-family))))
|
||||||
'(fixed-pitch-serif ((t (:family "Roboto Mono"))))
|
`(fixed-pitch-serif ((t (:family ,default-family))))
|
||||||
'(variable-pitch ((t (:inherit default :weight regular :family "Inter")))))
|
`(variable-pitch ((t (:inherit default :weight regular :family ,variable-family))))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Chinese Font
|
* Font setter function
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun set-face-attr-family (face font-families &optional attributes)
|
||||||
|
"Set FACE's font family to the first available font family from FONT-FAMILIES list,
|
||||||
|
and apply other ATTRIBUTES specified in the plist."
|
||||||
|
|
||||||
|
(when attributes
|
||||||
|
(while attributes
|
||||||
|
(let ((attr (pop attributes))
|
||||||
|
(value (pop attributes)))
|
||||||
|
(set-face-attribute face nil attr value))))
|
||||||
|
|
||||||
|
(let ((available-font (seq-find (lambda (font)
|
||||||
|
(find-font (font-spec :family font)))
|
||||||
|
font-families)))
|
||||||
|
(when available-font
|
||||||
|
;; Set the font family
|
||||||
|
(set-face-attribute face nil :family available-font)
|
||||||
|
;; Apply other attributes from the plist
|
||||||
|
|
||||||
|
(message "Set %s face to use font family: %s with attributes: %s"
|
||||||
|
face available-font attributes))))
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Set face family and attributes
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(set-face-attr-family 'default
|
||||||
|
'("Roboto Mono" "Source Code Pro" "Fira Code" "Noto Sans Mono" "Cascadia Code" "SF Pro Mono" "fixed")
|
||||||
|
'(:inherit nil :extend nil :stipple nil
|
||||||
|
:inverse-video nil :box nil
|
||||||
|
:strike-through nil :overline nil :underline nil
|
||||||
|
:slant normal :weight normal
|
||||||
|
:height 100 :width normal))
|
||||||
|
(set-face-attr-family 'variable-pitch
|
||||||
|
'("Inter" "Cantarell" "Fira Sans" "Noto Sans" "Segoe UI" "SF Pro Display")
|
||||||
|
'(:inherit default :weight regular))
|
||||||
|
|
||||||
|
(set-face-attribute 'fixed-pitch nil :family (face-attribute 'default :family))
|
||||||
|
(set-face-attribute 'fixed-pitch-serif nil :family (face-attribute 'default :family))
|
||||||
|
|
||||||
|
(set-face-attribute 'fringe nil :background (face-background 'default))
|
||||||
|
(set-face-attribute 'line-number nil :background (face-background 'default))
|
||||||
|
(set-face-attribute 'line-number nil :foreground (face-foreground 'shadow))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Chinese Font
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
;; (dolist (charset '(kana han symbol cjk-misc bopomofo))
|
;; (dolist (charset '(kana han symbol cjk-misc bopomofo))
|
||||||
;; (set-fontset-font (frame-parameter nil 'font)
|
;; (set-fontset-font (frame-parameter nil 'font)
|
||||||
;; charset (font-spec :family "Noto Sans Mono CJK TC Regular"
|
;; charset (font-spec :family "Noto Sans Mono CJK TC Regular"
|
||||||
;; :size 10)))
|
;; :size 10)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Font finder function
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; (defun find-available-font-family (font-families)
|
||||||
|
;; "Return the first available font family from FONT-FAMILIES list, or nil if none is found."
|
||||||
|
;; (seq-find (lambda (font)
|
||||||
|
;; (find-font (font-spec :family font)))
|
||||||
|
;; font-families))
|
||||||
|
#+end_src
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,6 @@ run the function at startup of a frame
|
||||||
(add-hook 'before-make-frame-hook 'set-window-size)
|
(add-hook 'before-make-frame-hook 'set-window-size)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Fringes
|
|
||||||
Fringes are the small gap at the side of emacs.
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
(fringe-mode '(12 . 6))
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* 80 Column Line with fill-column-indicator
|
* 80 Column Line with fill-column-indicator
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(when (> emacs-major-version 27)
|
(when (> emacs-major-version 27)
|
||||||
|
|
@ -67,46 +60,36 @@ sets the tab size 5 spaces
|
||||||
c-basic-offset custom-tab-size))
|
c-basic-offset custom-tab-size))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Line numbers
|
|
||||||
Turn on line numbers in text mode/code modes.
|
|
||||||
~this part is not fully working~
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
|
||||||
|
|
||||||
(add-hook 'term-mode-hook (lambda () (display-line-numbers-mode -1)))
|
|
||||||
(add-hook 'text-mode-hook 'display-line-numbers-mode)
|
|
||||||
(add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
|
|
||||||
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
|
||||||
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Line Highlight
|
* Line Highlight
|
||||||
Highlights the current line
|
Highlights the current line
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
|
||||||
(global-hl-line-mode 1)
|
(global-hl-line-mode 1)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Indentation guides
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package highlight-indent-guides
|
||||||
|
:hook (prog-mode . highlight-indent-guides-mode))
|
||||||
|
;; :custom
|
||||||
|
;; (highlight-indent-guides-method 'character "set the guide style to a bitmap picture")
|
||||||
|
;; (highlight-indent-guides-character "│" "set the guide character to a horizontal line")
|
||||||
|
;; (highlight-indent-guides-auto-enabled nil)
|
||||||
|
;; :config
|
||||||
|
;; (set-face-foreground 'highlight-indent-guides-character-face (face-foreground 'fill-column-indicator)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Matching Pairs
|
* Matching Pairs
|
||||||
|
|
||||||
** Highlight
|
** Highlight
|
||||||
highlight matching pairs of parenthesis, and other characters
|
highlight matching pairs of parenthesis, and other characters
|
||||||
|
#+begin_src emacs-lisp
|
||||||
#+BEGIN_SRC emacs-lisp
|
(show-paren-mode 1)
|
||||||
|
#+end_src
|
||||||
(show-paren-mode 1)
|
|
||||||
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Electric-pair-mode
|
** Electric-pair-mode
|
||||||
Automatically pair parentheses, and other characters, built in on emacs
|
Automatically pair parentheses, and other characters, built in on emacs
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
|
(electric-pair-mode 1)
|
||||||
(electric-pair-mode 1)
|
#+end_src
|
||||||
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Clock/Time in Modeline
|
* Clock/Time in Modeline
|
||||||
currently unused
|
currently unused
|
||||||
|
|
@ -159,8 +142,23 @@ Load theme (that is built-in)
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Fringes
|
||||||
|
Fringes are the small gap at the side of emacs.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(fringe-mode '(12 . 6))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Line numbers
|
||||||
|
Turn on line numbers in text mode/code modes.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(add-hook 'term-mode-hook (lambda () (display-line-numbers-mode -1)))
|
||||||
|
(add-hook 'text-mode-hook 'display-line-numbers-mode)
|
||||||
|
(add-hook 'emacs-lisp-mode-hook 'display-line-numbers-mode)
|
||||||
|
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Welcome Screen
|
* Welcome Screen
|
||||||
Having a blank screen at the start is much more simpler and better
|
Having a blank screen at the start is much more simpler and better
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq inhibit-startup-screen t)
|
(setq inhibit-startup-screen t)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ Tell gnus to read ~gnus.el~ from the config dir.
|
||||||
other configuration on gnus is on the ~gnus.el~ file.
|
other configuration on gnus is on the ~gnus.el~ file.
|
||||||
|
|
||||||
* RMail Config
|
* RMail Config
|
||||||
Even though Gnus is used as the main E-Mail reader, Rmail is also setup as a backup mail reader incase gnus became unusable
|
Even though Gnus is used as the main E-Mail reader, Rmail is also setup as a redundant mail reader.
|
||||||
|
|
||||||
** Dependencies
|
** Dependencies
|
||||||
Since RMail is only a Mail Reader, E-Mails needs to be fetched using external programs.
|
Since RMail is only a Mail Reader, E-Mails needs to be fetched using external programs.
|
||||||
|
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
#+TITLE: PDF-Tools Configuration
|
|
||||||
|
|
||||||
* Intro
|
|
||||||
*PDF-Tools* is a emacs package that provides better PDF support to emacs.
|
|
||||||
It is faster, and less resource intensive compared to Emacs' PDFView mode
|
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
|
||||||
(use-package pdf-tools
|
|
||||||
;; :hook "\\.pdf\\'"
|
|
||||||
:config
|
|
||||||
(pdf-loader-install)
|
|
||||||
:hook
|
|
||||||
(pdf-major-mode . (lambda () (fringe-mode 0)))
|
|
||||||
(pdf-outline-buffer-mode . (lambda ()
|
|
||||||
(display-line-numbers-mode -1))))
|
|
||||||
#+end_src
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
* Built-in Modes
|
* Built-in Modes
|
||||||
** hook default settings to configured language modes
|
** hook default settings to configured language modes
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(let ((langs '("sh" "c++" "go-ts" "java" "js" "json" "LaTeX" "mhtml" "python" "typescript-ts" "tsx-ts")))
|
(let ((langs '("sh" "c++" "go-ts" "java" "js" "json" "LaTeX" "mhtml" "python" "typescript-ts" "tsx-ts" "python-ts")))
|
||||||
(dolist (lang langs)
|
(dolist (lang langs)
|
||||||
(add-hook (intern (concat lang "-mode-hook")) 'lang-default-settings)))
|
(add-hook (intern (concat lang "-mode-hook")) 'lang-default-settings)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
@ -72,8 +72,7 @@ No longer using typescript-mode, as there's a builtin typescript-ts mode in Emac
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package markdown-mode
|
(use-package markdown-mode
|
||||||
:commands (markdown-mode gfm-mode)
|
:commands (markdown-mode gfm-mode)
|
||||||
:mode (("\\.md\\'". markdown-mode)
|
:mode ("\\.md\\'" "\\.markdown\\'")
|
||||||
("\\.markdown\\'" . markdown-mode))
|
|
||||||
:custom ((markdown-command "multimarkdown" "set the markdown command")))
|
:custom ((markdown-command "multimarkdown" "set the markdown command")))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
@ -113,14 +112,10 @@ python venv manager
|
||||||
*** Jupyter
|
*** Jupyter
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package ein
|
(use-package ein
|
||||||
|
:commands (ein:run ein:notebook-open ein:login)
|
||||||
|
:bind ("C-c C-o" . ein:notebook-open)
|
||||||
:config
|
:config
|
||||||
(add-to-list 'org-babel-load-languages '(ein . t))
|
(add-to-list 'org-babel-load-languages '(ein . t)))
|
||||||
:bind
|
|
||||||
("C-c C-o" . ein:notebook-open)
|
|
||||||
:commands
|
|
||||||
ein:run
|
|
||||||
ein:notebook-open
|
|
||||||
ein:login)
|
|
||||||
;; :custom
|
;; :custom
|
||||||
;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook")
|
;; (ein:jupyter-server-use-subcommand "server" "use jupyterlab instead of jupyter notebook")
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
@ -137,3 +132,12 @@ Python code is recomendded to set the tab size to 4
|
||||||
c-basic-offset custom-tab-size))))
|
c-basic-offset custom-tab-size))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* CSV-mode
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package csv-mode
|
||||||
|
:pin "gnu"
|
||||||
|
:commands (csv-mode csv-align-mode csv-field-index-mode)
|
||||||
|
:mode (("\\.csv\\'" . csv-align-mode) ("\\.tsv\\'" . csv-align-mode))
|
||||||
|
:custom (csv-invisibility-default nil "show separators when records are aligned"))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,12 @@
|
||||||
Ido is a autocomplete package for emacs' commands
|
Ido is a autocomplete package for emacs' commands
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package ido
|
(use-package ido
|
||||||
:config
|
:custom
|
||||||
(setq ido-everywhere t
|
(ido-virtual-buffers t)
|
||||||
ido-virtual-buffers t
|
(ido-use-faces t)
|
||||||
ido-use-faces t)
|
:config
|
||||||
(ido-mode 1))
|
(ido-everywhere t)
|
||||||
|
(ido-mode 1))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* EWW
|
* EWW
|
||||||
|
|
@ -25,6 +26,21 @@ This config just sets the download directory
|
||||||
(eww-search-prefix "https://lite.duckduckgo.com/lite/?q=" "prefix url to do search"))
|
(eww-search-prefix "https://lite.duckduckgo.com/lite/?q=" "prefix url to do search"))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* PDF-Tools
|
||||||
|
*PDF-Tools* is a emacs package that provides better PDF support to emacs.
|
||||||
|
It is faster, and less resource intensive compared to Emacs' PDFView mode
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package pdf-tools
|
||||||
|
;; :hook "\\.pdf\\'"
|
||||||
|
:config
|
||||||
|
(pdf-loader-install)
|
||||||
|
:hook
|
||||||
|
(pdf-major-mode . (lambda () (fringe-mode 0)))
|
||||||
|
(pdf-outline-buffer-mode . (lambda ()
|
||||||
|
(display-line-numbers-mode -1))))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
* Fancy Battery
|
* Fancy Battery
|
||||||
This shows the battery level on the emacs modeline
|
This shows the battery level on the emacs modeline
|
||||||
|
|
||||||
|
|
@ -149,6 +165,18 @@ Abbrev is helpful for typing long commands, but I don't need to know it in the m
|
||||||
(org-crypt-use-before-save-magic))
|
(org-crypt-use-before-save-magic))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Telega
|
||||||
|
Telegram chat client for Emacs
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package telega
|
||||||
|
:commands telega
|
||||||
|
:pin "melpa-stable"
|
||||||
|
:custom
|
||||||
|
(telega-directory (expand-file-name "telega" user-emacs-directory) "set telega runtime files to be inside user-emacs-directory")
|
||||||
|
(telega-use-images t)
|
||||||
|
(telega-emoji-font-family "Noto Color Emoji")
|
||||||
|
(telega-emoji-use-images nil))
|
||||||
|
#+end_src
|
||||||
* Elfeed Web
|
* Elfeed Web
|
||||||
Elfeed is a emacs package for reading RSS Web News.
|
Elfeed is a emacs package for reading RSS Web News.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue