Created
September 21, 2021 13:20
-
-
Save hackorum/8a8599b31a6aef767ac33dccdbcdc02f to your computer and use it in GitHub Desktop.
This file contains 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
(scroll-bar-mode -1) ; Disable visible scrollbar | |
(tool-bar-mode -1) ; Disable the toolbar | |
(tooltip-mode -1) ; Disable tooltips | |
(set-fringe-mode 10) ; Give some breathing room | |
(setq ring-bell-function 'ignore) | |
(menu-bar-mode -1) ; Disable the menu bar | |
(set-face-attribute 'default nil :font "Liga SFMono Nerd Font" :height 150) | |
;; Make ESC quit prompts | |
(global-set-key (kbd "<escape>") 'keyboard-escape-quit) | |
;; Initialize package sources | |
(require 'package) | |
(setq package-archives '(("melpa" . "https://melpa.org/packages/") | |
("org" . "https://orgmode.org/elpa/") | |
("elpa" . "https://elpa.gnu.org/packages/"))) | |
(package-initialize) | |
(unless package-archive-contents | |
(package-refresh-contents)) | |
;; Initialize use-package on non-Linux platforms | |
(unless (package-installed-p 'use-package) | |
(package-install 'use-package)) | |
(require 'use-package) | |
(setq use-package-always-ensure t) | |
(use-package command-log-mode) | |
(use-package swiper) | |
(use-package ivy | |
:diminish | |
:bind (("C-s" . swiper) | |
: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 doom-modeline | |
:ensure t | |
:init (doom-modeline-mode 1) | |
:custom ((doom-modeline-height 15))) | |
(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. | |
'(custom-safe-themes | |
'("1704976a1797342a1b4ea7a75bdbb3be1569f4619134341bd5a4c1cfb16abad4" default)) | |
'(package-selected-packages | |
'(xref-js2 js2-refactor js2-mode all-the-icons-dired dired-single evil-nerd-commenter exec-path-from-shell company-box company typescript-mode lsp-ivy lsp-treemacs lsp-ui lsp-mode counsel-projectile projectile evil-collection evil general ivy-rich which-key rainbow-delimiters counsel swiper use-package ivy doom-modeline command-log-mode))) | |
(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. | |
) | |
(column-number-mode) | |
(global-display-line-numbers-mode t) | |
;; Disable line numbers for some modes | |
(dolist (mode '(org-mode-hook | |
term-mode-hook | |
shell-mode-hook | |
treemacs-mode-hook | |
eshell-mode-hook)) | |
(add-hook mode (lambda () (display-line-numbers-mode 0)))) | |
(use-package doom-themes | |
:init (load-theme 'doom-nord)) | |
(use-package rainbow-delimiters | |
:hook (prog-mode . rainbow-delimiters-mode)) | |
(use-package which-key | |
:init (which-key-mode) | |
:diminish which-key-mode | |
:config | |
(setq which-key-idle-delay 0.1)) | |
(use-package ivy-rich | |
:init | |
(ivy-rich-mode 1)) | |
(use-package counsel | |
:bind (("M-x" . counsel-M-x) | |
("C-x b" . counsel-ibuffer) | |
("C-x C-f" . counsel-find-file) | |
:map minibuffer-local-map | |
("C-r" . 'counsel-minibuffer-history))) | |
(use-package general | |
:config | |
(general-create-definer rune/leader-keys | |
:keymaps '(normal insert visual emacs) | |
:prefix "SPC" | |
:global-prefix "C-SPC") | |
(rune/leader-keys | |
"t" '(:ignore t :which-key "toggles") | |
"w" '(save-buffer :which-key "save buffer") | |
"p" '(projectile-command-map :which-key "projectile") | |
"tt" '(counsel-load-theme :which-key "choose theme"))) | |
(use-package evil | |
:init | |
(setq evil-want-integration t) | |
(setq evil-want-keybinding nil) | |
(setq evil-want-C-u-scroll t) | |
(setq evil-want-C-i-jump nil) | |
:config | |
(evil-mode 1) | |
(define-key evil-insert-state-map (kbd "C-h") 'evil-delete-backward-char-and-join) | |
;; Use visual line motions even outside of visual-line-mode buffers | |
(evil-global-set-key 'motion "j" 'evil-next-visual-line) | |
(evil-global-set-key 'motion "k" 'evil-previous-visual-line) | |
(evil-set-initial-state 'messages-buffer-mode 'normal) | |
(evil-set-initial-state 'dashboard-mode 'normal)) | |
(use-package evil-collection | |
:after evil | |
:config | |
(evil-collection-init)) | |
(use-package projectile | |
:diminish projectile-mode | |
:config (projectile-mode) | |
:custom ((projectile-completion-system 'ivy)) | |
:init | |
;; NOTE: Set this to the folder where you keep your Git repos! | |
(when (file-directory-p "~/code") | |
(setq projectile-project-search-path '("~/code"))) | |
(setq projectile-switch-project-action #'projectile-dired)) | |
(use-package counsel-projectile | |
:config (counsel-projectile-mode)) | |
(setq-default explicit-shell-file-name "/bin/zsh") | |
(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) | |
:init | |
(setq lsp-keymap-prefix "C-c l") ;; Or 'C-l', 's-l' | |
:config | |
(lsp-enable-which-key-integration t)) | |
(use-package lsp-ui | |
:hook (lsp-mode . lsp-ui-mode) | |
:custom | |
(lsp-ui-doc-position 'bottom)) | |
(use-package lsp-treemacs | |
:after lsp) | |
(use-package lsp-ivy) | |
(use-package company | |
:after lsp-mode | |
:hook (lsp-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 typescript-mode | |
:mode "\\.ts\\'" | |
:hook (typescript-mode . lsp-deferred) | |
:config | |
(setq typescript-indent-level 2)) | |
(use-package evil-nerd-commenter | |
:bind ("M-/" . evilnc-comment-or-uncomment-lines)) | |
(use-package company-box | |
:hook (company-mode . company-box-mode)) | |
(use-package dired-single) | |
(use-package all-the-icons-dired | |
:hook (dired-mode . all-the-icons-dired-mode)) | |
(require 'js2-mode) | |
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode)) | |
;; Better imenu | |
(add-hook 'js2-mode-hook #'js2-imenu-extras-mode) | |
(require 'js2-refactor) | |
(require 'xref-js2) | |
(add-hook 'js2-mode-hook #'js2-refactor-mode) | |
(js2r-add-keybindings-with-prefix "C-c C-r") | |
(define-key js2-mode-map (kbd "C-k") #'js2r-kill) | |
;; js-mode (which js2 is based on) binds "M-." which conflicts with xref, so | |
;; unbind it. | |
(define-key js-mode-map (kbd "M-.") nil) | |
(add-hook 'js2-mode-hook (lambda () | |
(add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t))) | |
(when (memq window-system '(mac ns x)) | |
(exec-path-from-shell-initialize)) | |
(setq exec-path (append exec-path '("/usr/local/bin/node"))) | |
(define-key esc-map "." #'xref-find-definitions) | |
(package-install 'exec-path-from-shell) | |
(exec-path-from-shell-initialize) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment