(setq gc-cons-threshold (* 100 1000 1000)) (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)))) (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. '(custom-safe-themes '("b99e334a4019a2caa71e1d6445fc346c6f074a05fcbb989800ecbe54474ae1b0" default)) '(initial-frame-alist '((fullscreen . maximized))) '(package-selected-packages '(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))) (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (use-package which-key :ensure t :config (which-key-mode)) (use-package vertico :ensure t :config (add-hook 'rfn-eshadow-update-overlay-hook 'vertico-directory-tidy)) (use-package marginalia :ensure t) (require 'treesit) (use-package docker-compose-mode :ensure t) (use-package zig-mode :ensure t) (use-package dockerfile-mode :ensure t :defer t :mode ("Dockerfile\\'" "\\.dockerfile\\'") :commands dockerfile-mode) (use-package flycheck :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) ;;"M+1Code Nerd Font" ;;"Lekton Nerd Font" (set-face-attribute 'default nil :font "Lekton" :height 120) ;;(set-fontset-font t nil (font-spec :size 20 :name "VictorMono Nerd Font Mono")) ;;(set-face-attribute 'default nil :font "VictorMono Nerd Font Mono" :height 110) ;;(setq x-antialiasing-factor nil) (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) (setq native-comp-async-report-warnings-errors 'silent) (delete-selection-mode 1) (show-paren-mode 1) (add-hook 'before-save-hook 'whitespace-cleanup) (add-hook 'prog-mode-hook 'flycheck-mode) (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 :defer t :commands (elpy-enable) :init (add-hook 'python-mode-hook 'elpy-enable) :config (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))) ;; (use-package exec-path-from-shell ;; :ensure t) ;; (exec-path-from-shell-copy-env "PATH") ;; 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-black-fix-code nil t))) (add-hook 'python-mode-hook (lambda () (setq gud-pdb-command-name "python3 -m pdb"))) (use-package yasnippet :config (setq yas-snippet-dirs '("~/.emacs.d/snippets")) (yas-reload-all) (add-hook 'prog-mode-hook 'yas-minor-mode)) ;; my keybindings (defun revert-buffer-no-confirm () (interactive) (revert-buffer :ignore-auto :noconfirm)) (defun kill-buffer-no-confirm () (interactive) (kill-buffer nil)) (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)))) (global-unset-key (kbd "C-d")) (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")) (global-unset-key (kbd "C-l")) (global-unset-key (kbd "C-p")) (global-unset-key (kbd "M-v")) (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) (global-set-key (kbd "C-d") 'my/duplicate-line-or-region) (global-set-key (kbd "C-x d") 'my/dired-open-current-file-directory) (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))) (add-hook 'typescript-mode-hook (lambda () (local-set-key [f7] 'tide-references))) (add-hook 'hs-minor-mode-hook (lambda () (local-set-key (kbd "C-") 'hs-toggle-hiding))) (add-hook 'mhtml-mode-hook (lambda () (local-set-key (kbd "C-f") 'prettier-js))) (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 (add-to-list 'hs-special-modes-alist '(mhtml-mode "{\\|<[^/>]+?" "}\\|]*[^/]>" "