2021-02-21 02:59:11 +00:00
|
|
|
;; -*- lexical-binding: t; -*-
|
|
|
|
|
2021-02-20 19:57:40 +00:00
|
|
|
;; IDE features
|
|
|
|
|
|
|
|
;; Company-mode provides inline autocompletion
|
|
|
|
(use-package company
|
2021-02-20 23:23:42 +00:00
|
|
|
:hook (after-init . global-company-mode)
|
|
|
|
:config
|
2021-02-21 16:37:47 +00:00
|
|
|
(setq tab-always-indent 'complete)
|
2021-02-22 02:30:23 +00:00
|
|
|
(evil-collection-company-setup)
|
2021-02-28 21:06:49 +00:00
|
|
|
(general-def company-active-map "RET" #'company-complete-selection)
|
2021-02-22 02:30:23 +00:00
|
|
|
:custom
|
2021-02-22 04:14:51 +00:00
|
|
|
(company-idle-delay 0.3)
|
|
|
|
:general
|
|
|
|
([remap indent-for-tab-command] #'company-indent-or-complete-common))
|
2021-02-20 19:57:40 +00:00
|
|
|
|
|
|
|
;; Flycheck gives you error squigglies
|
|
|
|
(use-package flycheck
|
|
|
|
:hook (after-init . global-flycheck-mode)
|
|
|
|
:custom
|
|
|
|
(flycheck-disabled-checkers '(emacs-lisp-checkdoc emacs-lisp)))
|
|
|
|
|
|
|
|
;; Quick file overview for supported modes
|
|
|
|
(use-package imenu
|
|
|
|
:straight (:type built-in)
|
|
|
|
:general
|
|
|
|
(leader-map "m" #'imenu))
|
|
|
|
|
|
|
|
;; Find definition/references
|
|
|
|
(use-package xref
|
|
|
|
:straight (:type built-in)
|
2021-02-20 22:49:36 +00:00
|
|
|
:config
|
|
|
|
(evil-collection-xref-setup)
|
2021-02-20 19:57:40 +00:00
|
|
|
:general
|
|
|
|
(normal "M-." #'xref-find-definitions)
|
|
|
|
(normal "M-," #'xref-pop-marker-stack)
|
2021-02-20 22:49:36 +00:00
|
|
|
(normal "M-r" #'xref-find-references)
|
|
|
|
:custom
|
|
|
|
(xref-prompt-for-identifier nil))
|
|
|
|
|
|
|
|
;; Full-on IDE functionality via LSP mode
|
|
|
|
(use-package lsp-mode
|
|
|
|
:hook
|
|
|
|
(python-mode . lsp-deferred)
|
|
|
|
(rust-mode . lsp-deferred)
|
|
|
|
(go-mode . lsp-deferred)
|
|
|
|
(sh-mode . lsp-deferred)
|
2021-02-21 16:37:59 +00:00
|
|
|
:init
|
|
|
|
(which-key-add-keymap-based-replacements global-map
|
|
|
|
"C-c l" '("lsp"))
|
2021-02-20 22:49:36 +00:00
|
|
|
:config
|
|
|
|
(add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration)
|
|
|
|
:custom
|
|
|
|
(lsp-keymap-prefix "C-c l")
|
|
|
|
(lsp-headerline-breadcrumb-enable nil)
|
2021-02-21 16:42:42 +00:00
|
|
|
(lsp-file-watch-threshold 100000))
|
2021-02-20 22:49:36 +00:00
|
|
|
|
|
|
|
(use-package lsp-ui
|
|
|
|
:after lsp)
|
2021-02-20 19:57:40 +00:00
|
|
|
|
2021-02-20 23:23:42 +00:00
|
|
|
;; Some compilation-mode conveniences
|
|
|
|
(use-package compile
|
|
|
|
:straight (:type built-in)
|
|
|
|
:commands compile
|
|
|
|
:config
|
2021-02-26 21:46:57 +00:00
|
|
|
(evil-collection-compile-setup)
|
|
|
|
(defun postprocess-compilation-buffer ()
|
|
|
|
(goto-char compilation-filter-start)
|
|
|
|
(when (looking-at "\033c")
|
|
|
|
(delete-region (point-min) (match-end 0)))
|
|
|
|
(ansi-color-apply-on-region (point) (point-max)))
|
|
|
|
(add-hook 'compilation-filter-hook 'postprocess-compilation-buffer))
|
|
|
|
|
2021-02-20 23:24:06 +00:00
|
|
|
;; Code formatting library
|
|
|
|
(use-package apheleia
|
|
|
|
:straight (apheleia :host github :repo "raxod502/apheleia")
|
|
|
|
:general
|
|
|
|
("C-c f" #'apheleia-format-buffer))
|
|
|
|
|
2021-03-11 18:49:48 +00:00
|
|
|
;; Debugger interface
|
|
|
|
(use-package realgud
|
|
|
|
:defer t
|
|
|
|
:config
|
|
|
|
(evil-collection-realgud-setup))
|
|
|
|
|
2021-02-20 19:57:40 +00:00
|
|
|
(provide 'init-ide)
|