diff --git a/init.el b/init.el index 12fce7c..d304339 100644 --- a/init.el +++ b/init.el @@ -1,3 +1,12 @@ +(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. + '(initial-frame-alist '((fullscreen . maximized))) + '(package-selected-packages + '(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))) + (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) @@ -10,7 +19,34 @@ :ensure t :config (which-key-mode)) -(set-face-attribute 'default nil :font "JetBrains Mono" :height 130) +(use-package vertico + :ensure t + :config + (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)) + +(use-package marginalia + :ensure t) + +(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) + +;;(set-face-attribute 'default nil :font "JetBrains Mono" :height 110) +(set-face-attribute 'default nil :font "VictorMono Nerd Font Mono" :height 110) (set-default-coding-systems 'utf-8) @@ -24,25 +60,22 @@ (setq-default indent-tabs-mode nil) -;;(setq ido-everywhere t) - -;;(setq ido-enable-flex-matching t) - -(ido-mode) - (setq show-paren-delay 0) (delete-selection-mode 1) (show-paren-mode 1) -(require 'paren) -(set-face-background 'show-paren-match (face-background 'default)) -(set-face-foreground 'show-paren-match "#def") -(set-face-attribute 'show-paren-match nil :weight 'extra-bold) - (add-hook 'before-save-hook 'whitespace-cleanup) +(setq-default frame-title-format + '(:eval + (format "%s" + (cond + (buffer-file-truename buffer-file-truename ) + (dired-directory (concat "[ " dired-directory " ]")) + (t "GNU Emacs 👾"))))) + (use-package elpy :ensure t) @@ -56,13 +89,15 @@ (exec-path-from-shell-copy-env "PATH") -(when (require 'flycheck nil t) - (setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) - (add-hook 'elpy-mode-hook 'flycheck-mode)) +;; black or 'standard' (flake8 ?) code formatter: +;; (add-hook 'elpy-mode-hook (lambda () +;; (add-hook 'before-save-hook +;; 'elpy-format-code nil t))) (add-hook 'elpy-mode-hook (lambda () (add-hook 'before-save-hook - 'elpy-format-code nil t))) + 'elpy-black-fix-code nil t))) + (add-hook 'python-mode-hook (lambda () (setq gud-pdb-command-name "python3 -m pdb"))) @@ -77,13 +112,6 @@ (yas-reload-all) (add-hook 'prog-mode-hook 'yas-minor-mode)) -;; setup dired -(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)))))) ;; my keybindings @@ -91,6 +119,10 @@ (interactive) (revert-buffer :ignore-auto :noconfirm)) +(defun kill-buffer-no-confirm () + (interactive) + (kill-buffer nil)) + (defun list-buffers-please () (interactive) (list-buffers) @@ -108,15 +140,22 @@ (global-unset-key (kbd "C-f")) (global-unset-key (kbd "C-b")) (global-unset-key (kbd "C-n")) +(global-unset-key (kbd "C-l")) (global-unset-key (kbd "C-p")) (global-unset-key (kbd "M-v")) -(global-set-key (kbd "") 'list-buffers-please) +(global-set-key (kbd "") 'find-file) (global-set-key (kbd "") 'revert-buffer-no-confirm) +(global-set-key (kbd "") 'kill-buffer-no-confirm) +(global-set-key (kbd "C-b") 'list-buffers-please) +(global-set-key (kbd "C-n") 'dired-create-empty-file) (add-hook 'elpy-mode-hook (lambda () (local-set-key [f2] 'elpy-refactor-rename))) +(add-hook 'elpy-mode-hook + (lambda () (local-set-key [f7] 'elpy-goto-definition))) + (add-hook 'typescript-mode-hook (lambda () (local-set-key [f2] 'tide-rename-symbol))) @@ -129,15 +168,21 @@ (add-hook 'mhtml-mode-hook (lambda () (local-set-key (kbd "C-f") 'prettier-js))) -(add-hook 'typescript-mode-hook +(add-hook 'typescript-ts-mode-hook (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))) +(add-hook 'lsp-mode-hook + (lambda () (local-set-key (kbd "C-f") 'lsp-format-buffer))) + ;; (add-hook 'prog-mode-hook ;; (lambda () (local-set-key (kbd "C-;") 'comment-or-uncomment-region))) +;; (define-key map (kbd "M-.") 'elpy-goto-assignment +;; (define-key map (kbd "C-x 4 M-.") 'elpy-goto-assignment-other-window) + ;; stuff for folding html (defun mhtml-forward (arg) (interactive "P") @@ -158,7 +203,7 @@ (require 'display-line-numbers) (defcustom display-line-numbers-exempt-modes - '(gud-mode inferior-python-mode dired-mode vterm-mode eshell-mode shell-mode term-mode ansi-tern-mode) + '(gud-mode inferior-python-mode dired-mode vterm-mode eshell-mode shell-mode term-mode ansi-tern-mode treemacs-mode) "Major modes on which to disable line numbers" :group 'display-line-numbers :type 'list @@ -180,41 +225,6 @@ Exempt major modes are defined in `display-line-numbers-exempt-modes'." (load-theme 'modus-operandi-tinted t) -;;(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/") - -;;(use-package doom-themes -;; :ensure t -;; :config -;; (load-theme 'doom-monokai-pro t)) - -;; (use-package zenburn-theme -;; :ensure t) - -;; (load-theme 'zenburn t) - -;; (use-package birds-of-paradise-plus-theme -;; :ensure t) - -;; (load-theme 'birds-of-paradise-plus t) - -;; (use-package spacemacs-theme -;; :defer t -;; :init (load-theme 'spacemacs-light t)) - -;; (use-package poet-theme -;; :ensure t) -;; (load-theme 'poet t) -;; ;;(set-face-attribute 'default nil :family "DejaVu Sans Mono" :height 130) -;; (set-face-attribute 'fixed-pitch nil :family "DejaVu Sans Mono") -;; (set-face-attribute 'variable-pitch nil :family "IBM Plex Serif") -;; (add-to-list -;; 'default-frame-alist'(ns-transparent-titlebar . t)) -;; (add-to-list -;; 'default-frame-alist'(ns-appearance . light)) -;; (add-hook 'text-mode-hook -;; (lambda () -;; (variable-pitch-mode 1))) - (use-package magit :ensure t) @@ -222,14 +232,15 @@ Exempt major modes are defined in `display-line-numbers-exempt-modes'." :ensure t :hook (after-init . doom-modeline-mode)) -(use-package all-the-icons - :if (display-graphic-p)) +;; M-x nerd-icons-install-fonts +(use-package nerd-icons + :ensure t) ;; prettier setup goes here (use-package prettier-js :ensure t) -;;________________________________________________________ +;; __________________________________________________ (use-package orderless :ensure t @@ -240,43 +251,60 @@ Exempt major modes are defined in `display-line-numbers-exempt-modes'." (use-package json-mode :ensure t) ;; __________________________________________________ - - -;; typescript setup starts here (TO REVIEW!) +;; typescript setup starts here (defun setup-tide-mode () (interactive) (tide-setup) (flycheck-mode +1) (setq flycheck-check-syntax-automatically '(save mode-enabled)) (eldoc-mode +1) - (tide-hl-identifier-mode +1) - ;; company is an optional dependency. You have to - ;; install it separately via package-install - ;; `M-x package-install [ret] company` - ;; (company-mode +1) - ) - -;; aligns annotation to the right hand side -;; (setq company-tooltip-align-annotations t) - -;; formats the buffer before saving -;; (add-hook 'before-save-hook 'tide-format-before-save) - -(add-hook 'typescript-mode-hook #'setup-tide-mode) + (tide-hl-identifier-mode +1)) (use-package tide :ensure t - :after (typescript-mode company flycheck) - :hook ((typescript-mode . tide-setup) - (typescript-mode . tide-hl-identifier-mode) + :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))) -(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. - '(package-selected-packages - '(tide which-key use-package pyenv-mode flycheck exec-path-from-shell elpy doom-themes doom-modeline all-the-icons))) + +(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode)) +(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode)) + +;;---------------------------------------- +;; dotnet starts here +(use-package lsp-mode + :commands (lsp lsp-deferred)) + +(use-package dap-mode + :ensure t + ;;:custom (lsp-enable-dap-auto-configure nil) + :commands dap-debug) + +;;(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)) + +(defun setup-dotnet () + (interactive) + (exec-path-from-shell-copy-env "DOTNET_ROOT") + (lsp-deferred)) + +(add-hook 'csharp-mode-hook + (lambda () (setup-dotnet))) + +(add-hook 'lsp-mode-hook + (lambda () (setup-lsp-keys))) + +(require 'dap-netcore) + +(use-package dockerfile-mode + :ensure t) + + (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/snippets/python-mode/file-read b/snippets/python-mode/file-read new file mode 100644 index 0000000..f0d1e54 --- /dev/null +++ b/snippets/python-mode/file-read @@ -0,0 +1,9 @@ +# -*- mode: python -*- +# name: file-read +# key: fr +# -- +with open($0, 'r') as file: + try: + data = json.load(file) + except (json.JSONDecodeError): + data = {} \ No newline at end of file diff --git a/snippets/python-mode/file-write b/snippets/python-mode/file-write new file mode 100644 index 0000000..7136b86 --- /dev/null +++ b/snippets/python-mode/file-write @@ -0,0 +1,7 @@ +# -*- mode: python -*- +# name: file-write +# key: fw +# -- +f_name = ${1:name} +with open(f'~/Documents/$0/{f_name}.txt', 'w') as file: + file.write(${2:content}) \ No newline at end of file diff --git a/snippets/python-mode/json-dump b/snippets/python-mode/json-dump new file mode 100644 index 0000000..b333477 --- /dev/null +++ b/snippets/python-mode/json-dump @@ -0,0 +1,10 @@ +# -*- mode: python -*- +# name: json-dump +# key: jd +# -- +import uuid +import json + +f_name = str(uuid.uuid4()) +with open(f'~/Documents/$0/{f_name}.json', 'w') as file: + file.write(json.dumps(${1:content}, indent=2)) \ No newline at end of file diff --git a/snippets/python-mode/print b/snippets/python-mode/print index 8bfab8e..1a59718 100644 --- a/snippets/python-mode/print +++ b/snippets/python-mode/print @@ -2,4 +2,4 @@ # name: print # key: p # -- -print(f'$0') +print(f'$0') \ No newline at end of file diff --git a/snippets/python-mode/print-version b/snippets/python-mode/print-version new file mode 100644 index 0000000..0665688 --- /dev/null +++ b/snippets/python-mode/print-version @@ -0,0 +1,7 @@ +# -*- mode: python -*- +# name: print-version +# key: pi +# -- +import sys + +print(sys.version) diff --git a/snippets/python-mode/script b/snippets/python-mode/script new file mode 100644 index 0000000..10259b7 --- /dev/null +++ b/snippets/python-mode/script @@ -0,0 +1,5 @@ +# -*- mode: python -*- +# name: script +# key: s +# -- +#!/usr/bin/env python3 \ No newline at end of file