dotfiles/.emacs

592 lines
23 KiB
Plaintext
Raw Normal View History

2023-04-06 21:24:21 -04:00
;;------------------------------------------------------------------------------
;; ᚳᚻᚪᚱᛚᛖᛋ ᛣᚱᚪᛚᚪᛈᛈ ᛖᛗᚪᚳᛋ ᛋᛖᛏᛏᛁᛝᛋ
;; * Зонгор * ᛣᚩᛝᚩᚱ *
;;------------------------------------------------------------------------------
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(unless (package-installed-p 'use-package)
(package-install 'use-package))
;; install packages automatically if not already present on your
;; system to be global for all packages
(require 'use-package-ensure)
(setq use-package-always-ensure t)
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(straight-use-package 'use-package)
(setq straight-use-package-by-default t)
2024-11-22 23:11:20 -05:00
(global-set-key [f11] 'toggle-frame-fullscreen)
2024-01-04 08:45:13 -05:00
(global-set-key (kbd "C-s") 'ripgrep-regexp)
2024-11-22 23:11:20 -05:00
(global-set-key (kbd "C-,") 'move-to-previous-window)
(global-set-key (kbd "C-.") 'move-to-next-window)
2024-01-04 08:45:13 -05:00
(global-set-key (kbd "M-i") 'xref-find-definitions)
(global-set-key (kbd "C-M-i") 'xref-pop-marker-stack)
;; Auto-insert braces. Has some counter-intuitive behaviour, unfortunately.
(electric-pair-mode 1)
(setf electric-pair-skip-self nil)
2024-08-02 15:46:23 -04:00
(set-frame-font "Fira Code 11")
2024-01-04 08:45:13 -05:00
;; setup fira code font ligatures
(let ((alist '((33 . ".\\(?:\\(?:\\(?:!\\.\\|!\\)\\|\\(?:==\\|=\\)\\)\\)") ;; !
(35 . ".\\(?:\\(?:[!(:={]\\|\\(?:#\\(?:##\\|#\\)\\|#\\)\\|\\?\\|\\[\\|\\(?:_(\\|_\\)\\)\\)") ;; #
(36 . ".\\(?:>\\)") ;; $
(37 . ".\\(?:%\\)") ;; %
(38 . ".\\(?:&\\)") ;; &
(42 . ".\\(?:\\(?:[/>]\\|\\(?:\\*\\*\\|\\*\\)\\)\\)") ;; *
(43 . ".\\(?:\\(?:\\(?:\\+\\+\\|\\+\\)\\|>\\)\\)") ;; +
(45 . ".\\(?:\\(?:[|~]\\|\\(?:-\\(?:-\\|>\\)\\|-\\)\\|\\(?:<<\\|<\\)\\|\\(?:>>\\|>\\)\\)\\)") ;; -
(46 . ".\\(?:\\(?:-\\|\\(?:\\.\\(?:\\.\\|<\\)\\|\\.\\)\\|=\\|\\?\\)\\)") ;; .
(47 . ".\\(?:\\(?:[>\\]\\|\\*\\|\\(?://\\|/\\)\\|\\(?:==\\|=\\)\\)\\)") ;; /
(48 . ".\\(?:x[0-9A-Fa-f]\\)") ;; 0
(58 . ".\\(?:\\(?:[<->]\\|\\(?::[:=]\\|:\\)\\)\\)") ;; :
(59 . ".\\(?:;\\)") ;; ;
(60 . ".\\(?:\\(?:[:>]\\|!--\\|\\(?:\\$>\\|\\$\\)\\|\\(?:\\*>\\|\\*\\)\\|\\(?:\\+>\\|\\+\\)\\|\\(?:-\\(?:[<>|]\\|-\\)\\|-\\)\\|\\(?:/>\\|/\\)\\|\\(?:<\\(?:[<=]\\|-\\)\\|<\\)\\|\\(?:=\\(?:[<>|]\\|\\(?:=>\\|=\\)\\)\\|=\\)\\|\\(?:|\\(?:>\\|\\(?:||\\||\\)\\)\\||\\)\\|\\(?:~[>~]\\|~\\)\\)\\)") ;; <
(61 . ".\\(?:\\(?:!=\\|/=\\|:=\\|<<\\|\\(?:=[=>]\\|=\\)\\|\\(?:>>\\|>\\)\\)\\)") ;; =
(62 . ".\\(?:\\(?:\\(?:->\\|-\\)\\|:\\|\\(?:=>\\|=\\)\\|\\(?:>\\(?:[=>]\\|-\\)\\|>\\)\\)\\)") ;; >
(63 . ".\\(?:\\(?:[:=]\\|\\.\\|\\?\\)\\)") ;; ?
(70 . ".\\(?:l\\)") ;; F
(84 . ".\\(?:l\\)") ;; T
(91 . ".\\(?:\\(?::]\\||\\)\\)") ;; [
(92 . ".\\(?:/\\)") ;; \
(93 . ".\\(?:#\\)") ;; ]
(94 . ".\\(?:=\\)") ;; ^
(95 . ".\\(?:\\(?:_\\||_\\)\\)") ;; _
(102 . ".\\(?:l\\)") ;; f
(119 . ".\\(?:ww\\)") ;; w
(123 . ".\\(?:|\\)") ;; {
(124 . ".\\(?:\\(?:[>}]\\|\\(?:->\\|-\\)\\|\\(?:=>\\|=\\)\\|]\\|\\(?:|\\(?:[=>]\\|-\\||>\\)\\||\\)\\)\\)") ;; |
(126 . ".\\(?:\\(?:[=>@]\\|-\\|\\(?:~>\\|~\\)\\)\\)"))))
(dolist (char-regexp alist)
(set-char-table-range composition-function-table (car char-regexp)
`([,(cdr char-regexp) 0 font-shape-gstring]))))
(scroll-bar-mode -1)
(tool-bar-mode -1)
(menu-bar-mode -1)
(show-paren-mode 1)
(blink-cursor-mode 0)
(set-cursor-color "#ffffff")
2023-04-06 21:24:21 -04:00
(defun move-to-previous-window ()
"Move to previous window."
(interactive)
(if (= (count-windows) 1)
(other-frame 1)
(select-window (previous-window))))
(defun move-to-next-window ()
"Move to next window."
(interactive)
(if (= (count-windows) 1)
(other-frame 1)
(select-window (next-window))))
(defun comment-eclipse ()
(interactive)
(let ((start (line-beginning-position))
(end (line-end-position)))
(when (or (not transient-mark-mode) (region-active-p))
(setq start (save-excursion
(goto-char (region-beginning))
(beginning-of-line)
(point))
end (save-excursion
(goto-char (region-end))
(end-of-line)
(point))))
(comment-or-uncomment-region start end)))
2024-11-25 14:03:40 -05:00
(defun camel-case-to-spaces (string)
"Convert a camel-cased STRING to a string with spaces between words and capitalize only the first word."
(let* ((case-fold-search nil) ; Ensure case-sensitive matching
(words (split-string (replace-regexp-in-string "\\([a-z]\\)\\([A-Z]\\)" "\\1 \\2" string) " "))
(first-word (car words))
(rest-words (mapcar 'downcase (cdr words)))
(result (concat (capitalize first-word) " " (mapconcat 'identity rest-words " "))))
result))
(defun doc-comment ()
(interactive)
"Insert a CPP documentation comment, at the beginning of the current line
and position the cursor inside the comment. Additionally insert the word under the cursor since most of our comments are just the name of the function anyways."
(princ "doc-comment")
(let* ((bounds (bounds-of-thing-at-point 'word))
(word (buffer-substring-no-properties (car bounds) (cdr bounds))))
(beginning-of-line)
(open-line 1)
(indent-according-to-mode)
(let* ((indentation (current-column)))
(insert "/**\n")
(indent-to indentation)
(insert (concat " * " (camel-case-to-spaces word) ".\n"))
(indent-to indentation)
(insert " */")
(end-of-line 0))))
2023-04-06 21:24:21 -04:00
(use-package evil
:ensure t
:init
(setq evil-want-keybinding nil)
(setq evil-want-integration t) ;; This is optional since it's already set to t by default.
:config
(evil-mode 1)
;; :q should kill the current buffer rather than quitting emacs entirely
(evil-ex-define-cmd "q" 'kill-this-buffer)
;; Need to type out :quit to close emacs
(evil-ex-define-cmd "quit" 'evil-quit)
(define-key evil-normal-state-map (kbd "C-\\") 'comment-eclipse)
(define-key evil-normal-state-map (kbd "u") 'undo-tree-undo)
2023-04-06 21:24:21 -04:00
(define-key evil-normal-state-map (kbd "q") 'undo-tree-redo)
(define-key evil-normal-state-map (kbd "w") 'evil-backward-word-begin)
(define-key evil-normal-state-map (kbd "H") 'evil-first-non-blank)
(define-key evil-normal-state-map (kbd "L") 'evil-end-of-line)
(define-key evil-normal-state-map (kbd "K") 'backward-paragraph)
(define-key evil-normal-state-map (kbd "J") 'forward-paragraph)
(define-key evil-normal-state-map (kbd "C-x l") 'list-buffers)
2024-08-02 15:46:23 -04:00
(define-key evil-normal-state-map (kbd "C-M-u") 'eval-buffer)
(define-key evil-normal-state-map (kbd "C-M-p") 'compile)
2024-11-25 14:03:40 -05:00
(define-key evil-normal-state-map (kbd "C-M-k") 'compile)
2023-04-06 21:24:21 -04:00
(define-key evil-normal-state-map (kbd "M-/") 'dabbrev-expand)
2024-11-22 23:26:41 -05:00
(define-key evil-normal-state-map (kbd "C-,") 'move-to-previous-window)
(define-key evil-normal-state-map (kbd "C-.") 'move-to-next-window)
2024-11-22 23:11:20 -05:00
(define-key evil-normal-state-map (kbd "C-M-\\") 'format-all-buffer)
;; (evil-define-key 'normal Buffer-menu-mode-map (kbd "RET") )
(evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter)
(evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-quick-look)
(evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide)
(evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter)
(evil-define-key 'normal neotree-mode-map (kbd "g") 'neotree-refresh)
(evil-define-key 'normal neotree-mode-map (kbd "n") 'neotree-next-line)
(evil-define-key 'normal neotree-mode-map (kbd "p") 'neotree-previous-line)
(evil-define-key 'normal neotree-mode-map (kbd "A") 'neotree-stretch-toggle)
(evil-define-key 'normal neotree-mode-map (kbd "H") 'neotree-hidden-file-toggle))
2024-08-02 15:46:23 -04:00
(use-package evil-collection
:after evil
:ensure t
:config
(evil-collection-init))
2023-08-30 16:28:42 -04:00
(use-package dashboard
:ensure t
:config
(dashboard-setup-startup-hook))
2023-04-25 01:06:49 -04:00
2023-04-06 21:24:21 -04:00
(use-package doom-themes
:ensure t
:config
2024-11-22 23:11:20 -05:00
;; Global settings (defaults)
(setq doom-themes-enable-bold t ; if nil, bold is universally disabled
doom-themes-enable-italic t) ; if nil, italics is universally disabled
(load-theme 'doom-monokai-classic t)
2024-11-22 23:11:20 -05:00
;; Enable custom neotree theme (all-the-icons must be installed!)
(doom-themes-neotree-config)
;; Corrects (and improves) org-mode's native fontification.
2023-04-06 21:24:21 -04:00
(doom-themes-org-config))
2024-11-22 23:26:41 -05:00
(use-package solaire-mode
:config
(solaire-global-mode +1))
2024-11-22 23:11:20 -05:00
(use-package all-the-icons
:if (display-graphic-p))
2024-08-02 15:46:23 -04:00
2024-11-22 23:26:41 -05:00
(use-package nerd-icons)
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1))
2023-08-30 16:28:42 -04:00
(use-package treemacs
2023-04-25 01:06:49 -04:00
:ensure t
2023-08-30 16:28:42 -04:00
:defer t
:init
(with-eval-after-load 'winum
(define-key winum-keymap (kbd "M-0") #'treemacs-select-window))
2023-04-25 01:06:49 -04:00
:config
2023-08-30 16:28:42 -04:00
(progn
(setq treemacs-collapse-dirs (if treemacs-python-executable 3 0)
treemacs-deferred-git-apply-delay 0.5
treemacs-directory-name-transformer #'identity
treemacs-display-in-side-window t
treemacs-eldoc-display 'simple
treemacs-file-event-delay 2000
treemacs-file-extension-regex treemacs-last-period-regex-value
treemacs-file-follow-delay 0.2
treemacs-file-name-transformer #'identity
treemacs-follow-after-init t
treemacs-expand-after-init t
treemacs-find-workspace-method 'find-for-file-or-pick-first
treemacs-git-command-pipe ""
treemacs-goto-tag-strategy 'refetch-index
treemacs-header-scroll-indicators '(nil . "^^^^^^")
treemacs-hide-dot-git-directory t
treemacs-indentation 2
treemacs-indentation-string " "
treemacs-is-never-other-window nil
treemacs-max-git-entries 5000
treemacs-missing-project-action 'ask
treemacs-move-forward-on-expand nil
treemacs-no-png-images nil
treemacs-no-delete-other-windows t
treemacs-project-follow-cleanup nil
treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory)
treemacs-position 'left
treemacs-read-string-input 'from-child-frame
treemacs-recenter-distance 0.1
treemacs-recenter-after-file-follow nil
treemacs-recenter-after-tag-follow nil
treemacs-recenter-after-project-jump 'always
treemacs-recenter-after-project-expand 'on-distance
treemacs-litter-directories '("/node_modules" "/.venv" "/.cask")
treemacs-project-follow-into-home nil
treemacs-show-cursor nil
treemacs-show-hidden-files t
treemacs-silent-filewatch nil
treemacs-silent-refresh nil
treemacs-sorting 'alphabetic-asc
treemacs-select-when-already-in-treemacs 'move-back
treemacs-space-between-root-nodes t
treemacs-tag-follow-cleanup t
treemacs-tag-follow-delay 1.5
treemacs-text-scale nil
treemacs-user-mode-line-format nil
treemacs-user-header-line-format nil
treemacs-wide-toggle-width 70
treemacs-width 35
treemacs-width-increment 1
treemacs-width-is-initially-locked t
treemacs-workspace-switch-cleanup nil)
2024-11-22 23:11:20 -05:00
;; The default width and height of the icons is 22 pixels. If you are
;; using a Hi-DPI display, uncomment this to double the icon size.
;;(treemacs-resize-icons 44)
(treemacs-follow-mode nil)
2023-08-30 16:28:42 -04:00
(treemacs-filewatch-mode t)
(treemacs-fringe-indicator-mode 'always)
(when treemacs-python-executable
(treemacs-git-commit-diff-mode t))
(pcase (cons (not (null (executable-find "git")))
(not (null treemacs-python-executable)))
(`(t . t)
(treemacs-git-mode 'deferred))
(`(t . _)
(treemacs-git-mode 'simple)))
(treemacs-hide-gitignored-files-mode nil))
:bind
(:map global-map
("M-0" . treemacs-select-window)
("C-x t 1" . treemacs-delete-other-windows)
("C-x t t" . treemacs)
("C-x t d" . treemacs-select-directory)
("C-x t B" . treemacs-bookmark)
("C-x t C-t" . treemacs-find-file)
("C-x t M-t" . treemacs-find-tag)))
(use-package treemacs-evil
:after (treemacs evil)
:ensure t)
(use-package treemacs-projectile
:after (treemacs projectile)
:ensure t)
(use-package treemacs-icons-dired
:hook (dired-mode . treemacs-icons-dired-enable-once)
:ensure t)
(use-package treemacs-magit
:after (treemacs magit)
:ensure t)
2024-11-22 23:11:20 -05:00
(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode
:after (treemacs persp-mode) ;;or perspective vs. persp-mode
:ensure t
:config (treemacs-set-scope-type 'Perspectives))
(use-package treemacs-tab-bar ;;treemacs-tab-bar if you use tab-bar-mode
:after (treemacs)
:ensure t
:config (treemacs-set-scope-type 'Tabs))
2023-04-25 01:06:49 -04:00
(use-package centaur-tabs
2023-08-30 16:28:42 -04:00
:init
(setq centaur-tabs-enable-key-bindings t)
2023-04-25 01:06:49 -04:00
:config
2023-08-30 16:28:42 -04:00
(setq centaur-tabs-style "bar"
centaur-tabs-height 32
centaur-tabs-set-icons t
centaur-tabs-show-new-tab-button t
centaur-tabs-set-modified-marker t
centaur-tabs-show-navigation-buttons t
centaur-tabs-set-bar 'under
centaur-tabs-show-count nil
;; centaur-tabs-label-fixed-length 15
;; centaur-tabs-gray-out-icons 'buffer
;; centaur-tabs-plain-icons t
x-underline-at-descent-line t
centaur-tabs-left-edge-margin nil)
(centaur-tabs-change-fonts (face-attribute 'default :font) 110)
(centaur-tabs-headline-match)
;; (centaur-tabs-enable-buffer-alphabetical-reordering)
;; (setq centaur-tabs-adjust-buffer-order t)
2023-04-25 01:06:49 -04:00
(centaur-tabs-mode t)
2023-08-30 16:28:42 -04:00
(setq uniquify-separator "/")
(setq uniquify-buffer-name-style 'forward)
(defun centaur-tabs-buffer-groups ()
"`centaur-tabs-buffer-groups' control buffers' group rules.
Group centaur-tabs with mode if buffer is derived from `eshell-mode' `emacs-lisp-mode' `dired-mode' `org-mode' `magit-mode'.
All buffer name start with * will group to \"Emacs\".
Other buffer group by `centaur-tabs-get-group-name' with project name."
(list
(cond
;; ((not (eq (file-remote-p (buffer-file-name)) nil))
;; "Remote")
((or (string-equal "*" (substring (buffer-name) 0 1))
(memq major-mode '(magit-process-mode
magit-status-mode
magit-diff-mode
magit-log-mode
magit-file-mode
magit-blob-mode
magit-blame-mode
)))
"Emacs")
((derived-mode-p 'prog-mode)
"Editing")
((derived-mode-p 'dired-mode)
"Dired")
((memq major-mode '(helpful-mode
help-mode))
"Help")
((memq major-mode '(org-mode
org-agenda-clockreport-mode
org-src-mode
org-agenda-mode
org-beamer-mode
org-indent-mode
org-bullets-mode
org-cdlatex-mode
org-agenda-log-mode
diary-mode))
"OrgMode")
(t
(centaur-tabs-get-group-name (current-buffer))))))
:hook
(dashboard-mode . centaur-tabs-local-mode)
(term-mode . centaur-tabs-local-mode)
(calendar-mode . centaur-tabs-local-mode)
(org-agenda-mode . centaur-tabs-local-mode)
2023-04-25 01:06:49 -04:00
:bind
("C-<prior>" . centaur-tabs-backward)
2023-08-30 16:28:42 -04:00
("C-<next>" . centaur-tabs-forward)
("C-S-<prior>" . centaur-tabs-move-current-tab-to-left)
("C-S-<next>" . centaur-tabs-move-current-tab-to-right)
(:map evil-normal-state-map
("g t" . centaur-tabs-forward)
("g T" . centaur-tabs-backward)))
2023-04-25 01:06:49 -04:00
2024-11-22 23:11:20 -05:00
(use-package undo-tree
:config (global-undo-tree-mode 1)
:diminish undo-tree-mode)
(use-package format-all
:hook ((format-all-mode-hook . format-all-ensure-formatter)))
(use-package rainbow-delimiters
:hook ((prog-mode-hook . rainbow-delimiters-mode)))
(use-package dumb-jump
:hook ((xref-backend-functions . dumb-jump-xref-activate)))
(use-package elfeed
:config
2024-01-04 08:45:13 -05:00
(global-set-key (kbd "C-x w") 'elfeed)
2024-11-22 23:11:20 -05:00
(setq elfeed-feeds
2024-01-04 08:45:13 -05:00
'(("https://programming.dev/feeds/c/rust.xml?sort=Active" programming)
("https://programming.dev/feeds/c/gamedev.xml?sort=Active" programming)
("https://hexbear.net/feeds/c/programming.xml?sort=Active" programming)
("https://programming.dev/feeds/c/golang.xml?sort=Active" programming)
("https://programming.dev/feeds/c/programming.xml?sort=Active" programming)
("https://xkcd.com/atom.xml" webcomic)
("https://www.existentialcomics.com/rss.xml" webcomic)
("https://hackaday.com/blog/feed/" hack)
("https://itsfoss.com/feed/" linux)
("https://lemmy.ml/feeds/c/linux.xml?sort=Active" linux os)
("https://lemmy.ml/feeds/c/raspberrypi.xml?sort=Active" os)
("http://git.9front.org/plan9front/plan9front/HEAD/feed.rss" os plan9)
("https://lemmy.ml/feeds/c/opensource.xml?sort=Active" os)
("https://lemmy.ml/feeds/c/linux_gaming.xml?sort=Active" games linux)
("https://steamcommunity.com/groups/GrabFreeGames/rss/" games)
("https://hexbear.net/feeds/c/news.xml?sort=Active" news)
("https://feeds.npr.org/1001/rss.xml" news)
("https://www.scmp.com/rss/91/feed" news)
("https://www.currentaffairs.org/feed" news)
("https://itsgoingdown.org/feed" news)
("http://feeds.ancientfaith.com/AmonSul" podcast)
("https://feeds.transistor.fm/the-magnificast" podcast)
("https://anchor.fm/s/c38df04/podcast/rss" podcast)
("https://yogpod.libsyn.com/rss" podcast)
("https://revolutionspodcast.libsyn.com/rss" podcast)
("https://feeds.acast.com/public/shows/5e7b777ba085cbe7192b0607" podcast)
("https://www.omnycontent.com/d/playlist/aaea4e69-af51-495e-afc9-a9760146922b/48da3539-5da0-41ed-a1c3-aac50170b88f/f7810480-e2d3-4be5-a559-aac50170b8a6/podcast.rss" podcast)
("https://feeds.soundcloud.com/users/soundcloud:users:672423809/sounds.rss" podcast)
("https://www.omnycontent.com/d/playlist/aaea4e69-af51-495e-afc9-a9760146922b/4a3ca742-9a68-4850-a727-ab790176c0e9/d04153b0-fc4c-4191-ab18-ab790179c563/podcast.rss" podcast)
("https://feeds.soundcloud.com/users/soundcloud:users:211911700/sounds.rss" podcast)
("https://access.acast.com/rss/5fd1001d81367d4cb41fe325/Q6BVQ6VF" podcast)
("https://feeds.npr.org/344098539/podcast.xml" podcast))))
2023-04-06 21:24:21 -04:00
(use-package projectile
:ensure t
2024-11-22 23:11:20 -05:00
:init
(projectile-mode +1)
:bind (:map projectile-mode-map
("s-p" . projectile-command-map)
("C-c p" . projectile-command-map)))
2023-04-06 21:24:21 -04:00
2024-08-02 15:46:23 -04:00
(use-package ivy
:init (ivy-mode 1))
2024-11-22 23:11:20 -05:00
(use-package org-modern
2023-04-06 21:24:21 -04:00
:config
2024-11-22 23:11:20 -05:00
(setq
;; Edit settings
org-auto-align-tags nil
org-tags-column 0
org-catch-invisible-edits 'show-and-error
org-special-ctrl-a/e t
org-insert-heading-respect-content t
;; Org styling, hide markup etc.
org-hide-emphasis-markers t
org-pretty-entities t
org-ellipsis "…"
;; Agenda styling
org-agenda-tags-column 0
org-agenda-block-separator ?─
org-agenda-time-grid
'((daily today require-timed)
(800 1000 1200 1400 1600 1800 2000)
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
org-agenda-current-time-string
"◀── now ─────────────────────────────────────────────────")
2024-08-02 15:46:23 -04:00
:init
2024-11-22 23:11:20 -05:00
(add-hook 'org-mode-hook #'org-modern-mode)
(add-hook 'org-mode-hook (lambda ()
(setq buffer-face-mode-face '(:family "Fira Code" :height 100))
(buffer-face-mode)))
(add-hook 'org-agenda-finalize-hook #'org-modern-agenda))
2023-04-06 21:24:21 -04:00
2024-11-22 23:11:20 -05:00
(use-package restclient)
2023-04-06 21:24:21 -04:00
(use-package markdown-mode
:ensure t
:mode ("README\\.md\\'" . gfm-mode)
:init (setq markdown-command "multimarkdown"))
(use-package docker
:ensure t
:bind ("C-c d" . docker))
(use-package docker-compose-mode)
2023-04-25 01:06:49 -04:00
(use-package web-mode
:config
2024-11-22 23:11:20 -05:00
(add-to-list 'auto-mode-alist '("\\.jsx?$" . web-mode))
(setq web-mode-content-types-alist '(("jsx" . "\\.js[x]?\\'"))))
(use-package typescript-mode)
(use-package tide
:ensure t
:after (typescript-mode company flycheck)
:hook ((typescript-mode . tide-setup)
(typescript-mode . tide-hl-identifier-mode)
(before-save . tide-format-before-save)))
2024-08-02 15:46:23 -04:00
(use-package uxntal-mode)
(use-package hy-mode)
(use-package lua-mode)
2023-04-25 01:06:49 -04:00
(use-package elm-mode)
2023-04-06 21:24:21 -04:00
(use-package go-mode)
(use-package rust-mode)
(use-package cargo)
(use-package ccls
2024-11-22 23:11:20 -05:00
:ensure t
:init (setq ccls-executable "/usr/bin/ccls")
:hook ((c-mode c++-mode objc-mode cuda-mode) .
(lambda () (require 'ccls) (lsp))))
2023-04-06 21:24:21 -04:00
(use-package lsp-mode
:commands (lsp lsp-deferred)
:init
(setq lsp-keymap-prefix "C-c l")
2024-11-22 23:11:20 -05:00
:hook
((go-mode) . lsp)
((rust-mode) . lsp))
(use-package lsp-ui
:hook (lsp-mode . lsp-ui-mode)
:config
(setq lsp-ui-doc-enable t))
2023-04-06 21:24:21 -04:00
2024-01-04 08:45:13 -05:00
(use-package sly
2023-04-06 21:24:21 -04:00
:ensure t
:config
(setq inferior-lisp-program "sbcl"))
2023-04-06 21:24:21 -04:00
2024-01-04 08:45:13 -05:00
(use-package vterm
:ensure t)
2023-04-06 21:24:21 -04:00
2024-11-22 23:11:20 -05:00
(use-package dash)
(use-package column-enforce-mode)
(use-package desktop)
(use-package magit)
(use-package magit-lfs
:ensure t
:pin melpa)
(use-package forge
:after magit)
(use-package ripgrep)
(use-package git-gutter
:ensure t
:init (global-git-gutter-mode t))
2023-04-06 21:24:21 -04:00
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
2024-11-22 23:11:20 -05:00
'(inhibit-startup-screen t)
'(neo-theme 'icons))
2023-04-06 21:24:21 -04:00
(custom-set-faces
2024-11-22 23:11:20 -05:00
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)