;; dotfiles -- emacs.johannst.el ;; author: johannst (provide 'johannst) ;; config (custom-set-variables '(font-use-system-font t) '(indent-tabs-mode nil) '(inhibit-startup-screen t) '(tool-bar-mode nil) '(whitespace-style '(face trailing space-before-tab newline indentation empty space-after-tab tab-mark)) '(global-whitespace-mode t) '(backup-directory-alist `(("." . "~/.emacs.saves"))) '(display-line-numbers 'relative) ) ;; global kbd maps (global-set-key (kbd "C-x C-b") 'ibuffer) (define-key isearch-mode-map (kbd "M-o") 'isearch-occur) ;; only y/n prompt (no RET needed) (defalias 'yes-or-no-p 'y-or-n-p) ;; fix 'bad request' on package-refresh-contents (should be fixed with emcas 26.3) (setq gnutls-algorithm-priority "NORMAL:-VERS-TLS1.3") ;; ELPA & MELPA (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/") t) (setq package-enable-at-startup nil) (package-initialize) ;; bootstrap use-package (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (eval-when-compile (require 'use-package)) ;; theme (use-package spacemacs-theme :ensure t :defer t :init (load-theme 'spacemacs-dark t) ) ;; evil (use-package evil :ensure t :config (evil-mode t) ;; leader key (defvar leader-map (make-sparse-keymap) "Keymap for key.") (define-key evil-normal-state-map (kbd "SPC") leader-map) ;; scrolling (define-key evil-normal-state-map (kbd "C-k") 'evil-scroll-up) (define-key evil-normal-state-map (kbd "C-j") 'evil-scroll-down) ) ;; undo-tree (optional dependency for evil to get vim like undo/redo) (use-package undo-tree :ensure t :config (global-undo-tree-mode t) ) ;; org (use-package org :bind (("\C-cc" . org-capture) :map org-mode-map ("M-j" . org-metadown) ("M-h" . org-metaleft) ("M-l" . org-metaright) ("M-k" . org-metaup) ) :config (setq org-directory "~/org") (setq org-default-notes-file (concat org-directory "/capture.org")) (setq org-log-done t) (setq org-confirm-babel-evaluate nil) (setq org-todo-keywords '((sequence "TODO" "WAIT" "DONE"))) (setq org-hide-leading-stars t) ) ;; helm ;(use-package helm ; :ensure t ; :config ; (define-key helm-map (kbd "") 'helm-execute-persistent-action) ; (define-key helm-map (kbd "C-z") 'helm-select-action) ; (define-key leader-map "pf" 'helm-projectile-find-file) ; (helm-mode t) ; ) ;; helm ;(use-package helm-projectile ; :ensure t ; ) ;; ivy-xref (use-package ivy-xref :ensure t ) ;; magit (use-package magit :ensure t ) ;; lsp (use-package lsp-mode :ensure t :config (setq lsp-rust-server 'rust-analyzer lsp-rust-analyzer-server-display-inlay-hints t lsp-rust-analyzer-display-chaining-hints t lsp-rust-analyzer-display-parameter-hints t ) :hook ( (c-mode . lsp) (c++-mode . lsp) ) ) ;; lsp ui (use-package lsp-ui :ensure t :config (setq lsp-ui-doc-enable nil lsp-ui-sideline-enable t ) ) ;; company (use-package company :ensure t :config ; (global-company-mode t) (setq company-idle-delay 0 company-minimum-prefix-length 1 company-show-numbers t company-dabbrev-downcase nil company-tooltip-align-annotations t ) :hook ( (rust-mode . company-mode) (c-mode . company-mode) (c++-mode . (lambda () (company-mode) (add-to-list 'company-dabbrev-code-modes 'c++-mode))) ) :bind ( :map company-mode-map ("" . company-indent-or-complete-common) :map company-active-map ("C-p" . 'company-select-previous-or-abort) ("C-n" . 'company-select-next-or-abort) ("" . 'company-select-previous-or-abort) ("" . 'company-select-next-or-abort) ) ) ;; company-c-headers (use-package company-c-headers :ensure t :requires (company) :config (add-to-list 'company-backends 'company-c-headers) ;; simple heuristic to find latest c++ headers installed on system (add-to-list 'company-c-headers-path-system (concat "/usr/include/c++/" (car (last (directory-files "/usr/include/c++" nil "^[1-9]"))))) ) ;; rust-mode (use-package rust-mode :ensure t :mode ("\\.rs\\'" . rust-mode) :hook (rust-mode . lsp) ) ;; clang-format (use-package clang-format :ensure t )