2024-07-22 20:51:06 +00:00
|
|
|
(setq gc-cons-threshold (* 100 1000 1000))
|
2025-01-12 15:16:47 +00:00
|
|
|
(add-hook 'after-init-hook #'(lambda ()
|
|
|
|
;; restore after startup
|
|
|
|
(setq gc-cons-threshold 800000)))
|
2024-07-22 20:51:06 +00:00
|
|
|
|
|
|
|
(defun my/dired-open-current-file-directory ()
|
|
|
|
"Open the current file's directory in Dired, if possible."
|
|
|
|
(interactive)
|
|
|
|
(if (buffer-file-name)
|
|
|
|
(dired-jump)
|
|
|
|
(call-interactively 'dired)))
|
|
|
|
|
|
|
|
(defun my/duplicate-line-or-region (arg)
|
|
|
|
(interactive "p")
|
|
|
|
(let (beg end (origin (point)))
|
|
|
|
(if (and mark-active (> (point) (mark)))
|
|
|
|
(exchange-point-and-mark))
|
|
|
|
(setq beg (line-beginning-position))
|
|
|
|
(if mark-active
|
|
|
|
(exchange-point-and-mark))
|
|
|
|
(setq end (line-end-position))
|
|
|
|
(let ((region (buffer-substring-no-properties beg end)))
|
|
|
|
(dotimes (i arg)
|
|
|
|
(goto-char end)
|
|
|
|
(newline)
|
|
|
|
(insert region)
|
|
|
|
(setq end (point)))
|
|
|
|
(goto-char (+ origin (* (length region) arg) arg)))))
|
|
|
|
|
|
|
|
(defun my/mhtml-forward (arg)
|
|
|
|
(interactive "P")
|
|
|
|
(pcase (get-text-property (point) 'mhtml-submode)
|
|
|
|
('nil (sgml-skip-tag-forward 1))
|
|
|
|
(submode (forward-sexp))))
|
|
|
|
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(custom-set-variables
|
|
|
|
;; custom-set-variables was added by Custom.
|
|
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
|
|
;; Your init file should contain only one such instance.
|
|
|
|
;; If there is more than one, they won't work right.
|
2024-03-28 13:01:33 +00:00
|
|
|
'(custom-safe-themes
|
|
|
|
'("b99e334a4019a2caa71e1d6445fc346c6f074a05fcbb989800ecbe54474ae1b0" default))
|
2023-12-01 09:17:16 +00:00
|
|
|
'(initial-frame-alist '((fullscreen . maximized)))
|
|
|
|
'(package-selected-packages
|
2024-05-01 18:12:28 +00:00
|
|
|
'(json-mode orderless prettier-js magit docker-compose-mode zig-mode treesit ef-themes dockerfile-mode dap-mode julia-ts-mode lsp-julia julia-mode marginalia vertico tide which-key use-package pyenv-mode flycheck exec-path-from-shell elpy doom-themes doom-modeline all-the-icons)))
|
2023-12-01 09:17:16 +00:00
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(require 'package)
|
|
|
|
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
|
|
|
|
(package-initialize)
|
|
|
|
|
|
|
|
(use-package which-key
|
|
|
|
:ensure t
|
|
|
|
:config (which-key-mode))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(use-package vertico
|
|
|
|
:ensure t
|
|
|
|
:config
|
2024-05-01 18:12:28 +00:00
|
|
|
(add-hook 'rfn-eshadow-update-overlay-hook 'vertico-directory-tidy))
|
2023-12-01 09:17:16 +00:00
|
|
|
|
|
|
|
(use-package marginalia
|
|
|
|
:ensure t)
|
|
|
|
|
2024-01-20 09:04:12 +00:00
|
|
|
(require 'treesit)
|
|
|
|
|
2024-04-22 16:41:54 +00:00
|
|
|
(use-package docker-compose-mode
|
|
|
|
:ensure t)
|
|
|
|
|
2024-01-20 09:04:12 +00:00
|
|
|
(use-package zig-mode
|
|
|
|
:ensure t)
|
|
|
|
|
2024-04-22 16:41:54 +00:00
|
|
|
(use-package dockerfile-mode
|
2024-07-22 20:51:06 +00:00
|
|
|
:ensure t
|
|
|
|
:defer t
|
|
|
|
:mode ("Dockerfile\\'" "\\.dockerfile\\'")
|
|
|
|
:commands dockerfile-mode)
|
2024-04-22 16:41:54 +00:00
|
|
|
|
|
|
|
(use-package flycheck
|
2025-01-12 15:16:47 +00:00
|
|
|
:ensure t
|
|
|
|
:defer t
|
|
|
|
:hook (prog-mode . flycheck-mode))
|
2024-04-22 16:41:54 +00:00
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(use-package dired
|
|
|
|
:config
|
|
|
|
(put 'dired-find-alternate-file 'disabled nil)
|
|
|
|
(add-hook 'dired-mode-hook
|
|
|
|
(lambda ()
|
|
|
|
(define-key dired-mode-map (kbd "RET")
|
|
|
|
(lambda () (interactive) (find-alternate-file (dired-get-file-for-visit))))))
|
|
|
|
(setq delete-by-moving-to-trash t)
|
|
|
|
(setq dired-dwim-target t))
|
|
|
|
|
|
|
|
(vertico-mode 1)
|
|
|
|
|
|
|
|
(marginalia-mode 1)
|
|
|
|
|
|
|
|
(tool-bar-mode -1)
|
|
|
|
|
|
|
|
(scroll-bar-mode -1)
|
|
|
|
|
2024-07-22 20:51:06 +00:00
|
|
|
;;"M+1Code Nerd Font"
|
|
|
|
;;"Lekton Nerd Font"
|
2025-01-12 15:16:47 +00:00
|
|
|
;; Agave Nerd Font
|
|
|
|
;; EnvyCodeR Nerd Font
|
|
|
|
;; Binchotan_Sharp
|
|
|
|
;; Ubuntu Mono
|
|
|
|
(set-face-attribute 'default nil :font "Binchotan_Sharp" :height 130)
|
2024-07-22 20:51:06 +00:00
|
|
|
|
|
|
|
;;(set-fontset-font t nil (font-spec :size 20 :name "VictorMono Nerd Font Mono"))
|
2024-01-20 09:04:12 +00:00
|
|
|
;;(set-face-attribute 'default nil :font "VictorMono Nerd Font Mono" :height 110)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2024-03-28 13:01:33 +00:00
|
|
|
;;(setq x-antialiasing-factor nil)
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(set-default-coding-systems 'utf-8)
|
|
|
|
|
|
|
|
(setq ring-bell-function 'ignore)
|
|
|
|
|
|
|
|
(setq inhibit-startup-message t)
|
|
|
|
|
|
|
|
(setq backup-directory-alist '(("." . "~/.saves")))
|
|
|
|
|
|
|
|
(setq auto-save-default nil)
|
|
|
|
|
|
|
|
(setq-default indent-tabs-mode nil)
|
|
|
|
|
|
|
|
(setq show-paren-delay 0)
|
|
|
|
|
2024-01-20 09:04:12 +00:00
|
|
|
(setq native-comp-async-report-warnings-errors 'silent)
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(delete-selection-mode 1)
|
|
|
|
|
|
|
|
(show-paren-mode 1)
|
|
|
|
|
|
|
|
(add-hook 'before-save-hook 'whitespace-cleanup)
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(setq-default frame-title-format
|
|
|
|
'(:eval
|
|
|
|
(format "%s"
|
|
|
|
(cond
|
|
|
|
(buffer-file-truename buffer-file-truename )
|
|
|
|
(dired-directory (concat "[ " dired-directory " ]"))
|
|
|
|
(t "GNU Emacs 👾")))))
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(use-package elpy
|
2024-05-01 18:12:28 +00:00
|
|
|
:ensure t
|
2024-07-22 20:51:06 +00:00
|
|
|
:defer t
|
|
|
|
:commands (elpy-enable)
|
2025-01-12 15:16:47 +00:00
|
|
|
:hook (python-mode . elpy-enable)
|
2024-05-01 18:12:28 +00:00
|
|
|
:config
|
2024-07-22 20:51:06 +00:00
|
|
|
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules)))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2024-07-22 20:51:06 +00:00
|
|
|
;; (use-package exec-path-from-shell
|
|
|
|
;; :ensure t)
|
|
|
|
;; (exec-path-from-shell-copy-env "PATH")
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2024-05-01 18:12:28 +00:00
|
|
|
;; black or standard (flake8 ?) code formatter:
|
2023-12-01 09:17:16 +00:00
|
|
|
;; (add-hook 'elpy-mode-hook (lambda ()
|
|
|
|
;; (add-hook 'before-save-hook
|
|
|
|
;; 'elpy-format-code nil t)))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
(add-hook 'elpy-mode-hook (lambda ()
|
|
|
|
(add-hook 'before-save-hook
|
2023-12-01 09:17:16 +00:00
|
|
|
'elpy-black-fix-code nil t)))
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(add-hook 'python-mode-hook
|
|
|
|
(lambda () (setq gud-pdb-command-name "python3 -m pdb")))
|
|
|
|
|
2023-07-29 14:47:26 +00:00
|
|
|
(use-package yasnippet
|
2025-01-12 15:16:47 +00:00
|
|
|
:hook (prog-mode . yas-minor-mode)
|
2023-07-29 14:47:26 +00:00
|
|
|
:config
|
|
|
|
(setq yas-snippet-dirs '("~/.emacs.d/snippets"))
|
2025-01-12 15:16:47 +00:00
|
|
|
(yas-reload-all))
|
2023-07-29 14:47:26 +00:00
|
|
|
|
2025-01-12 15:16:47 +00:00
|
|
|
(use-package org-superstar
|
|
|
|
:ensure t
|
|
|
|
:defer t
|
|
|
|
:hook (org-mode . org-superstar-mode))
|
|
|
|
|
|
|
|
(defface my-org-face
|
|
|
|
'((t :family "Liberation Sans" :height 120))
|
|
|
|
"Face for Org mode.")
|
|
|
|
|
|
|
|
(defun my-org-font-setup ()
|
|
|
|
(face-remap-add-relative 'default 'my-org-face))
|
|
|
|
|
|
|
|
(add-hook 'org-mode-hook 'my-org-font-setup)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
;; my keybindings
|
|
|
|
|
|
|
|
(defun revert-buffer-no-confirm ()
|
|
|
|
(interactive)
|
|
|
|
(revert-buffer :ignore-auto :noconfirm))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(defun kill-buffer-no-confirm ()
|
|
|
|
(interactive)
|
|
|
|
(kill-buffer nil))
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(defun list-buffers-please ()
|
|
|
|
(interactive)
|
|
|
|
(list-buffers)
|
|
|
|
(other-window 1)
|
|
|
|
(delete-other-windows))
|
|
|
|
|
|
|
|
(defun make-json-great-again ()
|
|
|
|
(interactive)
|
|
|
|
(when (string-match-p ".json\\'" (buffer-name))
|
|
|
|
(mark-whole-buffer)
|
|
|
|
(json-pretty-print (region-beginning) (region-end))))
|
|
|
|
|
2024-07-22 20:51:06 +00:00
|
|
|
(global-unset-key (kbd "C-d"))
|
2023-06-17 12:25:11 +00:00
|
|
|
(global-unset-key (kbd "C-z"))
|
|
|
|
(global-unset-key (kbd "C-v"))
|
|
|
|
(global-unset-key (kbd "C-f"))
|
|
|
|
(global-unset-key (kbd "C-b"))
|
|
|
|
(global-unset-key (kbd "C-n"))
|
2023-12-01 09:17:16 +00:00
|
|
|
(global-unset-key (kbd "C-l"))
|
2023-06-17 12:25:11 +00:00
|
|
|
(global-unset-key (kbd "C-p"))
|
|
|
|
(global-unset-key (kbd "M-v"))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(global-set-key (kbd "<f1>") 'find-file)
|
2023-06-17 12:25:11 +00:00
|
|
|
(global-set-key (kbd "<f5>") 'revert-buffer-no-confirm)
|
2023-12-01 09:17:16 +00:00
|
|
|
(global-set-key (kbd "<f12>") 'kill-buffer-no-confirm)
|
|
|
|
(global-set-key (kbd "C-b") 'list-buffers-please)
|
|
|
|
(global-set-key (kbd "C-n") 'dired-create-empty-file)
|
2024-07-22 20:51:06 +00:00
|
|
|
(global-set-key (kbd "C-d") 'my/duplicate-line-or-region)
|
|
|
|
(global-set-key (kbd "C-x d") 'my/dired-open-current-file-directory)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
(add-hook 'elpy-mode-hook
|
|
|
|
(lambda () (local-set-key [f2] 'elpy-refactor-rename)))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(add-hook 'elpy-mode-hook
|
|
|
|
(lambda () (local-set-key [f7] 'elpy-goto-definition)))
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(add-hook 'typescript-mode-hook
|
|
|
|
(lambda () (local-set-key [f2] 'tide-rename-symbol)))
|
|
|
|
|
|
|
|
(add-hook 'typescript-mode-hook
|
|
|
|
(lambda () (local-set-key [f7] 'tide-references)))
|
|
|
|
|
|
|
|
(add-hook 'hs-minor-mode-hook
|
|
|
|
(lambda () (local-set-key (kbd "C-<escape>") 'hs-toggle-hiding)))
|
|
|
|
|
|
|
|
(add-hook 'mhtml-mode-hook
|
|
|
|
(lambda () (local-set-key (kbd "C-f") 'prettier-js)))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(add-hook 'typescript-ts-mode-hook
|
2023-06-17 12:25:11 +00:00
|
|
|
(lambda () (local-set-key (kbd "C-f") 'prettier-js)))
|
|
|
|
|
|
|
|
(add-hook 'js-mode-hook
|
|
|
|
(lambda () (local-set-key (kbd "C-f") 'make-json-great-again)))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(add-hook 'lsp-mode-hook
|
|
|
|
(lambda () (local-set-key (kbd "C-f") 'lsp-format-buffer)))
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
;; (add-hook 'prog-mode-hook
|
|
|
|
;; (lambda () (local-set-key (kbd "C-;") 'comment-or-uncomment-region)))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
;; (define-key map (kbd "M-.") 'elpy-goto-assignment
|
|
|
|
;; (define-key map (kbd "C-x 4 M-.") 'elpy-goto-assignment-other-window)
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
;; stuff for folding html
|
|
|
|
|
|
|
|
(add-to-list 'hs-special-modes-alist
|
|
|
|
'(mhtml-mode
|
|
|
|
"{\\|<[^/>]+?"
|
|
|
|
"}\\|</[^/>]*[^/]>"
|
|
|
|
"<!--"
|
2024-07-22 20:51:06 +00:00
|
|
|
my/mhtml-forward
|
2023-06-17 12:25:11 +00:00
|
|
|
nil))
|
|
|
|
|
|
|
|
(add-hook 'prog-mode-hook 'hs-minor-mode)
|
|
|
|
|
|
|
|
(require 'display-line-numbers)
|
|
|
|
|
|
|
|
(defcustom display-line-numbers-exempt-modes
|
2023-12-01 09:17:16 +00:00
|
|
|
'(gud-mode inferior-python-mode dired-mode vterm-mode eshell-mode shell-mode term-mode ansi-tern-mode treemacs-mode)
|
2024-04-22 16:41:54 +00:00
|
|
|
"Major modes on which to disable line numbers."
|
2023-06-17 12:25:11 +00:00
|
|
|
:group 'display-line-numbers
|
|
|
|
:type 'list
|
|
|
|
:version "green")
|
|
|
|
|
|
|
|
(defun display-line-numbers--turn-on ()
|
|
|
|
"Turn on line numbers except for certain modes.
|
|
|
|
Exempt major modes are defined in `display-line-numbers-exempt-modes'."
|
|
|
|
(unless (or (minibufferp)
|
|
|
|
(member major-mode display-line-numbers-exempt-modes))
|
|
|
|
(display-line-numbers-mode)))
|
|
|
|
|
2023-12-09 17:39:36 +00:00
|
|
|
;; (global-display-line-numbers-mode)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
;; theming starts here:
|
|
|
|
|
2024-03-28 13:01:33 +00:00
|
|
|
;; (use-package doom-themes
|
|
|
|
;; :ensure t
|
|
|
|
;; :config
|
|
|
|
;; (load-theme 'doom-monokai-pro))
|
|
|
|
|
2025-01-12 15:16:47 +00:00
|
|
|
(use-package gruber-darker-theme
|
|
|
|
:ensure t)
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(use-package modus-themes
|
|
|
|
:ensure t)
|
|
|
|
|
2025-01-12 15:16:47 +00:00
|
|
|
;; (modus-themes-select 'modus-operandi-tinted)
|
2024-01-20 09:04:12 +00:00
|
|
|
(setq modus-themes-to-toggle '(modus-operandi-tinted modus-vivendi-tinted))
|
2023-12-09 17:39:36 +00:00
|
|
|
|
|
|
|
(use-package ef-themes
|
|
|
|
:ensure t)
|
|
|
|
|
|
|
|
(setq ef-themes-to-toggle '(ef-day ef-autumn))
|
|
|
|
|
|
|
|
(setq ef-themes-headings ; read the manual's entry or the doc string
|
|
|
|
'((0 . (variable-pitch light 1.9))
|
|
|
|
(1 . (variable-pitch light 1.8))
|
|
|
|
(2 . (variable-pitch regular 1.7))
|
|
|
|
(3 . (variable-pitch regular 1.6))
|
|
|
|
(4 . (variable-pitch regular 1.5))
|
|
|
|
(5 . (variable-pitch 1.4)) ; absence of weight means `bold'
|
|
|
|
(6 . (variable-pitch 1.3))
|
|
|
|
(7 . (variable-pitch 1.2))
|
|
|
|
(t . (variable-pitch 1.1))))
|
|
|
|
|
|
|
|
(setq ef-themes-mixed-fonts t
|
|
|
|
ef-themes-variable-pitch-ui t)
|
|
|
|
|
2025-01-12 15:16:47 +00:00
|
|
|
(defun my-setup-display-based-on-type ()
|
|
|
|
"Load different themes and disable menu bar for console mode."
|
|
|
|
(if (display-graphic-p)
|
|
|
|
(progn
|
|
|
|
(ef-themes-select 'ef-elea-light)
|
|
|
|
(menu-bar-mode 1))
|
|
|
|
(progn
|
|
|
|
(load-theme 'gruber-darker t)
|
|
|
|
(menu-bar-mode -1))))
|
2023-12-09 17:39:36 +00:00
|
|
|
|
2025-01-12 15:16:47 +00:00
|
|
|
(add-hook 'after-init-hook 'my-setup-display-based-on-type)
|
2023-12-09 17:39:36 +00:00
|
|
|
|
|
|
|
;; theming stops here
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
(use-package magit
|
2024-07-22 20:51:06 +00:00
|
|
|
:ensure t
|
|
|
|
:defer t
|
|
|
|
:bind (("C-x g" . magit-status))
|
|
|
|
:commands (magit-status magit-dispatch magit-file-dispatch)
|
2025-01-12 15:16:47 +00:00
|
|
|
:config
|
2024-07-22 20:51:06 +00:00
|
|
|
(setq magit-auto-revert-mode nil))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
(use-package doom-modeline
|
|
|
|
:ensure t
|
|
|
|
:hook (after-init . doom-modeline-mode))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
;; M-x nerd-icons-install-fonts
|
|
|
|
(use-package nerd-icons
|
|
|
|
:ensure t)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
;; prettier setup goes here
|
|
|
|
(use-package prettier-js
|
|
|
|
:ensure t)
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
;; __________________________________________________
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
(use-package orderless
|
|
|
|
:ensure t
|
|
|
|
:custom
|
|
|
|
(completion-styles '(orderless basic))
|
|
|
|
(completion-category-overrides '((file (styles basic partial-completion)))))
|
|
|
|
|
2024-07-22 20:51:06 +00:00
|
|
|
(use-package json-mode
|
|
|
|
:ensure t
|
|
|
|
:mode "\\.json\\'"
|
|
|
|
:defer t
|
|
|
|
:commands json-mode)
|
2023-06-17 12:25:11 +00:00
|
|
|
|
|
|
|
;; __________________________________________________
|
2023-12-01 09:17:16 +00:00
|
|
|
;; typescript setup starts here
|
2023-06-17 12:25:11 +00:00
|
|
|
(defun setup-tide-mode ()
|
|
|
|
(interactive)
|
|
|
|
(tide-setup)
|
|
|
|
(flycheck-mode +1)
|
|
|
|
(setq flycheck-check-syntax-automatically '(save mode-enabled))
|
|
|
|
(eldoc-mode +1)
|
2023-12-01 09:17:16 +00:00
|
|
|
(tide-hl-identifier-mode +1))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(use-package tide
|
|
|
|
:ensure t
|
|
|
|
:after (flycheck)
|
|
|
|
:hook ((typescript-ts-mode . setup-tide-mode)
|
|
|
|
(tsx-ts-mode . setup-tide-mode)
|
|
|
|
(typescript-ts-mode . tide-hl-identifier-mode)
|
|
|
|
(before-save . tide-format-before-save)))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
;;----------------------------------------
|
|
|
|
;; dotnet starts here
|
|
|
|
(use-package lsp-mode
|
|
|
|
:commands (lsp lsp-deferred))
|
2023-06-17 12:25:11 +00:00
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(use-package dap-mode
|
2023-06-17 12:25:11 +00:00
|
|
|
:ensure t
|
2023-12-01 09:17:16 +00:00
|
|
|
;;:custom (lsp-enable-dap-auto-configure nil)
|
|
|
|
:commands dap-debug)
|
|
|
|
|
2024-07-22 20:51:06 +00:00
|
|
|
(use-package dap-netcore
|
|
|
|
:after dap-mode
|
|
|
|
:defer t
|
|
|
|
:commands (dap-netcore-setup)
|
|
|
|
:init
|
|
|
|
(add-hook 'csharp-mode-hook
|
|
|
|
(lambda ()
|
|
|
|
(require 'dap-netcore)
|
|
|
|
(dap-netcore-setup))))
|
|
|
|
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
;;(setq dap-auto-configure-features '(sessions locals controls tooltip))
|
|
|
|
|
|
|
|
(defun setup-lsp-keys ()
|
|
|
|
(interactive)
|
|
|
|
(local-set-key [f7] 'lsp-find-implementation)
|
|
|
|
(local-set-key [f2] 'lsp-rename))
|
|
|
|
|
2024-04-22 16:41:54 +00:00
|
|
|
(add-hook 'lsp-mode-hook
|
|
|
|
(lambda () (setup-lsp-keys)))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(defun setup-dotnet ()
|
|
|
|
(interactive)
|
|
|
|
(exec-path-from-shell-copy-env "DOTNET_ROOT")
|
|
|
|
(lsp-deferred))
|
|
|
|
|
2024-04-22 16:41:54 +00:00
|
|
|
(add-to-list 'auto-mode-alist '("\\.csproj\\'" . xml-mode))
|
|
|
|
|
2023-12-01 09:17:16 +00:00
|
|
|
(add-hook 'csharp-mode-hook
|
|
|
|
(lambda () (setup-dotnet)))
|
|
|
|
|
2024-03-28 13:01:33 +00:00
|
|
|
(defun find-project-root ()
|
|
|
|
(interactive)
|
|
|
|
(if (ignore-errors (eproject-root))
|
|
|
|
(eproject-root)
|
|
|
|
(or (find-git-repo (buffer-file-name)) (file-name-directory (buffer-file-name)))))
|
|
|
|
|
|
|
|
(defun find-git-repo (dir)
|
|
|
|
(if (string= "/" dir)
|
|
|
|
nil
|
|
|
|
(if (file-exists-p (expand-file-name "../.git/" dir))
|
|
|
|
dir
|
|
|
|
(find-git-repo (expand-file-name "../" dir)))))
|
|
|
|
|
|
|
|
|
|
|
|
(defun file-path-to-namespace ()
|
|
|
|
(interactive)
|
|
|
|
(let (
|
|
|
|
(root (find-project-root))
|
|
|
|
(base (file-name-nondirectory buffer-file-name))
|
|
|
|
)
|
|
|
|
(substring (replace-regexp-in-string "/" "\." (substring buffer-file-name (length root) (* -1 (length base))) t t) 0 -1)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2023-06-17 12:25:11 +00:00
|
|
|
(custom-set-faces
|
|
|
|
;; custom-set-faces was added by Custom.
|
|
|
|
;; If you edit it by hand, you could mess it up, so be careful.
|
|
|
|
;; Your init file should contain only one such instance.
|
|
|
|
;; If there is more than one, they won't work right.
|
|
|
|
)
|