Last active
June 15, 2024 05:25
-
-
Save Aadv1k/2bd92889f3a10a5ffb6298b8fb7d04bf to your computer and use it in GitHub Desktop.
my emacs config after ~1.5~ 4 months of heavy usage. Contains evil-mode, magit along with goodies (and use-package!)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; Package --- Summary: Functional, but simple evil emacs config. | |
;; Author: Aadvik <[email protected]> | |
;; License: Public Domain | |
;; URL: https://gist.github.com/Aadv1k/2bd92889f3a10a5ffb6298b8fb7d04bf | |
(defvar *HOME* "C:/Users/Aadv1k") | |
(setq default-directory *HOME*) | |
(setq-default default-directory *HOME*) | |
(setq-default explicit-shell-file-name "pwsh.exe") | |
;; https://superuser.com/questions/84164/how-do-i-stop-emacs-from-creating-backup-files | |
(setq backup-directory-alist '((".*" . "~/.Trash"))) | |
(load-theme 'wombat) | |
(setq inhibit-splash-screen t) | |
(setq inhibit-startup-message t) | |
(set-face-attribute 'default nil :font "Iosevka Curly-14") | |
(setq custom-file (concat user-emacs-directory "/custom.el")) | |
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . js-jsx-mode)) | |
(menu-bar-mode 0) | |
(tool-bar-mode 0) | |
(scroll-bar-mode 0) | |
(ido-mode 1) | |
(global-display-line-numbers-mode 1) | |
(require 'package) | |
(add-to-list 'package-archives | |
'("melpa-stable" . "https://stable.melpa.org/packages/") t) | |
(setq-default default-tab-width 2) | |
(setq-default tab-width 2) | |
(setq-default tab-stop-list '(2 4 6 8 10)) | |
(setq-default indent-tabs-mode nil) | |
(setq grep-command "grep -rni ") | |
(define-key minibuffer-local-map [escape] 'keyboard-escape-quit) | |
(global-set-key (kbd "C-/") 'comment-or-uncomment-region) | |
(global-set-key (kbd "<f1>") 'async-shell-command) | |
(global-set-key (kbd "<f2>") 'compile) | |
(global-set-key (kbd "<f3>") 'grep) | |
;;;;;;;;;;;;;;; | |
;;;; Utils ;;;; | |
;;;;;;;;;;;;;;; | |
(defun my/run-cmd-on-file (command) | |
"Run the provided COMMAND onto the current file." | |
(shell-command (concat command " " buffer-file-name)) | |
(revert-buffer t t) | |
) | |
(defun my/format-buffer () | |
"Format the buffer according to the current major mode." | |
(interactive) | |
(let ((fmt-cmd | |
(pcase major-mode | |
('python-mode "black") | |
('go-mode "go fmt") | |
('js-mode "prettier --write") | |
('markdown-mode "prettier --write") | |
('js-jsx-mode "prettier --write") | |
('typescript-mode "prettier --write") | |
('web-mode "prettier --write") | |
(_ nil)))) | |
(if fmt-cmd (my/run-cmd-on-file fmt-cmd)))) | |
(add-hook 'before-save-hook (lambda 'my/format-buffer)) | |
;;;;;;;;;;;;;;;;;; | |
;;;; Packages ;;;; | |
;;;;;;;;;;;;;;;;;; | |
(use-package evil | |
:ensure t | |
:config (progn (evil-mode 1) | |
(define-key evil-normal-state-map (kbd "C-w C-k") 'evil-window-up) | |
(define-key evil-normal-state-map (kbd "C-w C-j") 'evil-window-down) | |
(define-key evil-normal-state-map (kbd "C-w C-l") 'evil-window-right) | |
(define-key evil-normal-state-map (kbd "C-w C-h") 'evil-window-left) | |
(define-key evil-normal-state-map (kbd "M-.") 'ido-switch-buffer)) | |
) | |
(global-set-key (kbd "M-.") 'ido-switch-buffer) | |
(use-package evil-surround | |
:requires evil | |
:ensure t | |
:config (global-evil-surround-mode) | |
) | |
(use-package smex | |
:ensure t | |
:bind ("M-x" . smex)) | |
(use-package go-mode | |
:ensure t | |
:config (add-to-list 'auto-mode-alist '("\\.go\\'" . go-mode))) | |
(use-package markdown-mode | |
:ensure t | |
:config (add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))) | |
(use-package emmet-mode | |
:ensure t | |
:hook ( | |
(sgml-mode . emmet-mode) | |
(css-mode . emmet-mode) | |
(js-jsx-mode . emmet-mode) | |
(js-mode . emmet-mode))) | |
(use-package dart-mode :ensure t) | |
(use-package flycheck | |
:ensure t | |
:bind (("C-c n" . flycheck-next-error) | |
("C-c p" . flycheck-previous-error) | |
("C-c h" . flycheck-display-error-at-point)) | |
:init (global-flycheck-mode) | |
;;:config (progn) | |
) | |
(use-package flycheck-pos-tip | |
:ensure t | |
:requires flycheck | |
:config (progn (flycheck-pos-tip-mode 1))) | |
(global-set-key (kbd "C-l") (make-sparse-keymap)) | |
(use-package lsp-mode | |
:ensure t | |
:hook ((python-mode . lsp)) | |
:bind (("C-l r" . lsp-rename) | |
("C-l ." . lsp-execute-code-action) | |
("C-l g d" . lsp-find-definition) | |
) | |
) | |
(use-package lsp-ui :commands lsp-ui-mode) | |
(use-package highlight-indentation | |
:ensure t | |
:hook (prog-mode . highlight-indentation-mode)) | |
(use-package magit | |
:ensure t) | |
(use-package doom-themes | |
:ensure t | |
:config (load-theme 'doom-gruvbox t) | |
) | |
(use-package emmet-mode | |
:ensure t | |
:config (setq emmet-preview-default nil) | |
:hook ( | |
(web-mode . emmet-mode) | |
(sgml-mode . emmet-mode)) | |
) | |
(use-package web-mode | |
:ensure t | |
:mode ("\\.jsx?\\'" "\\.tsx?\\'") | |
:config | |
(add-to-list 'web-mode-content-types-alist | |
'("jsx" . "\\.tsx\\'")) | |
(setq web-mode-enable-auto-closing t) | |
(setq web-mode-html-offset 4) | |
(setq web-mode-enable-css-colorization t) | |
(setq web-mode-enable-current-element-highlight t) | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment