.emacs.d

my emacs configuration directory
Log | Files | Refs | README

ide.el (3034B)


      1 ;; -*- lexical-binding: t; -*-
      2 ;;; Configuration for IDE-related functionality.
      3 
      4 (setq-default tab-width 4)
      5 (setq indent-tabs-mode nil)
      6 (add-to-list 'exec-path (format "%s/go/bin" (getenv "HOME")))
      7 (add-to-list 'exec-path (format "%s/.cargo/bin" (getenv "HOME")))
      8 (add-to-list 'exec-path "/usr/local/go/bin")
      9 
     10 (c-set-offset 'innamespace 0)
     11 
     12 (use-package deadgrep)
     13 (use-package transient)
     14 (use-package magit)
     15 
     16 (use-package hl-todo
     17   :config
     18   (setq hl-todo-keyword-faces
     19       `(("TODO"   . ,(doom-color 'green))
     20         ("FIXME"  . ,(doom-color 'red))
     21         ("DEBUG"  . ,(doom-color 'magenta))
     22         ("HACK"   . ,(doom-color 'violet))
     23         ("NOTE"   . ,(doom-color 'cyan))))
     24   :hook (prog-mode . hl-todo-mode))
     25 
     26 (use-package consult-todo)
     27 
     28 (use-package haskell-mode)
     29 (use-package go-mode)
     30 (use-package sml-mode)
     31 (use-package rust-mode)
     32 
     33 (use-package lsp-mode
     34   :config
     35   ;; Disable annoying headerline
     36   (setq lsp-headerline-breadcrumb-enable nil)
     37   ;; Don't show unneeded function info in completions
     38   (setq lsp-completion-show-detail nil)
     39   ;; Disable annoying autoformatting!
     40   (setq-default lsp-enable-indentation nil)
     41   (setq-default lsp-enable-on-type-formatting nil)
     42   :commands lsp
     43   ;; Add languages of your choice!
     44   :hook ((c++-mode . lsp)
     45          (python-mode . lsp)
     46          (typescript-mode . lsp)
     47          (rust-mode . lsp)
     48          (lsp-mode . (lambda () (lsp-lens-mode 0)))))
     49 
     50 (use-package lsp-ui
     51   :after lsp
     52   :config
     53   (setq lsp-ui-doc-delay 5)
     54   (eval `(set-face-attribute 'lsp-ui-doc-background nil :background ,(doom-darken 'bg .2)))
     55   :hook ((flycheck-mode . lsp-ui-mode) ;; HACK
     56          (lsp-mode . lsp-ui-mode)))
     57 
     58 (use-package company
     59   :config
     60   (setq company-idle-delay 0)
     61   (setq company-tooltip-maximum-width 40)
     62   :hook
     63   (lsp-mode . company-mode))
     64 
     65 
     66 (use-package eros
     67   :config
     68   (defun slime-eval-last-expression-eros ()
     69     (interactive)
     70     (cl-destructuring-bind (output value)
     71         (slime-eval `(swank:eval-and-grab-output ,(slime-last-expression)))
     72       (eros--make-result-overlay (concat output value)
     73                                  :where (point)
     74                                  :duration eros-eval-result-duration))))
     75 
     76 (use-package slime
     77   :after eros
     78   :config
     79   (setq inferior-lisp-program "sbcl")
     80 
     81   :bind (:map slime-mode-map
     82               ("C-x C-e" . slime-eval-last-expression-eros))
     83   :hook ((lisp-mode . slime)
     84          (lisp-mode . slime-mode)))
     85 
     86 (use-package eat :ensure
     87   (:host codeberg
     88          :repo "akib/emacs-eat"
     89          :files ("*.el" ("term" "term/*.el") "*.texi"
     90                  "*.ti" ("terminfo/e" "terminfo/e/*")
     91                  ("terminfo/65" "terminfo/65/*")
     92                  ("integration" "integration/*")
     93                  (:exclude ".dir-locals.el" "*-tests.el")))
     94   :config
     95   (setq eat-shell-prompt-annotation-position 'right-margin)
     96   (setq eat-shell-prompt-annotation-failure-margin-indicator "⛌ ")
     97   (setq eat-shell-prompt-annotation-success-margin-indicator "✓ ")
     98   (setq eat-shell-prompt-annotation-running-margin-indicator "⋯ "))