diff --git a/init.el b/init.el index 693e454..eb7c3c9 100644 --- a/init.el +++ b/init.el @@ -3,6 +3,24 @@ ;; restore after startup (setq gc-cons-threshold 800000))) +(defun my/copy-buffer-file-path () + "Copy the current buffer's file path to kill ring. +For regular files, copies the full path. +For Dired buffers, copies the directory path. +Shows a message if no path is available." + (interactive) + (let ((path (cond + (buffer-file-truename + buffer-file-truename) + (dired-directory + dired-directory) + (t nil)))) + (if path + (progn + (kill-new path) + (message "Copied: %s" path)) + (message "No file path available")))) + (defun my/dired-open-current-file-directory () "Open the current file's directory in Dired, if possible." (interactive) @@ -33,6 +51,12 @@ ('nil (sgml-skip-tag-forward 1)) (submode (forward-sexp)))) +(defun my/create-new-file () + "Create a new file with prompt for filename using :>." + (interactive) + (let ((filename (read-string "Filename: "))) + (shell-command (concat ":> " filename)) + (find-file filename))) (custom-set-variables ;; custom-set-variables was added by Custom. @@ -43,7 +67,7 @@ '("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))) + '(vue-mode verb realgud 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) @@ -104,7 +128,7 @@ ;; EnvyCodeR Nerd Font ;; Binchotan_Sharp ;; Ubuntu Mono -(set-face-attribute 'default nil :font "Binchotan_Sharp" :height 130) +(set-face-attribute 'default nil :font "Binchotan_Sharp" :height 140) ;;(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) @@ -149,18 +173,13 @@ :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") +;; (setq elpy-rpc-virtualenv-path 'current) -;; 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))) +(use-package exec-path-from-shell + :ensure t + :config + (when (memq window-system '(mac ns x)) + (exec-path-from-shell-initialize))) (add-hook 'python-mode-hook (lambda () (setq gud-pdb-command-name "python3 -m pdb"))) @@ -171,6 +190,36 @@ (setq yas-snippet-dirs '("~/.emacs.d/snippets")) (yas-reload-all)) + +(use-package meson-mode + :ensure t) + +(use-package vala-mode + :ensure t + :defer t + :mode (("\\.vala\\'" . vala-mode) + ("\\.vapi\\'" . vala-mode)) + :config + (add-to-list 'file-coding-system-alist '("\\.vala\\'" . utf-8)) + (add-to-list 'file-coding-system-alist '("\\.vapi\\'" . utf-8))) + +(use-package lsp-dart + :ensure t + :defer t + :after lsp-mode) + +(use-package dart-mode + :ensure t + :defer t) + +(use-package verb + :ensure t + :defer t) + +(use-package org + :mode ("\\.org\\'" . org-mode) + :config (define-key org-mode-map (kbd "C-c C-r") verb-command-map)) + (use-package org-superstar :ensure t :defer t @@ -221,9 +270,10 @@ (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-n") 'my/create-new-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) +(global-set-key (kbd "C-p") 'my/copy-buffer-file-path) (add-hook 'elpy-mode-hook (lambda () (local-set-key [f2] 'elpy-refactor-rename))) @@ -252,6 +302,9 @@ (add-hook 'lsp-mode-hook (lambda () (local-set-key (kbd "C-f") 'lsp-format-buffer))) +(add-hook 'elpy-mode-hook + (lambda () (local-set-key (kbd "C-f") 'elpy-black-fix-code))) ;elpy-format-code + ;; (add-hook 'prog-mode-hook ;; (lambda () (local-set-key (kbd "C-;") 'comment-or-uncomment-region))) @@ -270,26 +323,12 @@ (add-hook 'prog-mode-hook 'hs-minor-mode) -(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 treemacs-mode) - "Major modes on which to disable line numbers." - :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))) - -;; (global-display-line-numbers-mode) - ;; theming starts here: +(use-package doom-modeline + :ensure t + :hook (after-init . doom-modeline-mode)) + ;; (use-package doom-themes ;; :ensure t ;; :config @@ -307,7 +346,7 @@ Exempt major modes are defined in `display-line-numbers-exempt-modes'." (use-package ef-themes :ensure t) -(setq ef-themes-to-toggle '(ef-day ef-autumn)) +(setq ef-themes-to-toggle '(ef-elea-light ef-elea-dark)) (setq ef-themes-headings ; read the manual's entry or the doc string '((0 . (variable-pitch light 1.9)) @@ -345,20 +384,13 @@ ef-themes-variable-pitch-ui t) :config (setq magit-auto-revert-mode nil)) -(use-package doom-modeline - :ensure t - :hook (after-init . doom-modeline-mode)) - ;; 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 :custom @@ -371,6 +403,20 @@ ef-themes-variable-pitch-ui t) :defer t :commands json-mode) +(use-package lsp-mode + :ensure t) + +(use-package dap-mode + :ensure t + ;;:custom (lsp-enable-dap-auto-configure nil) + :commands dap-debug) + +(use-package vue-mode + :ensure t + :defer t + :mode "\\.vue\\'" + :hook (vue-mode . lsp-deferred)) + ;; __________________________________________________ ;; typescript setup starts here (defun setup-tide-mode () @@ -387,20 +433,13 @@ ef-themes-variable-pitch-ui t) :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))) - -(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode)) -(add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode)) + (before-save . tide-format-before-save)) + :config + (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) (use-package dap-netcore :after dap-mode