diff --git a/.config/emacs/init.el b/.config/emacs/init.el index ceb0f57..3ba1f7f 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -92,26 +92,26 @@ (setq tramp-default-method "ssh") -(use-package modus-themes - :straight t - :init - (setq modus-themes-italic-constructs t - modus-themes-bold-constructs nil - modus-themes-region '(accented bg-only no-extend) - modus-themes-org-blocks 'greyscale - modus-themes-paren-match 'intense - modus-themes-mixed-fonts t) - (modus-themes-load-themes) - :config - (modus-themes-load-vivendi) - :bind - ("" . modus-themes-toggle)) - -;; ;; Doing some doom themes for a while. -;; (use-package doom-themes +;; (use-package modus-themes ;; :straight t ;; :init -;; (load-theme 'doom-gruvbox)) +;; (setq modus-themes-italic-constructs t +;; modus-themes-bold-constructs nil +;; modus-themes-region '(accented bg-only no-extend) +;; modus-themes-org-blocks 'greyscale +;; modus-themes-paren-match 'intense +;; modus-themes-mixed-fonts t) +;; (modus-themes-load-themes) +;; :config +;; (modus-themes-load-vivendi) +;; :bind +;; ("" . modus-themes-toggle)) + +;; Doing some doom themes for a while. +(use-package doom-themes + :straight t + :init + (load-theme 'doom-Iosvkem)) (set-face-attribute 'default nil :font "Fira Code" :height 125 :weight 'medium) (set-face-attribute 'variable-pitch nil :font "Fira Sans" :height 1.0 :weight 'regular) @@ -138,7 +138,9 @@ "." #'find-file ;; Find file (opens in mini-buffer) "," #'consult-buffer ;; Switch to buffer "<" #'switch-to-buffer ;; Switch to non-perspective.el minibuffer - "s" #'consult-line ;; Search in current buffer + "s" #'consult-line + "p" #'projectile-command-map + "l" #'lsp-map ;; Magit "gg" #'magit-status @@ -150,7 +152,8 @@ "bl" #'persp-next "bh" #'persp-prev "br" #'persp-rename - "bd" #'persp-remove-buffer + "bD" #'persp-remove-buffer + "bd" #'kill-buffer ;; Terminal/Shell "tt" #'vterm @@ -535,6 +538,36 @@ (use-package rainbow-mode :straight t) +(use-package magit + :straight t) + +(use-package projectile + :straight t + :config + (projectile-mode) + :init + (when (file-directory-p "~/Projects/Code") + (setq projectile-project-search-path '("~/Projects/Code"))) + (setq projectile-switch-project-action #'projectile-dired)) + +(use-package lsp-mode + :straight t + :commands (lsp lsp-deferred) + :config + (lsp-enable-which-key-integration t)) + +(use-package lsp-ui + :straight t + :hook (lsp-mode . lsp-ui-mode) + :custom + (lsp-ui-doc-position 'bottom)) + +(use-package python-mode + :ensure t + :hook (python-mode . lsp-deferred) + :custom + (python-shell-interpreter "python3")) + (use-package parinfer :straight t :init @@ -548,45 +581,41 @@ (defvar inferior-lisp-program "sbcl") (use-package sly :straight t) -(use-package magit - :straight t) - -(use-package eshell-git-prompt :straight t) +(use-package yasnippet + :straight t + :hook (prog-mode . yas-minor-mode) + :config + (yas-reload-all)) (use-package eshell + :straight t :config ;; Save command history when commands are entered (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) ;; Truncate buffer for performance (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Evil keybinds - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) (evil-normalize-keymaps) - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim"))) - - (eshell-git-prompt-use-theme 'powerline) - (setq eshell-banner-message '(format "%s %s\n" (propertize (format " %s " (string-trim (buffer-name))) 'face 'mode-line-highlight) (propertize (current-time-string) - 'face 'font-lock-keyword-face)) - eshell-scroll-to-bottom-on-input 'all + 'face 'font-lock-keyword-face))) + + (setq eshell-scroll-to-bottom-on-input 'all eshell-scroll-to-bottom-on-output 'all eshell-kill-processes-on-exit t eshell-hist-ignoredups t - ;; em-prompt eshell-prompt-regexp "^.* λ " ;; em-glob eshell-history-size 10000 eshell-buffer-maximum-lines 10000 - eshell-scroll-to-bottom-on-input t)) + eshell-scroll-to-bottom-on-input t) + + (with-eval-after-load 'esh-opt + (setq eshell-destroy-buffer-when-process-dies t) + (setq eshell-visual-commands '("htop" "zsh" "vim")))) (use-package vterm :straight t diff --git a/Emacs.org b/Emacs.org index ff10f55..c609537 100644 --- a/Emacs.org +++ b/Emacs.org @@ -1,3 +1,4 @@ + #+TITLE: Emacs Configuration #+PROPERTY: header-args:emacs-lisp :tangle ~/Dotfiles/.config/emacs/init.el :mkdirp yes :lexical yes @@ -221,7 +222,9 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire "." #'find-file ;; Find file (opens in mini-buffer) "," #'consult-buffer ;; Switch to buffer "<" #'switch-to-buffer ;; Switch to non-perspective.el minibuffer - "s" #'consult-line ;; Search in current buffer + "s" #'consult-line + "p" #'projectile-command-map + "l" #'lsp-map ;; Magit "gg" #'magit-status @@ -233,7 +236,8 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire "bl" #'persp-next "bh" #'persp-prev "br" #'persp-rename - "bd" #'persp-remove-buffer + "bD" #'persp-remove-buffer + "bd" #'kill-buffer ;; Terminal/Shell "tt" #'vterm @@ -259,8 +263,8 @@ I really enjoy having a leader key and eschewing the Control and Alt keys entire "dv" #'describe-variable "ds" #'describe-symbol "dk" #'describe-key - "dp" #'describe-package)) - #+end_src + "dp" #'describe-package)) +#+end_src *** Evil #+begin_src emacs-lisp @@ -658,7 +662,7 @@ Creates margins in Org mode to make it more pleasant to look at. (add-to-list 'org-structure-template-alist '("scm" . "src scheme")) (add-to-list 'org-structure-template-alist '("cl" . "src lisp"))) #+end_src -** Programming/Editor +** Development/Editing *** General **** Syntax (Flycheck) #+begin_src emacs-lisp @@ -686,6 +690,47 @@ Sets HTML strings to have the background of the color they represent. #+begin_src emacs-lisp (use-package rainbow-mode :straight t) #+end_src +*** Magit +#+begin_src emacs-lisp +(use-package magit + :straight t) +#+end_src +*** Projectile +#+begin_src emacs-lisp +(use-package projectile + :straight t + :config + (projectile-mode) + :init + (when (file-directory-p "~/Projects/Code") + (setq projectile-project-search-path '("~/Projects/Code"))) + (setq projectile-switch-project-action #'projectile-dired)) +#+end_src +*** LSP +#+begin_src emacs-lisp +(use-package lsp-mode + :straight t + :commands (lsp lsp-deferred) + :config + (lsp-enable-which-key-integration t)) + +(use-package lsp-ui + :straight t + :hook (lsp-mode . lsp-ui-mode) + :custom + (lsp-ui-doc-position 'bottom)) + +#+end_src + +*** Python +#+begin_src emacs-lisp +(use-package python-mode + :ensure t + :hook (python-mode . lsp-deferred) + :custom + (python-shell-interpreter "python3")) +#+end_src + *** Lisp #+begin_src emacs-lisp (use-package parinfer @@ -702,52 +747,51 @@ Sets HTML strings to have the background of the color they represent. #+begin_src emacs-lisp (defvar inferior-lisp-program "sbcl") (use-package sly :straight t) +#+end_src +*** Snippets +Snippets allow certain files to be filled with a template depending on its filename extension. +#+begin_src emacs-lisp +(use-package yasnippet + :straight t + :hook (prog-mode . yas-minor-mode) + :config + (yas-reload-all)) #+end_src * Tools -** Magit -#+begin_src emacs-lisp -(use-package magit - :straight t) -#+end_src ** Eshell #+begin_src emacs-lisp -(use-package eshell-git-prompt :straight t) - (use-package eshell + :straight t :config ;; Save command history when commands are entered (add-hook 'eshell-pre-command-hook 'eshell-save-some-history) ;; Truncate buffer for performance (add-to-list 'eshell-output-filter-functions 'eshell-truncate-buffer) - - ;; Evil keybinds - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "C-r") 'counsel-esh-history) - (evil-define-key '(normal insert visual) eshell-mode-map (kbd "") 'eshell-bol) (evil-normalize-keymaps) - (with-eval-after-load 'esh-opt - (setq eshell-destroy-buffer-when-process-dies t) - (setq eshell-visual-commands '("htop" "zsh" "vim"))) - - (eshell-git-prompt-use-theme 'powerline) - (setq eshell-banner-message '(format "%s %s\n" (propertize (format " %s " (string-trim (buffer-name))) 'face 'mode-line-highlight) (propertize (current-time-string) - 'face 'font-lock-keyword-face)) - eshell-scroll-to-bottom-on-input 'all + 'face 'font-lock-keyword-face))) + + (setq eshell-scroll-to-bottom-on-input 'all eshell-scroll-to-bottom-on-output 'all eshell-kill-processes-on-exit t eshell-hist-ignoredups t - ;; em-prompt eshell-prompt-regexp "^.* λ " ;; em-glob eshell-history-size 10000 eshell-buffer-maximum-lines 10000 - eshell-scroll-to-bottom-on-input t)) + eshell-scroll-to-bottom-on-input t) + + (with-eval-after-load 'esh-opt + (setq eshell-destroy-buffer-when-process-dies t) + (setq eshell-visual-commands '("htop" "zsh" "vim")))) + #+end_src + ** Vterm #+begin_src emacs-lisp (use-package vterm @@ -758,6 +802,7 @@ Sets HTML strings to have the background of the color they represent. (setq vterm-shell "zsh") (setq vterm-max-scrollback 10000)) #+end_src + ** PDF #+begin_src emacs-lisp (use-package pdf-tools @@ -884,6 +929,5 @@ Right now I'm pretty happy with Matrix bridging into IRC rooms so this will stay ;; (require 'exwm-systemtray) ;; (exwm-systemtray-enable) -;; (exwm-enable)) - +;; (exwm-enable)) #+end_src diff --git a/README.org b/README.org index 70e78e8..4d6747f 100644 --- a/README.org +++ b/README.org @@ -1,3 +1,13 @@ #+TITLE: Dotfiles -A compilation of dotfiles. This is currently recieving an overhaul as I'm integrating Guix Home in order to retire Gnu Stow. +* Workflow +I prefer software that presents a low cognitive load in integrating and using on a day to day basis. This typically ends up being software that I can manipulate through the use of configuration files. + +* Tools (or How I Do My Computing) +With a slight nod to RMS's article of a similar name; here is a list of programs that I use on a day to day basis. + +*Text Editor*: Emacs with Evil mode. Truly the best of both worlds. +*Browser*: Nyxt Browser, an extensible browser in the vein of Emacs written in Common Lisp. I use Icecat/Firefox for anything that Nyxt can't handle. +*Windows Manager*: I've found SwayWM recently. I'm a huge fan of Wayland over Xorg and it had the least complicated integration into my workflow. +*Desktop Environment*: If I need a full DE, I use GNOME. By far the most minimal and 'out of the way' of the GNU/Linux DE's in my opinion. +*Chat*: Someone turned my onto Matrix recently and I've been really liking it. I'm able to bridge into IRC chatrooms and it keeps chat history locally so I don't need a bouncer.