From 2c12aec78d2e60f11a883e79fd490636595409be Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Wed, 30 Nov 2022 22:57:41 -0800 Subject: [PATCH] Make emacs much more usable as an IDE Fix C-u in evil Fix 'region theme Add editorconfig, flycheck, company, and lsp-mode --- init.el | 56 ++++++++++++++++++++++++++++++++++++++++++++++- my-theme-theme.el | 15 +++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/init.el b/init.el index e33e4fd..66077f6 100644 --- a/init.el +++ b/init.el @@ -34,7 +34,7 @@ mouse-wheel-follow-mouse +1 scroll-step 1) ;; C-n C-p scroll step -;;;; Tabs +;; Tabs (setq custom-tab-width 2) (defun disable-tabs () @@ -79,6 +79,11 @@ ;; Rainbow-Mode (show hex strings in color) (use-package rainbow-mode) +;; Editorconfig support +(use-package editorconfig + :config + (editorconfig-mode 1)) + ;; Treesitter (use-package tree-sitter :config @@ -94,6 +99,7 @@ ;; Evil (Vim Emulation) (use-package evil :init + (setq evil-want-C-u-scroll t) (setq evil-mode-beyond-eol t) (setq evil-mode-fine-undo t) (setq evil-default-state 'emacs) @@ -133,3 +139,51 @@ ;; Define jumps with ] and [ (funcall define-jumps "c" "class") (funcall define-jumps "f" "function"))) + +;; Explanations for keybindings +(use-package which-key + :config + (which-key-mode +1)) + +;; On the fly syntax checking +(use-package flycheck) + +;; Completions +(use-package company + :init + (setq company-minimum-prefix-length 1) + (setq company-idle-delay 0) + (setq company-selection-wrap-around t) + (setq company-tooltip-align-annotations t) + (setq company-tooltip-flip-when-above t) + (setq company-tooltip-margin 0) + (setq company-show-quick-access 'right) + :config + (setq company-transformers '(delete-consecutive-dups + company-sort-prefer-same-case-prefix + company-sort-by-backend-importance + company-sort-by-occurrence)) + (define-key company-active-map (kbd "M-`") #'company-complete-selection) + (define-key company-active-map (kbd "M-n") #'company-select-next) + (define-key company-active-map (kbd "M-p") #'company-select-previous) + (define-key company-active-map (kbd "M-j") #'company-select-next) + (define-key company-active-map (kbd "M-k") #'company-select-previous) + (global-company-mode +1)) + +;; Lsp +(use-package lsp-mode + :init + (setq lsp-headerline-breadcrumb-enable nil) + (setq lsp-signature-auto-activate nil) + (setq lsp-signature-doc-lines 0) + (setq lsp-ui-doc-show-with-cursor t) + (setq lsp-ui-doc-position 'top) + (setq lsp-ui-doc-delay 0.5) + :config + (evil-define-key 'normal lsp-mode-map (kbd "SPC l") lsp-command-map) + (add-hook 'lsp-mode-hook #'lsp-enable-which-key-integration) + (add-hook 'evil-insert-state-entry-hook #'lsp-signature-activate) + (add-hook 'evil-insert-state-exit-hook #'lsp-signature-stop)) +(use-package lsp-ui) +(setq gc-cons-threshold (* 1024 1024 100)) +(setq read-process-output-max (* 1024 1024)) diff --git a/my-theme-theme.el b/my-theme-theme.el index ead82c2..c1bb419 100644 --- a/my-theme-theme.el +++ b/my-theme-theme.el @@ -61,6 +61,9 @@ (variable '("#6ec5b1" nil nil)) (string '("#15e04a" nil nil)) (type '("#17b343" nil nil)) + + (lsp-hover-highlight (funcall brighten-first common-bg 0.05)) + (company-bg (funcall brighten-first common-bg 0.1)) ;; Extra colors #1fa345 ) (custom-theme-set-faces @@ -72,6 +75,7 @@ (funcall face 'mode-line-inactive :bg (funcall darken-first common-bg 0.35) :fg common-fg) (funcall face 'mode-line :bg modeline :fg common-fg) (funcall face 'hl-line :bg (funcall darken-first common-bg 0.15)) + (funcall face 'region :bg (funcall brighten-first common-bg 0.15)) (funcall face 'font-lock-comment-face :fg comment) (funcall face 'font-lock-doc-face :fg doc) (funcall face 'font-lock-keyword-face :fg keyword) @@ -80,6 +84,17 @@ (funcall face 'font-lock-variable-name-face :fg variable) (funcall face 'font-lock-string-face :fg string) (funcall face 'font-lock-type-face :fg type) + + ;; Lsp + (funcall face 'lsp-face-highlight-textual :bg lsp-hover-highlight) + (funcall face 'lsp-face-highlight-read :bg lsp-hover-highlight) + (funcall face 'lsp-face-highlight-write :bg lsp-hover-highlight) + + ;; company + (funcall face 'company-tooltip :bg company-bg) + (funcall face 'company-tooltip-selection :bg (funcall brighten-first company-bg 0.15)) + (funcall face 'company-scrollbar-fg :bg (funcall brighten-first company-bg 0.3)) + (funcall face 'company-scrollbar-bg :bg (funcall brighten-first company-bg 0.15)) )) (provide-theme 'my-theme)