From b3a914a74cb4c04bdf8c214718d3ab45c26e14d6 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Fri, 7 Jun 2024 08:17:03 +0200 Subject: [PATCH] feat: Initial commit Initial working configuration --- .gitignore | 2 + Makefile | 9 +++ README.md | 8 ++ init.el | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 238 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 init.el diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..180013d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +straight +init.el~ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..fc5ed0f --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +EMACS=emacs +PWD=$(abspath ./)/ + +.PHONY: run +run: + $(EMACS) -q --exec="(progn \ + (setq user-emacs-directory \"$(PWD)\") \ + (setq user-init-file (locate-user-emacs-file \"init.el\")) \ + )" diff --git a/README.md b/README.md new file mode 100644 index 0000000..b371510 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Emacs.d + +My first emacs.d configuration, using evil. + +## Inspired by + +- https://github.com/VojtechStep/igloo.el +- https://github.com/doomemacs/doomemacs \ No newline at end of file diff --git a/init.el b/init.el new file mode 100644 index 0000000..6c16d3f --- /dev/null +++ b/init.el @@ -0,0 +1,219 @@ +;; use straight.el for package management +;; +;; load envs (exec-path-from-shell) +;; +;; Switch to elpaca +;; general.el +;; SPC, like in DOOM +;; vertico config +;; lsp-mode? or eglot +;; C, C++ +;; Rust +;; VHDL, Verilog +;; Nix +;; Company, Vertico + +;; Straight setup + +;; TODO: put to conditions, etc. + +(eval-and-compile + (defmacro my-use-package (&rest body) + "Passes BODY to `use-package' and call it at comptime and runtime." + (declare (indent defun)) + `(eval-and-compile + ,(cons 'use-package body)))) + + +(defconst straight-bootstrap + (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory)) + + +(unless (file-exists-p straight-bootstrap) + (with-current-buffer + (url-retrieve-synchronously + "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el" + 'silent 'inhibit-cookies) + (goto-char (point-max)) + (eval-print-last-sexp))) + +(load straight-bootstrap) +(require 'straight) + +(straight-use-package 'use-package) + +(require 'use-package) +(straight-use-package-mode t) + +;; Basic keybindings, etc. +(setq evil-want-keybinding nil) + +(my-use-package evil + :straight t + :demand t + :custom + (evil-undo-system 'undo-redo) + :config + (evil-mode)) + +(my-use-package evil-collection + :after evil + :straight t + :demand t) + +(my-use-package evil-easymotion + :after evil + :straight t + :demand t + :config + (evilem-default-keybindings "\\") +) + +(my-use-package evil-surround + :after evil + :straight t + :demand t + :config + (global-evil-surround-mode)) + +(my-use-package evil-goggles + :after evil + :straight t + :demand t + :custom + (evil-goggles-duration 0.1) + :config + (evil-goggles-mode)) + +(my-use-package evil-commentary + :after evil + :straight t + :demand t + :config + (evil-commentary-mode)) + +(my-use-package evil-snipe + :after evil + :straight t + :demand t + :config + (evil-snipe-mode)) + +(my-use-package which-key + :straight t + :demand t + :custom + (which-key-idle-delay 0.6) + :config + (which-key-mode)) + +(my-use-package nordic-night-theme + :straight t + :demand t + :config + (load-theme 'nordic-night t) +) + +;; Vertico, consult, history +(my-use-package vertico + :straight t + :init + (vertico-mode)) + +(my-use-package consult + :straight t + :init + (setq register-preview-delay 0.5 + register-preview-function #'consult-register-format) + :config + (setq consult-narrow-key "<") ;; "C-+" + ) + +(my-use-package savehist + :straight t + :init + (savehist-mode)) + +(my-use-package emacs + :init + (setq minibuffer-prompt-properties + '(read-only t cursor-intangible t face minibuffer-prompt)) + (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode) + + ;; Support opening new minibuffers from inside existing minibuffers. + (setq enable-recursive-minibuffers t) + + ;; Emacs 28 and newer: Hide commands in M-x which do not work in the current + ;; mode. Vertico commands are hidden in normal buffers. This setting is + ;; useful beyond Vertico. + (setq read-extended-command-predicate #'command-completion-default-include-p)) + +;; Modeline +(my-use-package vs-modeline + :straight (vs-modeline :type git + :host github + :repo "VojtechStep/vs-modeline.el") + + :demand t + :config + (vs-modeline-mode)) + +(my-use-package orderless + :straight t + :init + ;; Configure a custom style dispatcher (see the Consult wiki) + (setq orderless-style-dispatchers '(+orderless-consult-dispatch orderless-affix-dispatch)) + ;; orderless-component-separator #'orderless-escapable-split-on-space) + (setq completion-styles '(orderless basic) + completion-category-defaults nil + completion-category-overrides '((file (styles partial-completion))))) + +;; Git + + +;; TODO: some config. +;; Magit todos +(my-use-package magit + :straight t + :custom + (magit-save-repository-buffers nil) + (magit-diff-refine-hunk 'all) + (evil-collection-magit-want-horizontal-movement t) + :preface + (declare-function evil-collection-magit-setup "modes/magit/evil-collection-magit") + :init + (with-eval-after-load 'magit-repos ; magit-repos does not load magit, so the evil-collection setup is not triggered + (evil-collection-magit-setup))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Languages +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Lisp +(my-use-package elisp-mode + :custom + (lisp-indent-offset 2)) + +(defun my-use-package-indent (indent-point state) + "Indent always by two" + (goto-char (elt state 1)) + (+ 2 (current-column))) + +(put 'my-use-package 'lisp-indent-function 'my-use-package-indent) + + +;; Some additional stuff +(add-hook 'write-file-hooks 'delete-trailing-whitespace nil t) + +;; some visual configs +(setq menu-bar-mode nil + tool-bar-mode nil + scroll-bar-mode nil + tab-bar-mode nil + blink-cursor-mode nil + ring-bell-function #'ignore) + +(setq display-line-numbers-type 'relative) +(global-display-line-numbers-mode) + +(setq tab-width 2) -- 2.48.1