A => .gitignore +2 -0
@@ 1,2 @@
+straight
+init.el~
A => Makefile +9 -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\")) \
+ )"
A => README.md +8 -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
A => init.el +219 -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)