diff --git a/.scratch/scratch.org-mode b/.scratch/scratch.org-mode new file mode 100644 index 00000000..90fd3cdb --- /dev/null +++ b/.scratch/scratch.org-mode @@ -0,0 +1 @@ +# Scratchpad \ No newline at end of file diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index f7d0d9d3..3f6ca6c9 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -64,6 +64,54 @@ in { }; } ) {}) + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "lsp-treemacs-nerd-icons"; + version = "2efa09a-unstable"; + + src = builtins.fetchGit { + url = "https://github.com/Velnbur/lsp-treemacs-nerd-icons.git"; + rev = "2efa09a701b8b455bfb66529454f27c30f7462dc"; + ref = "master"; + }; + + buildInputs = with pkgs.emacsPackages; [ + lsp-treemacs + treemacs + nerd-icons + ]; + + meta = with lib; { + description = "Use nerd icons for lsp-mode and lsp-treemacs"; + homepage = "https://github.com/Velnbur/lsp-treemacs-nerd-icons"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "scratch-plus"; + version = "2efa09a-unstable"; + + src = builtins.fetchGit { + url = "https://git.sr.ht/~swflint/scratch-plus"; + rev = "b794901f968000f6e338808307385b683b79ec8b"; + ref = "main"; + }; + + meta = with lib; { + description = "Better scratch buffers"; + homepage = "https://git.sr.ht/~swflint/scratch-plus"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) ]; }) fira-code diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 30e711c7..8bc5c2ed 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -25,6 +25,9 @@ (use-package emacs :defer t :config + ;; Org mode scratch buffers + (setq initial-major-mode 'org-mode) + ;; No startup screen (setq inhibit-startup-message t) @@ -146,7 +149,7 @@ (use-package line-wrapping-and-numbers :load-path "lib/" - :after (org git-timemachine nix-mode)) + :after (org git-timemachine nix-mode treemacs)) (use-package ultra-scroll :init @@ -233,7 +236,16 @@ (evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) (evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) + (defun scratch-plus-toggle () + (interactive) + (if (projectile-project-p) + (progn + (select-window (scratch-plus-switch-project nil))) + (progn + (select-window (scratch-plus-switch nil))))) + ;; File and buffer keybinds + (evil-define-key 'motion 'global (kbd "x") 'scratch-plus-toggle) (evil-define-key 'motion 'global (kbd ".") 'find-file) (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) (evil-define-key 'motion 'global (kbd "bd") 'evil-delete-buffer) @@ -297,6 +309,9 @@ (evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) + (evil-define-key 'motion scratch-plus-minor-mode-map (kbd "q") 'quit-window) + (evil-define-key 'normal scratch-plus-minor-mode-map (kbd "q") 'quit-window) + (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-below) (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-above) (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-below) @@ -361,8 +376,11 @@ :after (lsp-mode)) (use-package lsp-ui :commands lsp-ui-mode) + (use-package lsp-treemacs :after (evil) + :custom + (lsp-treemacs-theme "nerd-icons-ext") :config (evil-define-key 'normal 'global (kbd "os") 'lsp-treemacs-symbols)) @@ -414,6 +432,11 @@ :config (treemacs-load-theme "nerd-icons")) +(use-package lsp-treemacs-nerd-icons + :after (lsp-treemacs) + :init (with-eval-after-load 'lsp-treemacs + (require 'lsp-treemacs-nerd-icons))) + (use-package nerd-icons-dired :after (nerd-icons dired) :config @@ -995,7 +1018,19 @@ Made for `org-tab-first-hook' in evil-mode." (evil-define-key 'insert 'global (kbd "M-z") 'vterm-toggle-cd-force) (evil-define-key 'motion vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) (evil-define-key 'insert vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) -) + ) + +(use-package scratch-plus + :custom + (initial-major-mode 'org-mode) + (scratch-plus-save-directory (file-truename "~/.config/emacs/scratch")) + (scratch-plus-project-subdir ".scratch") + (scratch-plus-restore-type 'demand) + (scratch-plus-force-restore t) + (scratch-plus-idle-save 2) + (scratch-plus-initial-message "Scratchpad") + :init + (add-hook 'after-init-hook #'scratch-plus-mode)) (provide 'init) ;;; init.el ends here diff --git a/modules/user/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el index 0719e702..c4597bf1 100644 --- a/modules/user/emacs/lib/line-wrapping-and-numbers.el +++ b/modules/user/emacs/lib/line-wrapping-and-numbers.el @@ -27,9 +27,16 @@ (setq-local truncate-lines t) (setq visual-line-mode nil) (display-line-numbers-mode 1)) +(defun activate-coding-lines-without-numbers () + "Truncate lines in current buffer." + (interactive) + (setq-local truncate-lines t) + (setq visual-line-mode nil) + (display-line-numbers-mode 0)) (add-hook 'org-mode-hook 'activate-writing-lines) (add-hook 'markdown-mode-hook 'activate-writing-lines) (add-hook 'prog-mode-hook 'activate-coding-lines) +(add-hook 'treemacs-mode-hook 'activate-coding-lines-without-numbers) (defun apply-proper-line-wrapping () "Apply proper line wrapping and visual line mode settings according to whether or not the current