Last active
July 1, 2023 22:41
-
-
Save marcs-feh/49629dff27dcfb43d112cd64d5689760 to your computer and use it in GitHub Desktop.
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
;; Options for this config file | |
(defconst option/alternative-evil-esc (kbd "C-c")) | |
(defconst user/font "JetBrains Mono NL Light") | |
(defconst user/font-height 120) | |
(defconst user/theme 'modus-vivendi) | |
(defconst user/use-alt-window-navigation t) | |
;; Disable startup message, scrollbar, toolbar, menu bar and visual bell for a | |
;; cleaner UI. Also use smaller tab width | |
(setq inhibit-startup-message t) | |
(scroll-bar-mode -1) | |
(tool-bar-mode -1) | |
(menu-bar-mode -1) | |
(setq visible-bell nil) | |
(setq-default tab-width 4) | |
(setq-default truncate-lines t) | |
;; Only cycle through buffers that represent files | |
(set-frame-parameter (selected-frame) 'buffer-predicate #'buffer-file-name) | |
;; Allow Emacs' window to be any size and not snap to characters | |
(setq frame-resize-pixelwise t) | |
;; Dont have a bunch of dired buffers | |
(setq dired-kill-when-opening-new-dired-buffer t) | |
;; Disable auto-save and backup files. | |
(setq auto-save-default nil) | |
(setq make-backup-files nil) | |
;; make so that ESC can quit prompts. | |
(global-set-key (kbd "<escape>") 'keyboard-escape-quit) | |
;; Make scrolling smoother and make lines scroll sooner. | |
(setq scroll-step 1) | |
(setq scroll-margin 8) | |
;; (setq scroll-conservatively 9999) | |
;; Show line and column numbers. Add fringes to the sides of the screen | |
(global-display-line-numbers-mode) | |
(column-number-mode) | |
;; (fringe-mode '(16 . 24)) | |
;; Performance enhancing options, garbage collect on idle and window focus loss | |
;; wait until Emacs has allocated more memory before running gc. Disable show-paren | |
(defun MiB (n) (* n 1024 1024)) | |
(add-hook 'after-init-hook | |
#'(lambda () (setq gc-cons-threshold (MiB 64)))) | |
(add-hook 'focus-out-hook 'garbage-collect) | |
(run-with-idle-timer 5 t 'garbage-collect) | |
(show-paren-mode 0) | |
;; Package Manager | |
(require 'package) | |
(setq package-archives | |
'(("melpa" . "https://melpa.org/packages/") | |
("org" . "https://orgmode.org/elpa/") | |
("elpa" . "https://elpa.gnu.org/packages/"))) | |
(package-initialize) | |
;; Ensure use-package is available | |
(unless (package-installed-p 'use-package) | |
(package-install 'use-package)) | |
(require 'use-package) | |
(setq use-package-always-ensure t) | |
;; Vim style keys | |
(use-package evil | |
:ensure t | |
: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) | |
(setq evil-want-fine-undo 'fine) | |
:config | |
(evil-mode 1) | |
(evil-set-undo-system 'undo-redo)) | |
;; Vim style keys for most of Emacs already existing functionlity | |
(use-package evil-collection | |
:after evil | |
:config | |
(evil-collection-init)) | |
;; Unclutter statusbar | |
(use-package diminish) | |
;; Fuzzy finder | |
(use-package swiper) | |
;; Completion framework | |
(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)) | |
;; LSP support | |
(use-package lsp-mode | |
:init | |
;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") | |
(setq lsp-keymap-prefix "C-c l") | |
:hook | |
((zig-mode . lsp) | |
(c++-mode . lsp)) | |
;; if you want which-key integration | |
;; (lsp-mode . lsp-enable-which-key-integration) | |
:commands lsp) | |
(use-package lsp-ivy :commands lsp-ivy-workspace-symbol) | |
;; Zig mode | |
(use-package zig-mode) | |
;; Go mode | |
(use-package go-mode) | |
;; Diminish minor modes | |
(diminish 'evil-collection-unimpaired-mode) | |
;; Keybinds | |
(evil-set-leader nil (kbd "SPC")) | |
(evil-global-set-key | |
'normal (kbd "C-s") 'save-buffer) | |
(evil-global-set-key | |
'normal (kbd "C-f") 'swiper) | |
(evil-global-set-key | |
'normal (kbd "C-o") 'other-window) | |
(evil-global-set-key | |
'normal (kbd "<leader>c") 'comment-line) | |
(evil-global-set-key | |
'normal (kbd "<leader>e") 'find-file) | |
(evil-global-set-key | |
'normal (kbd "<leader>f") 'switch-to-buffer) | |
(evil-global-set-key | |
'normal (kbd "<leader>x") 'kill-buffer-and-window) | |
(evil-global-set-key | |
'normal (kbd "<leader>k") 'kill-buffer) | |
(evil-global-set-key | |
'normal (kbd "<leader>q") 'delete-window) | |
(evil-global-set-key | |
'normal (kbd "<leader>sh") 'split-window-below) | |
(evil-global-set-key | |
'normal (kbd "<leader>sv") 'split-window-right) | |
(evil-global-set-key | |
'normal (kbd "<leader>sv") 'split-window-right) | |
(evil-global-set-key | |
'normal (kbd "L") 'evil-next-buffer) | |
(evil-global-set-key | |
'normal (kbd "H") 'evil-prev-buffer) | |
(evil-global-set-key | |
'insert option/alternative-evil-esc (kbd "<escape>")) | |
(evil-global-set-key | |
'normal (kbd "M-f") 'other-window) | |
(evil-global-set-key | |
'visual option/alternative-evil-esc (kbd "<escape>")) | |
(evil-global-set-key | |
'visual option/alternative-evil-esc (kbd "<escape>")) | |
;; Window navigation (requires Alt bindings that are commonly used by some window managers) | |
(when user/use-alt-window-navigation | |
(evil-global-set-key 'normal (kbd "M-j") 'evil-window-down) | |
(evil-global-set-key 'normal (kbd "M-h") 'evil-window-left) | |
(evil-global-set-key 'normal (kbd "M-l") 'evil-window-right) | |
(evil-global-set-key 'normal (kbd "M-k") 'evil-window-up)) | |
;; Load things | |
(load-theme user/theme t) | |
(set-face-attribute 'default nil | |
:font user/font | |
:height user/font-height) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment