You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

274 lines
10 KiB
EmacsLisp

(setq user-full-name "Francis Kore"
user-mail-address "me@korefrancis.com")
(setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light)
doom-variable-pitch-font (font-spec :family "sans" :size 13))
(setq doom-theme 'doom-one)
(setq org-directory "~/org/")
(setq deft-directory "~/org/deft")
(setq org-superstar-headline-bullets-list '("" "" "" "" ""))
;; Startup folded
(setq org-startup-folded 'overview)
(setq org-todo-keywords
'((sequence "TODO(t)" "PROJ(p)" "NEXT(n)" "STRT(s)" "WAIT(w)" "HOLD(h)" "IDEA(i)" "|" "DONE(d)" "KILL(k)")
(sequence "[ ](T)" "[-](S)" "[?](W)" "|" "[X](D)")
(sequence "|" "OKAY(o)" "YES(y)" "NO(n)")))
(setq display-line-numbers-type t)
(setq org-emphasis-alist
'(("*" (bold :slant italic :weight black )) ;; this make bold both italic and bold, but not color change
("/" (italic :foreground "dark salmon" )) ;; italic text, the text will be "dark salmon"
("_" underline :foreground "cyan" ) ;; underlined text, color is "cyan"
("=" (:background "snow1" :foreground "deep slate blue" )) ;; background of text is "snow1" and text is "deep slate blue"
("~" (:background "PaleGreen1" :foreground "dim gray" ))
("+" (:strike-through nil :foreground "dark orange" ))))
(setq org-hide-emphasis-markers t) ;; hides the emphasis markers
(setq org-roam-server-host "127.0.0.1"
org-roam-server-port 8080
org-roam-server-authenticate nil
org-roam-server-export-inline-images t
org-roam-server-serve-files nil
org-roam-server-served-file-extensions '("pdf" "mp4" "ogv")
org-roam-server-network-poll t
org-roam-server-network-arrows nil
org-roam-server-network-label-truncate t
org-roam-server-network-label-truncate-length 60
org-roam-server-network-label-wrap-length 20)
(setq org-fancy-priorities-list '((?A . "")
(?B . "")
(?C . "")
(?D . "")
(?1 . "")
(?2 . "")
(?3 . "")
(?4 . "")
(?I . "Important")))
(after! (:all org pdf-view))
(setq
org-noter-notes-window-location 'other-frame
org-noter-always-create-frame nil
org-noter-hide-other nil
org-noter-notes-search-path (list org-directory))
(setq org-log-done t)
(use-package! org-super-agenda
:init
(setq org-agenda-skip-scheduled-if-done t
org-agenda-skip-deadline-if-done t
org-agenda-include-deadlines t
org-agenda-block-separator nil
org-agenda-tags-column 100 ;; from testing this seems to be a good value
org-agenda-compact-blocks t
org-agenda-start-day nil ;; i.e. today
org-agenda-span 1
org-agenda-start-on-weekday nil)
(setq org-super-agenda-groups
'((:name "Next Items"
:time-grid t
:tag ("NEXT" "outbox"))
(:name "Important"
:priority "A")
(:name "Quick Picks"
:effort< "0:30")
(:priority<= "B"
:scheduled future
:order 1)))
:config
(org-super-agenda-mode))
;(setq org-super-agenda-groups '((:name "Today"
; :time-grid t
; :scheduled today)
; (:name "Due Today"
; :deadline today)
; (:name "Important"
; :priority "❗")
; (:name "Overdue"
; :deadline past)
; (:name "Due Soon"
; :deadline future)
; (:name "Big Outcomes"
; :tag "bo")))
(setq ispell-program-name "aspell")
(setq ispell-extra-args '("--sug-mode=ultra" "--lang=en_US"))
(setq spell-fu-directory "~/.config/+STORE/dictionary") ;; Please create this directory manually.
(setq ispell-personal-dictionary "~/.config/+STORE/dictionary/.pws")
(setq writeroom-fullscreen-effect t)
(setq
global-whitespace-mode t
whitespace-style '(face tabs tab-mark spaces space-mark trailing lines-tail newline newline-mark)
whitespace-display-mappings '(
(space-mark ?\ [?\u00B7] [?.])
(space-mark ?\xA0 [?\u00A4] [?_])
(newline-mark ?\n [ ?\n])
(tab-mark ?\t [?\u00BB ?\t] [?\\ ?\t])))
(global-whitespace-mode +1)
(setq +zen-text-scale 0.6)
(after! writeroom-mode
(add-hook 'writeroom-mode-hook
(defun +zen-cleaner-org ()
(when (and (eq major-mode 'org-mode) writeroom-mode)
(setq-local -display-line-numbers display-line-numbers
display-line-numbers nil)
(setq-local -org-indent-mode org-indent-mode)
(org-indent-mode -1)
(when (featurep 'org-superstar)
(setq-local -org-superstar-headline-bullets-list org-superstar-headline-bullets-list
;; org-superstar-headline-bullets-list '("🙐" "🙑" "🙒" "🙓" "🙔" "🙕" "🙖" "🙗")
org-superstar-headline-bullets-list '("🙘" "🙙" "🙚" "🙛")
-org-superstar-remove-leading-stars org-superstar-remove-leading-stars
org-superstar-remove-leading-stars t)
(org-superstar-restart)))))
(add-hook 'writeroom-mode-disable-hook
(defun +zen-dirty-org ()
(when (eq major-mode 'org-mode)
(setq-local display-line-numbers -display-line-numbers)
(when -org-indent-mode
(org-indent-mode 1))
(when (featurep 'org-superstar)
(setq-local org-superstar-headline-bullets-list -org-superstar-headline-bullets-list
org-superstar-remove-leading-stars -org-superstar-remove-leading-stars)
(org-superstar-restart))))))
(use-package! nov
:mode ("\\.epub\\'" . nov-mode)
:config
(map! :map nov-mode-map
:n "RET" #'nov-scroll-up)
(defun doom-modeline-segment--nov-info ()
(concat
" "
(propertize
(cdr (assoc 'creator nov-metadata))
'face 'doom-modeline-project-parent-dir)
" "
(cdr (assoc 'title nov-metadata))
" "
(propertize
(format "%d/%d"
(1+ nov-documents-index)
(length nov-documents))
'face 'doom-modeline-info)))
(advice-add 'nov-render-title :override #'ignore)
(defun +nov-mode-setup ()
(face-remap-add-relative 'variable-pitch
:family "Merriweather"
:height 1.4
:width 'semi-expanded)
(face-remap-add-relative 'default :height 1.3)
(setq-local line-spacing 0.2
next-screen-context-lines 4
shr-use-colors nil)
(require 'visual-fill-column nil t)
(setq-local visual-fill-column-center-text t
visual-fill-column-width 80
nov-text-width 80)
(visual-fill-column-mode 1)
(hl-line-mode -1)
(add-to-list '+lookup-definition-functions #'+lookup/dictionary-definition)
(setq-local mode-line-format
`((:eval
(doom-modeline-segment--workspace-name))
(:eval
(doom-modeline-segment--window-number))
(:eval
(doom-modeline-segment--nov-info))
,(propertize
" %P "
'face 'doom-modeline-buffer-minor-mode)
,(propertize
" "
'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive)
'display `((space
:align-to
(- (+ right right-fringe right-margin)
,(* (let ((width (doom-modeline--font-width)))
(or (and (= width 1) 1)
(/ width (frame-char-width) 1.0)))
(string-width
(format-mode-line (cons "" '(:eval (doom-modeline-segment--major-mode))))))))))
(:eval (doom-modeline-segment--major-mode)))))
(add-hook 'nov-mode-hook #'+nov-mode-setup))
(after! treemacs
(defvar treemacs-file-ignore-extensions '()
"File extension which `treemacs-ignore-filter' will ensure are ignored")
(defvar treemacs-file-ignore-globs '()
"Globs which will are transformed to `treemacs-file-ignore-regexps' which `treemacs-ignore-filter' will ensure are ignored")
(defvar treemacs-file-ignore-regexps '()
"RegExps to be tested to ignore files, generated from `treeemacs-file-ignore-globs'")
(defun treemacs-file-ignore-generate-regexps ()
"Generate `treemacs-file-ignore-regexps' from `treemacs-file-ignore-globs'"
(setq treemacs-file-ignore-regexps (mapcar 'dired-glob-regexp treemacs-file-ignore-globs)))
(if (equal treemacs-file-ignore-globs '()) nil (treemacs-file-ignore-generate-regexps))
(defun treemacs-ignore-filter (file full-path)
"Ignore files specified by `treemacs-file-ignore-extensions', and `treemacs-file-ignore-regexps'"
(or (member (file-name-extension file) treemacs-file-ignore-extensions)
(let ((ignore-file nil))
(dolist (regexp treemacs-file-ignore-regexps ignore-file)
(setq ignore-file (or ignore-file (if (string-match-p regexp full-path) t nil)))))))
(add-to-list 'treemacs-ignored-file-predicates #'treemacs-ignore-filter))
(setq treemacs-file-ignore-extensions
'(;; LaTeX
"aux"
"ptc"
"fdb_latexmk"
"fls"
"synctex.gz"
"toc"
;; LaTeX - glossary
"glg"
"glo"
"gls"
"glsdefs"
"ist"
"acn"
"acr"
"alg"
;; LaTeX - pgfplots
"mw"
;; LaTeX - pdfx
"pdfa.xmpi"
))
(setq treemacs-file-ignore-globs
'(;; LaTeX
"*/_minted-*"
;; AucTeX
"*/.auctex-auto"
"*/_region_.log"
"*/_region_.tex"))
(map! :leader
:desc "Change to spray mode"
"<f6>" #'spray-mode)
(use-package! mixed-pitch
:hook (org-mode . mixed-pitch-mode)
:config
(setq mixed-pitch-set-heigth t)
(set-face-attribute 'variable-pitch nil :height 180))