Skip to content

Instantly share code, notes, and snippets.

@hacknightly
Last active September 16, 2023 18:47
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Embed
What would you like to do?
;; emacs housekeeping
(tool-bar-mode -1)
(scroll-bar-mode -1)
(setq create-lockfiles nil)
; delete excess backup versions silently
(setq delete-old-versions -1)
; use version control
(setq version-control t)
; make backups file even when in version controlled dir
(setq vc-make-backup-files t)
; which directory to put backups file
(setq backup-directory-alist `(("." . "~/.emacs.d/backups")))
; don't ask for confirmation when opening symlinked file
(setq vc-follow-symlinks t)
; transform backups file name
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)))
; inhibit useless and old-school startup screen
(setq inhibit-startup-screen t)
; silent bell when you make a mistake
(setq ring-bell-function 'ignore)
; use utf-8 by default
(setq coding-system-for-read 'utf-8)
(setq coding-system-for-write 'utf-8)
; sentence SHOULD end with only a point.
(setq sentence-end-double-space nil)
; toggle wrapping text at the 80th character
(setq default-fill-column 80)
; Open to inbox file
(find-file "~/Dropbox/darrellbanks.com/org/tasks/inbox.org")
;; package management
(require 'package)
(setq package-enable-at-startup nil)
(package-initialize)
(setq package-archives '(("org" . "http://orgmode.org/elpa/")
("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "https://melpa.org/packages/")))
;; path management
(use-package exec-path-from-shell
:ensure t)
(when (memq window-system '(mac ns x))
(exec-path-from-shell-initialize))
(defun goto-init-file ()
"Open the init file."
(interactive)
(find-file user-init-file))
;; magit
(use-package magit :ensure t)
;; org mode
(use-package org
:config
(setq org-return-follows-link t)
(setq org-confirm-babel-evaluate nil)
(setq org-agenda-files '("~/Dropbox/darrellbanks.com/org/projects"))
(setq org-outline-path-complete-in-steps nil)
(setq org-refile-use-outline-path nil)
(setq org-todo-keyword-faces '(("NOTE" . "#ffb951")))
(setq org-todo-keywords '((sequence "TODO(t)" "PROGRESS(p)" "|" "DONE(d)" "NOTE(n)")))
(setq org-refile-targets '((nil :maxlevel . 1)
(org-agenda-files :maxlevel . 1)))
(setq org-capture-templates
'(("t" "Todo" entry (file "~/Dropbox/darrellbanks.com/org/tasks/inbox.org")
"* TODO %?")
("n" "Note" entry (file "~/Dropbox/darrellbanks.com/org/tasks/inbox.org")
"* NOTE %?")))
(org-babel-do-load-languages
'org-babel-load-languages
'((shell . t)
(js . t)
(python . t)))
(org-mode-restart))
(define-skeleton babel-skeleton
"Header info for a emacs-org file."
"#+TITLE:" str " \n"
"#+AUTHOR: Darrell Banks\n"
"#+email: howdy@changeset.io\n"
"#+INFOJS_OPT: \n"
"#+BABEL: :session *js* :session *python* :cache yes :results output graphics :exports both :tangle yes \n"
"-----"
)
;; org-roam
(use-package org-roam
:ensure t
:init
(setq org-roam-directory "~/Dropbox/darrellbanks.com/org/notes")
(setq org-link-file-path-type 'absolute)
:config
(org-roam-db-autosync-mode))
(use-package org-roam-ui
:after org-roam
:config
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t
org-roam-ui-open-on-start t))
;; Hugo
(use-package ox-hugo
:ensure t)
(setq org-hugo-base-dir "~/Dropbox/darrellbanks.com"
time-stamp-active t
time-stamp-start "#\\+lastmod:[ \t]*"
time-stamp-end "$"
time-stamp-format "%04Y-%02m-%02d")
(add-hook 'before-save-hook 'time-stamp nil)
;; Visual settings
;; - org mode
(use-package org-superstar
:ensure t
:init
(org-superstar-mode 1)
:config
(setq org-superstar-special-todo-items t))
;; - font
(set-face-attribute 'default nil :font "MonoLisa" :height 180)
;; - icons
(use-package all-the-icons :ensure t)
;; - company
(use-package company
:ensure t
:init
(add-hook 'after-init-hook 'global-company-mode))
;; - modeline
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1))
;; - indents
(setq-default indent-tabs-mode nil)
(setq-default tab-width 2)
(setq indent-line-function 'insert-space)
;; - themes
(use-package doom-themes
:ensure t
:config
;; 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 'modus-vivendi t)
;; Corrects (and improves) org-mode's native fontification.
(doom-themes-org-config))
;; use-package
(unless (package-installed-p 'use-package) ; unless it is already installed
(package-refresh-contents) ; updage packages archive
(package-install 'use-package)) ; and install the most recent version of use-package
(setq use-package-always-ensure t)
;; projectile
(use-package projectile :ensure t
:config
(projectile-global-mode))
;; Editing
;; - brackets
(electric-pair-mode 1)
;; Languages
;; tree sitter
(setq treesit-extra-load-path '("~/ThirdParty/tree-sitter-module/dist"))
(add-to-list 'auto-mode-alist '("\\.css\\'" . css-ts-mode))
(add-to-list 'auto-mode-alist '("\\.py\\'" . python-ts-mode))
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode))
;; PlantUML
(use-package plantuml-mode :ensure t
:mode (("\\.plantuml$" . plantuml-mode)))
(setq plantuml-executable-path "/opt/homebrew/bin/plantuml")
(setq plantuml-default-exec-mode 'executable)
;; Markdown
(use-package markdown-mode :ensure t)
;; - Eglot
(use-package eglot
:config
(add-to-list 'eglot-server-programs
'(web-mode . ("svelteserver" "--stdio"))))
(add-hook 'typescript-ts-mode-hook 'eglot-ensure)
(add-hook 'tsx-ts-mode-hook 'eglot-ensure)
(add-hook 'python-ts-mode-hook 'eglot-ensure)
(add-hook 'json-ts-mode-hook 'eglot-ensure)
(add-hook 'js-ts-mode-hook 'eglot-ensure)
(add-hook 'web-mode-hook 'eglot-ensure)
(add-hook 'scala-mode 'eglot-ensure)
;; - python
(add-hook 'python-ts-mode-hook 'eglot-ensure)
;; - haskell
(use-package haskell-mode :ensure t)
;; - web
(use-package web-mode :ensure t
:mode (("\\.html$" . web-mode)))
(use-package svelte-mode :ensure t
:mode (("\\.svelte$" . web-mode)
))
;; - scala
(use-package scala-mode
:interpreter ("scala" . scala-mode))
;; - prettier
(use-package prettier-js :ensure t
:init
(add-hook 'typescript-ts-mode-hook 'prettier-js-mode)
(add-hook 'js-mode-hook 'prettier-js-mode)
(add-hook 'svelte-mode-hook 'prettier-js-mode)
(add-hook 'web-mode-hook 'prettier-js-mode))
;; flycheck
(use-package flycheck :ensure t)
;; treemacs
(use-package treemacs :ensure t)
(use-package treemacs-evil :ensure t)
(use-package treemacs-projectile :ensure t)
;; evil-mc
(use-package evil-mc
:ensure t
:config
(global-evil-mc-mode 1))
;; ivy
(use-package ivy
:ensure t
:custom
(ivy-use-selectable-prompt t)
(ivy-count-format "(%d/%d) ")
(ivy-use-virtual-buffers t)
:config
(ivy-mode))
(use-package ivy-rich
:ensure t
:after ivy
:custom
(ivy-virtual-abbreviate 'full
ivy-rich-switch-buffer-align-virtual-buffer t
ivy-rich-path-style 'abbrev)
:config
(ivy-set-display-transformer 'ivy-switch-buffer
'ivy-rich-switch-buffer-transformer))
(use-package all-the-icons-ivy
:ensure t
:init (add-hook 'after-init-hook 'all-the-icons-ivy-setup))
(use-package counsel
:after ivy
:ensure t
:config
(counsel-mode))
(use-package counsel-projectile :ensure t)
;; movement
(use-package avy :ensure t)
(use-package wgrep :ensure t)
(use-package swiper :ensure t)
(use-package imenu-list :ensure t
:init
(setq imenu-list-auto-resize t)
(setq imenu-list-focus-after-activation t))
;; Evil Mode
(use-package evil
:ensure t
:config
(evil-set-undo-system 'undo-redo)
(evil-mode))
;; Key Bindings
(use-package which-key :ensure t
:init (which-key-mode))
(use-package general :ensure t
:config
(general-evil-setup t)
;; xref keys
(general-define-key
:states '(normal)
:keymaps 'xref--xref-buffer-mode-map
"TAB" 'xref-goto-xref)
;; org keys
(general-define-key
:states '(normal visual)
:keymaps 'org-mode-map
"t" 'org-todo
"." 'org-time-stamp
"-" 'org-ctrl-c-minus
"+" 'org-ctrl-c-ctrl-c
"*" 'org-ctrl-c-star
"^" 'org-sort
"{" 'org-edit-src-code
"|" 'org-table-create-or-convert-from-region
"RET" 'org-open-at-point
"TAB" 'org-cycle)
(general-define-key
:states '(normal)
:prefix ","
:keymaps 'org-mode-map
"<backtab>" 'org-promote-subtree
"," "C-c C-c"
"/" 'org-sparse-tree
"b" '(:ignore t :which-key "Babel")
"bi" 'org-insert-structure-template
"bx" 'org-babel-execute-src-block
"bh" 'org-babel-insert-header-arg
"bn" 'org-babel-next-src-block
"bp" 'org-babel-previous-src-block
"bs" 'babel-skeleton
"c" '(:ignore t :which-key "Clocks")
"ci" 'org-clock-in
"co" 'org-clock-out
"cs" 'org-schedule
"cd" 'org-deadline
"t" 'org-set-tags-command
"o" 'org-occur
"r" 'org-refile
"A" 'org-archive-subtree
"il" 'org-insert-link
"RET" 'org-meta-return
"TAB" 'org-demote-subtree
)
;; general keys
(general-define-key
:states '(normal visual insert emacs treemacs)
:prefix "SPC"
:non-normal-prefix "C-SPC"
;; M-x
"SPC" '(counsel-M-x :which-key "M-x")
;; Applications
"a" '(:ignore t :which-key "Applications")
"ao" '(:ignore t :which-key "Org")
"aoa" '(org-agenda :which-key "Agenda")
"aoc" '(org-capture :which-key "Capture")
"ao>" '(org-goto-calendar :which-key "Go To Calendar")
"at" '(:ignore t :which-key "Treemacs")
"atd" '(treemacs-select-directory :which-key "Select Directory")
"aor" '(:ignore t :which-key "Org Roam")
"aori" '(org-roam-node-insert :which-key "Insert Node")
"aorf" '(org-roam-node-find :which-key "Find Node")
"aoru" '(org-roam-ui-open :which-key "Open UI")
"aos" '(org-edit-src-exit :which-key "Exit Src Edit")
;; Buffers
"b" '(:ignore t :which-key "Buffers")
"bl" '(list-buffers :which-key "List Buffers")
"bb" '(ivy-switch-buffer :which-key "Switch Buffer (ivy)")
"bd" '(kill-this-buffer :which-key "Kill Buffer")
"bp" '(previous-buffer :which-key "Previous Buffer")
"bn" '(next-buffer :which-key "Next Buffer")
"bs" '(scratch-buffer :which-key "Scratch Buffer")
;; Toggles
"t" '(:ignore t :which-key "Toggles")
"tl" '(display-line-numbers-mode :which-key "Line Numbers")
"ti" '(imenu-list-smart-toggle :which-key "IMenu List")
;; Avy
"j" '(:ignore t :which-key "Jump To")
"jl" '(avy-goto-line :which-key "Jump To Line (avy)")
"jw" '(avy-goto-word-1 :which-key "Jump To Worg (avy)")
;; Counsel
"/" '(counsel-ag :which-key "Search in project")
"p" '(:ignore t :which-key "Projectile")
"pp" '(counsel-projectile-switch-project :which-key "Switch Project (projectile)")
"pf" '(counsel-projectile-find-file :which-key "Find Files In Project (projectile)")
;; Files
"f" '(:ignore t :which-key "Files")
"fed" '(goto-init-file :which-key "Go to init file")
"ft" '(treemacs :which-key "Treemacs Filetree")
;; Windows
"w" '(:ignore t :which-key "Windows")
"wd" '(delete-window :which-key "Delete Window")
"w/" '(split-window-right :which-key "Split Window Right")
"w-" '(split-window-below :which-key "Split Window Below")
"wh" '(windmove-left :which-key "Move to Window on Left")
"wl" '(windmove-right :which-key "Move to Window on Right")
"wj" '(windmove-down :which-key "Move to Window Below")
"wk" '(windmove-up :which-key "Move to Window Above")
;; Eglot
"gg" '(eglot-find-typeDefinition :which-key "Find Definition")
"gi" '(eglot-find-implementation :which-key "Find Implementation")
;; Emacs
"q" '(:ignore t :which-key "Quit")
"qr" '(restart-emacs :which-key "Restart Emacs")
;; Images
"i" '(:ignore t :which-key "Images")
"ii" '(image-increase-size :which-key "Increase Size")
))
(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.
'(connection-local-criteria-alist
'(((:application tramp :protocol "flatpak")
tramp-container-connection-local-default-flatpak-profile)
((:application tramp :machine "localhost")
tramp-connection-local-darwin-ps-profile)
((:application tramp :machine "W30WC2359V")
tramp-connection-local-darwin-ps-profile)
((:application tramp)
tramp-connection-local-default-system-profile tramp-connection-local-default-shell-profile)
((:application eshell)
eshell-connection-default-profile)))
'(connection-local-profile-alist
'((tramp-container-connection-local-default-flatpak-profile
(tramp-remote-path "/app/bin" tramp-default-remote-path "/bin" "/usr/bin" "/sbin" "/usr/sbin" "/usr/local/bin" "/usr/local/sbin" "/local/bin" "/local/freeware/bin" "/local/gnu/bin" "/usr/freeware/bin" "/usr/pkg/bin" "/usr/contrib/bin" "/opt/bin" "/opt/sbin" "/opt/local/bin"))
(tramp-connection-local-darwin-ps-profile
(tramp-process-attributes-ps-args "-acxww" "-o" "pid,uid,user,gid,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state=abcde" "-o" "ppid,pgid,sess,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etime,pcpu,pmem,args")
(tramp-process-attributes-ps-format
(pid . number)
(euid . number)
(user . string)
(egid . number)
(comm . 52)
(state . 5)
(ppid . number)
(pgrp . number)
(sess . number)
(ttname . string)
(tpgid . number)
(minflt . number)
(majflt . number)
(time . tramp-ps-time)
(pri . number)
(nice . number)
(vsize . number)
(rss . number)
(etime . tramp-ps-time)
(pcpu . number)
(pmem . number)
(args)))
(tramp-connection-local-busybox-ps-profile
(tramp-process-attributes-ps-args "-o" "pid,user,group,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "stat=abcde" "-o" "ppid,pgid,tty,time,nice,etime,args")
(tramp-process-attributes-ps-format
(pid . number)
(user . string)
(group . string)
(comm . 52)
(state . 5)
(ppid . number)
(pgrp . number)
(ttname . string)
(time . tramp-ps-time)
(nice . number)
(etime . tramp-ps-time)
(args)))
(tramp-connection-local-bsd-ps-profile
(tramp-process-attributes-ps-args "-acxww" "-o" "pid,euid,user,egid,egroup,comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" "-o" "state,ppid,pgid,sid,tty,tpgid,minflt,majflt,time,pri,nice,vsz,rss,etimes,pcpu,pmem,args")
(tramp-process-attributes-ps-format
(pid . number)
(euid . number)
(user . string)
(egid . number)
(group . string)
(comm . 52)
(state . string)
(ppid . number)
(pgrp . number)
(sess . number)
(ttname . string)
(tpgid . number)
(minflt . number)
(majflt . number)
(time . tramp-ps-time)
(pri . number)
(nice . number)
(vsize . number)
(rss . number)
(etime . number)
(pcpu . number)
(pmem . number)
(args)))
(tramp-connection-local-default-shell-profile
(shell-file-name . "/bin/sh")
(shell-command-switch . "-c"))
(tramp-connection-local-default-system-profile
(path-separator . ":")
(null-device . "/dev/null"))
(eshell-connection-default-profile
(eshell-path-env-list))))
'(custom-safe-themes
'("eb7cd622a0916358a6ef6305e661c6abfad4decb4a7c12e73d6df871b8a195f8" "11873c4fbf465b956889adfa9182495db3bf214d9a70c0f858f07f6cc91cbd47" "d395c1793e0d64797d711c870571a0033174ca321ed48444efbe640bf692bf4f" "b2779867957a4b9de84bcd33c5ded92e943c710c4c5c5b7fc874786eaf63ca5c" "7ea883b13485f175d3075c72fceab701b5bf76b2076f024da50dff4107d0db25" "8d8207a39e18e2cc95ebddf62f841442d36fcba01a2a9451773d4ed30b632443" "570263442ce6735821600ec74a9b032bc5512ed4539faf61168f2fdf747e0668" "00cec71d41047ebabeb310a325c365d5bc4b7fab0a681a2a108d32fb161b4006" "adaf421037f4ae6725aa9f5654a2ed49e2cd2765f71e19a7d26a454491b486eb" "60ada0ff6b91687f1a04cc17ad04119e59a7542644c7c59fc135909499400ab8" "9d29a302302cce971d988eb51bd17c1d2be6cd68305710446f658958c0640f68" "a9abd706a4183711ffcca0d6da3808ec0f59be0e8336868669dc3b10381afb6f" "991ca4dbb23cab4f45c1463c187ac80de9e6a718edc8640003892a2523cb6259" "f458b92de1f6cf0bdda6bce23433877e94816c3364b821eb4ea9852112f5d7dc" "bf948e3f55a8cd1f420373410911d0a50be5a04a8886cabe8d8e471ad8fdba8e" "2f8eadc12bf60b581674a41ddc319a40ed373dd4a7c577933acaff15d2bf7cc6" "680f62b751481cc5b5b44aeab824e5683cf13792c006aeba1c25ce2d89826426" "a589c43f8dd8761075a2d6b8d069fc985660e731ae26f6eddef7068fece8a414" "7a424478cb77a96af2c0f50cfb4e2a88647b3ccca225f8c650ed45b7f50d9525" "49acd691c89118c0768c4fb9a333af33e3d2dca48e6f79787478757071d64e68" "e9776d12e4ccb722a2a732c6e80423331bcb93f02e089ba2a4b02e85de1cf00e" "e0d42a58c84161a0744ceab595370cbe290949968ab62273aed6212df0ea94b4" "b6a32f5bbe3c636432bdaa0bb7a5e24f7419cb1787135cc6295ac07d2fac628a" "0f4182fe2e7d9020f9ac275b11ca6f7d5a4cb4937764f3f8f73ab005c1fd6a23" "30dc9873c16a0efb187bb3f8687c16aae46b86ddc34881b7cae5273e56b97580" "1d89fcf0105dd8778e007239c481643cc5a695f2a029c9f30bd62c9d5df6418d" default))
'(package-selected-packages
'(haskell-mode modus-themes org-roam-ui all-the-icons-ivy web-mode doom-modeline all-the-icons evil avy)))
(custom-set-faces
;; 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.
'(default ((t (:background nil)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment