mirror of https://github.com/Flinner/dots.git
445 lines
15 KiB
EmacsLisp
445 lines
15 KiB
EmacsLisp
(add-hook 'markdown-mode-hook 'mixed-pitch-mode)
|
|
(add-hook 'org-mode-hook 'mixed-pitch-mode)
|
|
|
|
(setq leuven-scale-org-agenda-structure nil)
|
|
(setq leuven-scale-outline-headlines nil)
|
|
(setq doom-theme 'doom-gruvbox)
|
|
|
|
(setq doom-font (font-spec :family "FiraCode" :size 9.0 :weight 'regular)
|
|
doom-variable-pitch-font (font-spec :family "sans" :size 9.0))
|
|
(after! doom-themes
|
|
(set-fontset-font t 'arabic "Noto Sans Arabic UI")
|
|
(setq doom-themes-enable-bold t
|
|
doom-themes-enable-italic t
|
|
))
|
|
(custom-set-faces!
|
|
'(font-lock-comment-face :slant italic)
|
|
'(font-lock-keyword-face :slant italic)
|
|
)
|
|
;;(setq doom-font (font-spec :family "Open Sans" :size 12 :weight 'regular)
|
|
;;doom-variable-pitch-font (font-spec :family "sans" :size 12))
|
|
|
|
(setq display-line-numbers-type 't)
|
|
|
|
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
|
|
|
|
(map!
|
|
:n "<f5>" 'rustic-cargo-test
|
|
:n "C-<f5>" 'compile-on-save-mode
|
|
:n "<f6>" 'elfeed
|
|
;; :n "<f7>" email TODO: Add email
|
|
:n "<f8>" (cmd! (org-agenda nil "c"))
|
|
:n "<f12>" 'delve-open-or-select
|
|
)
|
|
|
|
(setq doom-leader-alt-key "C-SPC")
|
|
(setq doom-localleader-alt-key "C-SPC m")
|
|
|
|
(map! "C-h" 'backward-delete-char-untabify)
|
|
|
|
(defun doom/ediff-init-and-example ()
|
|
"ediff the current `init.el' with the example in doom-emacs-dir"
|
|
(interactive)
|
|
(ediff-files (concat doom-private-dir "init.el")
|
|
(concat doom-emacs-dir "init.example.el")))
|
|
|
|
(define-key! help-map
|
|
"di" #'doom/ediff-init-and-example
|
|
)
|
|
|
|
(setq-default fill-column 80)
|
|
|
|
(setq scroll-conservatively 10)
|
|
(setq scroll-margin 3)
|
|
|
|
;;(add-hook 'text-mode-hook 'mixed-pitch-mode)
|
|
(add-hook 'text-mode-hook 'blink-cursor-mode)
|
|
|
|
(use-package org-roam-server
|
|
:after org-roam
|
|
:config
|
|
(setq org-roam-server-host "127.0.0.1"
|
|
org-roam-server-port 8888
|
|
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)
|
|
|
|
(defun org-roam-server-open ()
|
|
"Ensure the server is active, then open the roam graph."
|
|
(interactive)
|
|
(unless (server-running-p)
|
|
(org-roam-server-mode 1))
|
|
(browse-url-xdg-open (format "http://localhost:%d" org-roam-server-port))))
|
|
|
|
;; Moved to Org Directory
|
|
|
|
(setq deft-directory "~/org/roam")
|
|
(setq deft-extensions '("md" "tex" "org"))
|
|
(setq deft-recursive t)
|
|
(setq deft-strip-title-regexp "\\(?:^%+\\|^#\\+TITLE: *\\|^[#* ]+\\|-\\*-[[:alpha:]]+-\\*-\\|^Title:[ ]*\\|#+$\\)")
|
|
|
|
(setq org-roam-dailies-capture-templates
|
|
(let ((head "\
|
|
:PROPERTIES:
|
|
:ID: %<%Y%m%d>-daily
|
|
:TITLE: %<%Y-%m-%d (%A)>
|
|
:STARTUP: showall
|
|
:ROAM_TAGS: dailies
|
|
:END:\
|
|
\n#+STARTUP: showall\
|
|
\* MetaData\
|
|
\n- type: [[id:8bedd21f][Dailies]]\
|
|
\n* Journal :journal: \
|
|
\n Feelings throught the day\
|
|
\n* Gratitude \n1. Past\n2. Present\n3. Future\
|
|
\n* Goals for today [/][%]\
|
|
\n- [ ] \
|
|
\n* The Good and Bad \
|
|
\n** YES \
|
|
\n** NO \
|
|
"))
|
|
`(("j" "journal" entry
|
|
#'org-roam-capture--get-point
|
|
"* %<%H:%M> %?"
|
|
:file-name "daily/%<%Y-%m-%d>"
|
|
:head ,head
|
|
:olp ("Journal"))
|
|
("t" "do today" item
|
|
#'org-roam-capture--get-point
|
|
"[ ] %(princ as/agenda-captured-link)"
|
|
:file-name "daily/%<%Y-%m-%d>"
|
|
:head ,head
|
|
:olp ("Do Today")
|
|
:immediate-finish t)
|
|
("m" "maybe do today" item
|
|
#'org-roam-capture--get-point
|
|
"[ ] %(princ as/agenda-captured-link)"
|
|
:file-name "daily/%<%Y-%m-%d>"
|
|
:head ,head
|
|
:olp ("Maybe Do Today")
|
|
:immediate-finish t))))
|
|
|
|
;(add-hook 'org-mode-hook #'delve-minor-mode-maybe-activate)
|
|
(setq delve-use-icons-in-completions t)
|
|
(set-evil-initial-state! 'delve-mode 'insert)
|
|
(map! :map delve-mode-map
|
|
:n "gr" #'delve-refresh-buffer
|
|
:n "<right>" #'delve-expand-insert-tolinks
|
|
:n "<left>" #'devle-expand-insert-backlinks
|
|
:n "TAB" #'delve-expand-toggle-sublist)
|
|
"RET" #'lister-key-action
|
|
:localleader
|
|
"RET" #'lister-key-action
|
|
"TAB" #'delve-expand-toggle-sublist
|
|
|
|
(defun org-roam-server-open ()
|
|
"Ensure the server is active, then open the roam graph."
|
|
(interactive)
|
|
(smartparens-global-mode -1)
|
|
(org-roam-server-mode 1)
|
|
(browse-url-xdg-open (format "http://localhost:%d" org-roam-server-port))
|
|
(smartparens-global-mode 1))
|
|
;; automatically enable server-mode
|
|
;; (after! org-roam
|
|
;; (smartparens-global-mode -1)
|
|
;; (org-roam-server-mode)
|
|
;; (smartparens-global-mode 1))
|
|
|
|
(setq org-roam-prefer-id-links t)
|
|
|
|
(setq org-directory "~/org/org/")
|
|
(setq org-college-file(concat org-directory "college.org"))
|
|
;; roam
|
|
(setq org-roam-directory "~/org/roam/")
|
|
(setq org-roam-dailies-directory "daily/")
|
|
(setq org-roam-intersting-file (concat org-roam-directory "internet/intersting.org"))
|
|
(setq org-roam-goals-file (concat org-roam-directory "goals.org"))
|
|
|
|
(use-package! org-super-agenda
|
|
:after org-agenda
|
|
;;:custom-face
|
|
;;(org-super-agenda-header ((default (:inherit propositum-agenda-heading))))
|
|
|
|
: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-compact-blocks t
|
|
org-agenda-start-day nil ;; i.e. today
|
|
org-agenda-span 1
|
|
org-agenda-start-on-weekday nil
|
|
)
|
|
|
|
(setq org-agenda-custom-commands
|
|
'(("c" "Super view"
|
|
(
|
|
(agenda "" ((org-agenda-overriding-header "")
|
|
(org-super-agenda-groups
|
|
'((:name "Today"
|
|
:time-grid t
|
|
:date today
|
|
:order 1)
|
|
(:discard (:anything t))
|
|
))))
|
|
(alltodo "" ((org-agenda-overriding-header "")
|
|
(org-super-agenda-groups
|
|
'(;;(:log t)
|
|
(:name "Important"
|
|
:priority "A"
|
|
:order 1
|
|
)
|
|
;; College
|
|
(:name "Events"
|
|
:tag "event"
|
|
:order 2
|
|
)
|
|
(:name "College"
|
|
:tag "college"
|
|
:order 3
|
|
)
|
|
;; (:name "Next"
|
|
;; :todo "STRT"
|
|
;; :order 2)
|
|
;; ====schedules====== ;;
|
|
;; (:name "habits"
|
|
;; :and (:habit t :scheduled today )
|
|
;; :order 13
|
|
;; )
|
|
(:name "Scheduled Soon"
|
|
:and (:scheduled future :not (:habit t))
|
|
:order 6)
|
|
(:name "Due Soon"
|
|
:deadline future
|
|
:order 6)
|
|
(:name "Missed"
|
|
:scheduled past
|
|
:deadline past
|
|
:order 7)
|
|
;;==============================;;
|
|
(:name "FOSS"
|
|
:tag "foss"
|
|
:order 9
|
|
)
|
|
(:name "Media to Consoom"
|
|
:tag "media"
|
|
:order 14
|
|
)
|
|
(:name "code"
|
|
:tag "code"
|
|
:order 15
|
|
)
|
|
(:name "Linux"
|
|
:tag "rice"
|
|
:order 16
|
|
)
|
|
|
|
(:discard (:habit t))
|
|
))))))))
|
|
:config
|
|
(org-super-agenda-mode))
|
|
|
|
(add-hook 'org-agenda-mode-hook 'elegant-agenda-mode)
|
|
|
|
(with-eval-after-load 'org-agenda
|
|
(define-key org-super-agenda-header-map "j" nil)
|
|
(define-key org-super-agenda-header-map "k" nil))
|
|
|
|
(advice-add 'org-agenda-quit :before 'org-save-all-org-buffers)
|
|
|
|
(add-hook 'org-mode-hook 'turn-on-auto-fill)
|
|
(defun update-org-latex-fragments ()
|
|
(org-latex-preview '(64))
|
|
(plist-put org-format-latex-options :scale text-scale-mode-amount)
|
|
(org-latex-preview '(16)))
|
|
(add-hook 'text-scale-mode-hook 'update-org-latex-fragments)
|
|
|
|
(eval-after-load "preview"
|
|
'(add-to-list 'preview-default-preamble "\\PreviewEnvironment{tikzpicture}" t))
|
|
|
|
(after! org (add-hook 'org-mode-hook 'turn-on-org-cdlatex))
|
|
|
|
(cl-defmacro lsp-org-babel-enable (lang)
|
|
"Support LANG in org source code block."
|
|
(setq centaur-lsp 'lsp-mode)
|
|
(cl-check-type lang stringp)
|
|
(let* ((edit-pre (intern (format "org-babel-edit-prep:%s" lang)))
|
|
(intern-pre (intern (format "lsp--%s" (symbol-name edit-pre)))))
|
|
`(progn
|
|
(defun ,intern-pre (info)
|
|
(let ((file-name (->> info caddr (alist-get :file))))
|
|
(unless file-name
|
|
(setq file-name (make-temp-file "babel-lsp-")))
|
|
(setq buffer-file-name file-name)
|
|
(lsp-deferred)))
|
|
(put ',intern-pre 'function-documentation
|
|
(format "Enable lsp-mode in the buffer of org source block (%s)."
|
|
(upcase ,lang)))
|
|
(if (fboundp ',edit-pre)
|
|
(advice-add ',edit-pre :after ',intern-pre)
|
|
(progn
|
|
(defun ,edit-pre (info)
|
|
(,intern-pre info))
|
|
(put ',edit-pre 'function-documentation
|
|
(format "Prepare local buffer environment for org source block (%s)."
|
|
(upcase ,lang))))))))
|
|
(defvar org-babel-lang-list
|
|
'("go" "python" "ipython" "bash" "sh"))
|
|
(dolist (lang org-babel-lang-list)
|
|
(eval `(lsp-org-babel-enable ,lang)))
|
|
|
|
(after! org
|
|
(setq org-capture-templates
|
|
'(
|
|
|
|
("t" "General Todo")
|
|
("tt" "General" entry
|
|
(file+headline +org-capture-todo-file "Inbox")
|
|
"* TODO %?\n%i")
|
|
("tT" "Today" entry
|
|
(file+headline +org-capture-todo-file "Inbox")
|
|
"* TODO %?\n%iSCHEDULED: %T\n")
|
|
|
|
;; College
|
|
("c" "College")
|
|
("ch" "Homework" entry
|
|
(file+headline org-college-file "Homework :college:hw:")
|
|
"* TODO %?\n%i:PROPERTIES:\n:Created: %U\n:END:")
|
|
("cq" "Quiz/Exam/Test" entry
|
|
(file+headline org-college-file "Quiz :college:exam:")
|
|
"* TODO %?\n%i:PROPERTIES:\n:Created: %U\n:END:")
|
|
("ce" "Event" entry
|
|
(file+headline org-college-file "Event :college:event:")
|
|
"* TODO %?\n%i:PROPERTIES:\n:Created: %U\n:END:")
|
|
("ct" "Todo" entry
|
|
(file+headline org-college-file "College Todo :college:")
|
|
"* TODO %?\n%i:PROPERTIES:\n:Created: %U\n:END:")
|
|
|
|
("i" "Interesting")
|
|
("iw" "Interesting Website" entry
|
|
(file+headline org-roam-intersting-file "Website")
|
|
"* %?\n%i\n")
|
|
("it" "Interesting tweet" entry
|
|
(file+headline org-roam-intersting-file "Tweet")
|
|
"- %?\n%i\n")
|
|
("ii" "Information" entry
|
|
(file+headline org-roam-intersting-file "Information")
|
|
"** PROJ %?\n%i\n")
|
|
("iq" "Quote" entry
|
|
(file+headline org-roam-intersting-file "Quotes")
|
|
"** %?\n%i\n")
|
|
("ip" "Project Idea" entry
|
|
(file+headline org-roam-goals-file "Project Ideas")
|
|
"** PROJ %?\n%i\n")
|
|
("ib" "Blog Ideas" entry
|
|
(file+headline org-roam-goals-file "Blog Ideas")
|
|
"- %?\n%i\n")
|
|
|
|
;; Media
|
|
("m" "Media")
|
|
("mr" "To Read" entry
|
|
(file+headline +org-capture-todo-file "To Read :media:read:")
|
|
"* TODO %?\n%i\n")
|
|
("mw" "To Watch" entry
|
|
(file+headline +org-capture-todo-file "To Watch :media:watch:")
|
|
"* TODO %?\n%i\n")
|
|
|
|
("r" "Rice")
|
|
("ie" "Emacs Ideas" entry
|
|
(file+headline +org-capture-todo-file "Emacs Ideas :emacs:rice:")
|
|
"- %?\n%i\n")
|
|
("ro" "Other Ideas" entry
|
|
(file+headline +org-capture-todo-file "Window Manager :wm:rice:")
|
|
"- %?\n%i\n")
|
|
|
|
("o" "Free/Open software")
|
|
("oa" "AUR" entry
|
|
(file+headline +org-capture-todo-file "AUR :foss:aur:")
|
|
"* TODO %? \n%i\n")
|
|
|
|
)))
|
|
|
|
;;(add-hook 'org-mode-hook #'mixed-pitch-mode)
|
|
(setq geiser-default-implementation 'guile)
|
|
|
|
(setq org-ditaa-jar-path "/usr/share/java/ditaa/ditaa-0.11.jar")
|
|
|
|
(setq org-hide-emphasis-markers t)
|
|
|
|
;(after! org (setq org-tags-column 60))
|
|
|
|
(setq-default elfeed-search-filter "@1-week-ago")
|
|
|
|
;(setq rmh-elfeed-org-files (list "~/.doom.d/elfeed.org" (concat org-roam-directory "internet/elfeed.org")))
|
|
(setq rmh-elfeed-org-files (list (concat org-roam-directory "elfeed.org")))
|
|
|
|
(setf url-queue-parallel-processes 20
|
|
url-queue-timeout 10)
|
|
|
|
(after! elfeed (map! :map elfeed-search-mode-map
|
|
:n "gv" 'elfeed-view-mpv
|
|
:n "R" 'elfeed-update
|
|
:n "r" 'elfeed-search-untag-all-unread
|
|
:n "u" 'elfeed-search-tag-all-unread
|
|
:n "G" 'evil-goto-line
|
|
:n "<f6>" 'elfeed-close-prev-buffer
|
|
:n "b" 'elfeed-search-browse-url
|
|
:n "c" 'elfeed-search-clear-filter
|
|
))
|
|
|
|
(defun elfeed-close-prev-buffer ()
|
|
(interactive)
|
|
"elfeed-kill and restore prev buffer"
|
|
(elfeed-kill-buffer)
|
|
(previous-buffer))
|
|
|
|
(defun elfeed-v-mpv (url title)
|
|
"Watch a video from URL in MPV"
|
|
(defvar cmd (format "mpv --ytdl-format=worst '%s'" url))
|
|
(save-window-excursion
|
|
(async-shell-command cmd)
|
|
(save-window-excursion
|
|
(shell-command (format"notify-send 'Loading Video' '%s'" title)))
|
|
(message "Video Loading")
|
|
)
|
|
)
|
|
|
|
|
|
(defun elfeed-view-mpv (&optional use-generic-p)
|
|
"Youtube-feed link"
|
|
(interactive "P")
|
|
(let ((entries (elfeed-search-selected)))
|
|
(cl-loop for entry in entries
|
|
do (elfeed-untag entry 'unread)
|
|
when (elfeed-entry-link entry)
|
|
do (elfeed-v-mpv it (elfeed-entry-title entry))) ;; print title
|
|
(mapc #'elfeed-search-update-entry entries)
|
|
(unless (use-region-p) (forward-line))))
|
|
|
|
;;(add-hook 'elfeed-show-mode-hook #'mixed-pitch-mode)
|
|
|
|
(setq lsp-rust-target "/tmp/rust-crap")
|
|
|
|
|
|
|
|
(with-eval-after-load 'telega
|
|
(define-key telega-msg-button-map "k" nil)
|
|
(define-key telega-msg-button-map "l" nil))
|
|
(setq telega-chat-bidi-display-reordering 'right-to-left)
|
|
|
|
(setq company-idle-delay 0.0
|
|
company-minimum-prefix-length 1)
|
|
|
|
(ranger-override-dired-mode t)
|
|
|
|
(when EMACS28+
|
|
(add-hook 'latex-mode-hook #'TeX-latex-mode))
|
|
(setq haskell-process-type 'cabal-new-repl)
|