Skip to content

Instantly share code, notes, and snippets.

@Aadv1k
Last active June 15, 2024 05:25
Show Gist options
  • Save Aadv1k/2bd92889f3a10a5ffb6298b8fb7d04bf to your computer and use it in GitHub Desktop.
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!)
;; Package --- Summary: Functional, but simple evil emacs config.
;; Author: Aadvik <aadv1k@outlook.com>
;; 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