| Home | Configs | Guides | About |
Minimize Screen
(setq inhibit-startup-message t)
(scroll-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(set-fringe-mode 10)
(menu-bar-mode -1)
Font
;; Set font (set-face-attribute 'default nil :font "DejaVu Sans Mono" :height 150)
Package Module
(require 'package) (setq package-archives '(("melpa" . "https://melpa.org/packages/") ("melpa-stable" . "https://stable.melpa.org/packages/") ("org" . "https://orgmode.org/elpa/") ("elpa" . "https://elpa.gnu.org/packages/"))) (package-initialize) (unless package-archive-contents (package-refresh-contents)) (unless (package-installed-p 'use-package) (package-install 'use-package)) (require 'use-package) (setq use-package-always-ensure t)
Theme
(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 'doom-one t) ;; Enable flashing mode-line on errors (doom-themes-visual-bell-config) ;; Enable custom neotree theme (all-the-icons must be installed!) (doom-themes-neotree-config) ;; or for treemacs users (setq doom-themes-treemacs-theme "doom-atom") ; use "doom-colors" for less minimal icon theme (doom-themes-treemacs-config) ;; Corrects (and improves) org-mode's native fontification. (doom-themes-org-config))
Evil Mode
(use-package evil :ensure t :init (setq evil-want-integration t) ;; This is optional since it's already set to t by default. (setq evil-want-keybinding nil) :config (evil-mode 1)) (use-package evil-collection :after evil :ensure t :config (evil-collection-init)) (setq evil-collection-setup-minibuffer t)
Which Key
(use-package which-key :init (which-key-mode) :config (require 'which-key) (which-key-setup-minibuffer) (setq which-key-idle-delay 0.3))
General
(use-package general :config (require 'general)) (general-create-definer leader-key :prefix "SPC") ;; General Keybindings
Modeline
(use-package doom-modeline :ensure t :init (doom-modeline-mode 1) :custom ((doom-modeline-height 15)))
Ivy
(use-package ivy :diminish :bind (:map ivy-minibuffer-map ("TAB" . ivy-alt-done) ("C-l" . ivy-alt-done) ("C-j" . ivy-next-line) ("C-k" . ivy-previous-line) :map ivy-switch-buffer-map ("C-k" . ivy-previous-line) ("C-l" . ivy-done) ("C-d" . ivy-switch-buffer-kill) :map ivy-reverse-i-search-map ("C-k" . ivy-previous-line) ("C-d" . ivy-reverse-i-search-kill)) :config) (ivy-mode 1) (use-package ivy-rich :config (ivy-rich-mode 1))
Tabspaces
(use-package tabspaces :hook (after-init . tabspaces-mode) :commands (tabspaces-create-workspace tabspaces-create-new-project-and-workspace tabspaces-open-existing-project-and-workspace tabspaces-switch-workspace) :custom (tabspaces-use-filtered-buffers-as-default t) (tabspaces-default-tab "Default") (tabspaces-remove-to-default t) (tabspaces-include-buffers '("*scratch*")) (tab-bar-show nil))
Recentf
(require 'recentf) (recentf-mode 1)
Line Numbers
(column-number-mode) (global-display-line-numbers-mode t) (dolist (mode '(org-mode-hook term-mode-hook eshell-mode-hook)) (add-hook mode (lambda () (display-line-numbers-mode 0))))
Rainbow Delimiters
(use-package rainbow-delimiters
:hook (prog-mode . rainbow-delimiters-mode))
Projectile
(use-package projectile :diminish projectile-mode :config (projectile-mode) :bind-keymap ("C-c p" . projectile-command-map) :init (when (file-directory-p "~/Projects/Code") (setq projectile-project-search-path '("~/Projects/Code"))) (setq projectile-switch-project-action #'projectile-dired)) ;; Counsel Integration (use-package counsel-projectile :after projectile :config (counsel-projectile-mode 1))
Magit
(use-package magit :commands (magit-status magit-get-current-branch) :custom (magit-display-buffer-function #'magit-display-buffer-same-window-except-diff-v1)) (use-package forge)
Org Mode
(defun dw/org-mode-setup () (org-indent-mode) (variable-pitch-mode 1) (auto-fill-mode 0) (visual-line-mode 1) (setq evil-auto-indent nil)) (use-package org :hook (org-mode . dw/org-mode-setup) :config (setq org-ellipsis " ▾" org-hide-emphasis-markers t)) (use-package org-bullets :after org :hook (org-mode . org-bullets-mode) :custom (org-bullets-bullet-list '("◉" "○" "●" "○" "●" "○" "●"))) ;; Replace list hyphen with dot (font-lock-add-keywords 'org-mode '(("^ *\\([-]\\) " (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) ;; Make sure org-indent face is available (require 'org-indent) ;; Ensure that anything that should be fixed-pitch in Org files appears that way (set-face-attribute 'org-block nil :foreground nil :inherit 'fixed-pitch) (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-indent nil :inherit '(org-hide fixed-pitch)) (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch) (set-face-attribute 'org-table nil :font "DejaVu Sans Mono") ;; Centering Text (defun efs/org-mode-visual-fill () (setq visual-fill-column-width 100 visual-fill-column-center-text t) (visual-fill-column-mode 1)) (use-package visual-fill-column :hook (org-mode . efs/org-mode-visual-fill)) ;; Babel (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t) (python . t))) (setq org-confirm-babel-evaluate nil) ;; This is needed as of Org 9.2 (require 'org-tempo) (add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) (add-to-list 'org-structure-template-alist '("py" . "src python"))
LSP Mode
(defun efs/lsp-mode-setup() (setq lsp-headerline-breadcrumb-segments '(path-up-to-project file symbols)) (lsp-headerline-breadcrumb-mode)) (use-package lsp-mode :commands (lsp lsp-deferred) :hook (lsp-mode . efs/lsp-mode-setup) :config (lsp-enable-which-key-integration)) (use-package lsp-ui :hook (lsp-mode . lsp-ui-mode)) (setq lsp-ui-doc-position 'bottom) (setq lsp-ui-sideline-enable nil) (setq lsp-ui-sideline-show-hover nil) (use-package lsp-treemacs :after lsp) (use-package lsp-ivy)
Company Mode
(use-package company :after lsp-mode :hook (prog-mode . company-mode) :bind (:map company-active-map ("<tab>" . company-complete-selection)) (:map lsp-mode-map ("<tab>" . company-indent-or-complete-common)) :custom (company-minimum-prefix-length 1) (company-idle-delay 0.0)) (use-package company-box :hook (company-mode . company-box-mode))
Languages
Python
(use-package python-mode :hook (python-mode . lsp-deferred) :config :custom (setq python-shell-interpreter "/opt/anaconda/bin/python")) (setenv "PATH" (concat "/opt/anaconda/bin:" (getenv "PATH") ))
Web Development in Emacs
(use-package simple-httpd
:ensure t)
Keybindings
Window Actions
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "w h" 'evil-window-left "w l" 'evil-window-right "w j" 'evil-window-down "w k" 'evil-window-up "w c" 'evil-window-delete "w w" 'evil-window-prev "w e" 'evil-window-next "w r" 'revert-buffer) (evil-global-set-key 'normal (kbd "C-l") 'evil-window-increase-width) (evil-global-set-key 'normal (kbd "C-h") 'evil-window-decrease-width) (evil-global-set-key 'normal (kbd "C-k") 'evil-window-increase-height) (evil-global-set-key 'normal (kbd "C-j") 'evil-window-decrease-height)
Help and Documentation
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "h f" 'counsel-describe-function "h v" 'counsel-describe-variable "h k" 'general-describe-keybindings "h m" 'describe-mode)
Tabspaces
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "TAB n" 'tabspaces-create-workspace "TAB c" 'tabspaces-close-workspace "TAB 1" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "1")) :which-key "Workspace: 1") "TAB 2" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "2")) :which-key "Workspace: 2") "TAB 3" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "3")) :which-key "Workspace: 3") "TAB 4" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "4")) :which-key "Workspace: 4") "TAB 5" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "5")) :which-key "Workspace: 5") "TAB 6" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "6")) :which-key "Workspace: 6") "TAB 7" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "7")) :which-key "Workspace: 7") "TAB 8" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "8")) :which-key "Workspace: 8") "TAB 9" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "9")) :which-key "Workspace: 9") "TAB 0" '((lambda() (interactive) (tabspaces-switch-to-or-create-workspace "0")) :which-key "Workspace: 0"))
Buffer Actions
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "b b" 'buffer-menu "`" 'switch-to-prev-buffer)
Execute / Eval
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" ":" 'counsel-M-x "d e b" 'eval-buffer)
File Management & Navigation
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "." 'counsel-find-file "n h" '((lambda() (interactive) (dired-at-point "~/")) :which-key "File Browse: Home") "n p" '((lambda() (interactive) (dired-at-point "~/projects")) :which-key "File Browse: Projects") "n l" '((lambda() (interactive) (dired-at-point "~/linux-scripts")) :which-key "File Browse: Linux Scripts & Configs") "n c" '((lambda() (interactive) (dired-at-point "~/.config")) :which-key "File Browse: XDG Configs Directory") "n r" 'counsel-recentf) (evil-collection-define-key 'normal 'dired-mode-map "h" 'dired-up-directory "l" 'dired-find-file)
Magit
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "m m" 'magit)
Development
Python
(general-define-key :states 'normal :keymaps 'override :prefix "SPC" "d o p" 'run-python "d e p" 'python-shell-send-buffer "d l f" 'flymake-mode)
LSP
DAP
Auto-Generated
(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. '(package-selected-packages '(forge evil-magit magit counsel-projectile projectile doom-themes ivy-rich rainbow-delimiters ivy org-babel org-mode general which-key use-package evil-collection))) (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. )
[[./configs/init.el]init.el]]