(setq indent-tabs-mode nil
auto-save-default nil
create-lockfiles nil
evil-move-cursor-back nil
evil-shift-width 2
evil-want-change-word-to-end nil
evil-want-C-u-scroll t
evil-want-C-w-delete nil
evil-search-module 'evil-search
evil-ex-visual-char-range t
evil-ex-complete-emacs-commands t
evil-normal-state-cursor '(box "darkolivegreen")
evil-insert-state-cursor '((bar . 2) "darkolivegreen")
evil-undo-system 'undo-redo
)
(when (fboundp 'treesit-available-p)
(setq major-mode-remap-alist
'((c-mode . c-ts-mode)
(emacs-lisp-mode . emacs-lisp-ts-mode)
(zig-mode . zig-ts-mode)))
)
(add-to-list 'auto-mode-alist '("\\.nix\\'" . nix-ts-mode))
(add-to-list 'auto-mode-alist '("\\.nu\\'" . nushell-ts-mode))
(setq-default mode-line-format nil)
(menu-bar-mode -1)
(tool-bar-mode -1)
(tooltip-mode -1)
(prefer-coding-system 'utf-8)
(global-auto-revert-mode 1)
(add-hook 'before-save-hook #'delete-trailing-whitespace)
(require 'emacs-lisp-ts-mode)
(require 'nix-ts-mode)
(require 'nushell-ts-mode)
(require 'eglot)
(add-to-list 'eglot-server-programs '((nix-ts-mode) . ("nixd")))
(add-to-list 'eglot-server-programs '((nushell-ts-mode) . ("nu" "--lsp")))
(add-hook 'c-ts-mode-hook #'eglot-ensure)
(add-hook 'nix-ts-mode-hook #'eglot-ensure)
(add-hook 'zig-ts-mode-hook #'eglot-ensure)
(defmacro toggle-mode (mode)
`(if ,mode (,mode -1) (,mode 1)))
(defun toggle-eglot-inlay-hints-mode () (toggle-mode 'eglot-inlay-hints-mode))
(require 'evil)
(require 'avy)
(require 'xref)
(require 'flymake)
(evil-mode 1)
(define-key evil-normal-state-map (kbd "gw") #'avy-goto-word-0)
(define-key evil-normal-state-map (kbd "gl") #'evil-end-of-line)
(define-key evil-normal-state-map (kbd "gh") #'evil-first-non-blank)
(define-key evil-normal-state-map (kbd "gd") #'xref-find-definitions)
(define-key evil-normal-state-map (kbd "gR") #'xref-find-references)
(define-key evil-normal-state-map (kbd "gra") #'eglot-code-actions)
(define-key evil-normal-state-map (kbd "grh") #'eldoc)
(define-key evil-normal-state-map (kbd "grn") #'eglot-rename)
(define-key evil-normal-state-map (kbd "]d") #'flymake-goto-next-error)
(define-key evil-normal-state-map (kbd "[d") #'flymake-goto-prev-error)
(define-key evil-normal-state-map (kbd "^ h") #'toggle-eglot-inlay-hints-mode)
(define-key evil-normal-state-map "Q" #'evil-save-modified-and-close)
(define-key evil-normal-state-map "=" #'eglot-format)
(define-key evil-visual-state-map "v" #'evil-visual-block)
(require 'undo-fu-session)
(undo-fu-session-global-mode)
(setq green "#07d101")
(setq blue "#00bfff")
(setq cream "#edf0e0")
(setq pink "#f584c6")
(setq red "#f85624")
(setq dustypink "#d8916e")
(setq navy "#0047ab")
(setq gray "#c0c0c0")
(setq greenyellow "#adff2f")
(setq electriclime "#ccff00")
(setq darkgreen "#228b22")
(setq lightpink "#ffb7c5")
(setq gold "#ffd700")
(set-face-attribute 'default nil :background "none")
(set-face-attribute 'region nil :background blue)
(set-face-attribute 'font-lock-comment-face nil :foreground gray)
(set-face-attribute 'font-lock-constant-face nil :foreground pink)
(set-face-attribute 'font-lock-string-face nil :foreground lightpink)
(set-face-attribute 'font-lock-number-face nil :foreground gold)
(set-face-attribute 'font-lock-variable-name-face nil :foreground greenyellow :weight 'bold)
(set-face-attribute 'font-lock-function-name-face nil :foreground gold)
(set-face-attribute 'font-lock-keyword-face nil :foreground green)
(set-face-attribute 'font-lock-operator-face nil :foreground cream)
(set-face-attribute 'font-lock-preprocessor-face nil :foreground dustypink)
(set-face-attribute 'font-lock-type-face nil :foreground blue)
(set-face-attribute 'escape-glyph nil :foreground pink)
(set-face-attribute 'font-lock-warning-face nil :foreground navy :background cream :weight 'bold)
(set-face-attribute 'isearch nil :foreground cream)