From 7233ec4d48de02488ee3783a84c759dcc9981ff8 Mon Sep 17 00:00:00 2001 From: aciceri Date: Sun, 3 Oct 2021 23:54:04 +0200 Subject: [PATCH] Trying to configure lsp-mode on Emacs --- users/ccr/default.nix | 1 + users/profiles/emacs/default.nix | 8 ++ .../emacs/emacs.d/config/config-helm.el | 38 +++++++ .../emacs.d/config/{lsp.el => config-lsp.el} | 8 +- .../emacs/emacs.d/config/config-projectile.el | 9 ++ .../emacs/emacs.d/config/config-treemacs.el | 103 ++++++++++++++++++ users/profiles/emacs/emacs.d/init.el | 9 +- users/profiles/gtk/default.nix | 27 ++++- 8 files changed, 196 insertions(+), 7 deletions(-) create mode 100644 users/profiles/emacs/emacs.d/config/config-helm.el rename users/profiles/emacs/emacs.d/config/{lsp.el => config-lsp.el} (83%) create mode 100644 users/profiles/emacs/emacs.d/config/config-projectile.el create mode 100644 users/profiles/emacs/emacs.d/config/config-treemacs.el diff --git a/users/ccr/default.nix b/users/ccr/default.nix index 6bd022d..2dc49f2 100644 --- a/users/ccr/default.nix +++ b/users/ccr/default.nix @@ -5,6 +5,7 @@ home.packages = with pkgs; [ nixpkgs-fmt rnix-lsp + ack ranger calibre element-desktop diff --git a/users/profiles/emacs/default.nix b/users/profiles/emacs/default.nix index 94e2200..56defaf 100644 --- a/users/profiles/emacs/default.nix +++ b/users/profiles/emacs/default.nix @@ -22,14 +22,22 @@ use-package evil evil-collection + helm projectile magit fira-code-mode + format-all nix-mode lispy lsp-mode dap-mode which-key + treemacs + treemacs-evil + treemacs-projectile + treemacs-icons-dired + treemacs-magit + treemacs-persp ] ) ++ ( with epkgs.elpaPackages; [ diff --git a/users/profiles/emacs/emacs.d/config/config-helm.el b/users/profiles/emacs/emacs.d/config/config-helm.el new file mode 100644 index 0000000..f020422 --- /dev/null +++ b/users/profiles/emacs/emacs.d/config/config-helm.el @@ -0,0 +1,38 @@ +(use-package helm + :init + (progn + (require 'helm-config) + (setq helm-autoresize-max-height 0) + (setq helm-autoresize-min-height 20) + (global-set-key (kbd "C-c h") 'helm-command-prefix) + (global-unset-key (kbd "C-x c")) + + (when (executable-find "ack") + (setq helm-grep-default-command "ack -Hn --no-group --no-color %e %p %f" + helm-grep-default-recurse-command "ack -H --no-group --no-color %e %p %f")) + + (setq helm-semantic-fuzzy-match t + helm-imenu-fuzzy-match t + helm-M-x-fuzzy-match t ;; optional fuzzy matching for helm-M-x + helm-buffers-fuzzy-matching t + helm-recentf-fuzzy-match t + helm-split-window-in-side-p t + helm-buffer-max-length nil) + + (helm-mode 1) + (helm-autoresize-mode 1)) + + :bind + (("C-c h" . helm-command-prefix) + :map helm-command-map + ("b" . helm-buffers-list) + ("f" . helm-find-files) + ("m" . helm-mini) + ("o" . helm-imenu)) + :bind + (("M-x" . helm-M-x) + ("M-y" . helm-show-kill-ring) + ("C-x b" . helm-mini) + ("C-x C-f" . helm-find-files))) + +(provide 'config-helm) diff --git a/users/profiles/emacs/emacs.d/config/lsp.el b/users/profiles/emacs/emacs.d/config/config-lsp.el similarity index 83% rename from users/profiles/emacs/emacs.d/config/lsp.el rename to users/profiles/emacs/emacs.d/config/config-lsp.el index b8826fe..5297d0a 100644 --- a/users/profiles/emacs/emacs.d/config/lsp.el +++ b/users/profiles/emacs/emacs.d/config/config-lsp.el @@ -1,3 +1,8 @@ +(defun my-lsp-format-buffer () + (if (eq major-mode 'nix-mode) + (lsp-format-buffer))) + + (use-package lsp-mode :init ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") @@ -6,6 +11,7 @@ (nix-mode . lsp) ;; if you want which-key integration (lsp-mode . lsp-enable-which-key-integration)) + (before-save . my-lsp-format-buffer) :commands lsp) ;; optionally @@ -23,4 +29,4 @@ :config (which-key-mode)) -(provide 'lsp) +(provide 'config-lsp) diff --git a/users/profiles/emacs/emacs.d/config/config-projectile.el b/users/profiles/emacs/emacs.d/config/config-projectile.el new file mode 100644 index 0000000..dcc7cfd --- /dev/null +++ b/users/profiles/emacs/emacs.d/config/config-projectile.el @@ -0,0 +1,9 @@ + +(use-package projectile + :init + (projectile-mode +1) + :bind (:map projectile-mode-map + ("s-p" . projectile-command-map) + ("C-c p" . projectile-command-map))) + +(provide 'config-projectile) diff --git a/users/profiles/emacs/emacs.d/config/config-treemacs.el b/users/profiles/emacs/emacs.d/config/config-treemacs.el new file mode 100644 index 0000000..19f0bf1 --- /dev/null +++ b/users/profiles/emacs/emacs.d/config/config-treemacs.el @@ -0,0 +1,103 @@ +(use-package treemacs + :ensure t + :defer t + :init + (with-eval-after-load 'winum + (define-key winum-keymap (kbd "M-0") #'treemacs-select-window)) + :config + (progn + (setq treemacs-collapse-dirs (if treemacs-python-executable 3 0) + treemacs-deferred-git-apply-delay 0.5 + treemacs-directory-name-transformer #'identity + treemacs-display-in-side-window t + treemacs-eldoc-display t + treemacs-file-event-delay 5000 + treemacs-file-extension-regex treemacs-last-period-regex-value + treemacs-file-follow-delay 0.2 + treemacs-file-name-transformer #'identity + treemacs-follow-after-init t + treemacs-expand-after-init t + treemacs-git-command-pipe "" + treemacs-goto-tag-strategy 'refetch-index + treemacs-indentation 2 + treemacs-indentation-string " " + treemacs-is-never-other-window nil + treemacs-max-git-entries 5000 + treemacs-missing-project-action 'ask + treemacs-move-forward-on-expand nil + treemacs-no-png-images nil + treemacs-no-delete-other-windows t + treemacs-project-follow-cleanup nil + treemacs-persist-file (expand-file-name ".cache/treemacs-persist" user-emacs-directory) + treemacs-position 'left + treemacs-read-string-input 'from-child-frame + treemacs-recenter-distance 0.1 + treemacs-recenter-after-file-follow nil + treemacs-recenter-after-tag-follow nil + treemacs-recenter-after-project-jump 'always + treemacs-recenter-after-project-expand 'on-distance + treemacs-litter-directories '("/node_modules" "/.venv" "/.cask") + treemacs-show-cursor nil + treemacs-show-hidden-files t + treemacs-silent-filewatch nil + treemacs-silent-refresh nil + treemacs-sorting 'alphabetic-asc + treemacs-select-when-already-in-treemacs 'move-back + treemacs-space-between-root-nodes t + treemacs-tag-follow-cleanup t + treemacs-tag-follow-delay 1.5 + treemacs-text-scale nil + treemacs-user-mode-line-format nil + treemacs-user-header-line-format nil + treemacs-width 35 + treemacs-width-is-initially-locked t + treemacs-workspace-switch-cleanup nil) + + ;; The default width and height of the icons is 22 pixels. If you are + ;; using a Hi-DPI display, uncomment this to double the icon size. + ;;(treemacs-resize-icons 44) + + (treemacs-follow-mode t) + (treemacs-filewatch-mode t) + (treemacs-fringe-indicator-mode 'always) + + (pcase (cons (not (null (executable-find "git"))) + (not (null treemacs-python-executable))) + (`(t . t) + (treemacs-git-mode 'deferred)) + (`(t . _) + (treemacs-git-mode 'simple))) + + (treemacs-hide-gitignored-files-mode nil)) + :bind + (:map global-map + ("M-0" . treemacs-select-window) + ("C-x t 1" . treemacs-delete-other-windows) + ("C-x t t" . treemacs) + ("C-x t B" . treemacs-bookmark) + ("C-x t C-t" . treemacs-find-file) + ("C-x t M-t" . treemacs-find-tag))) + +(use-package treemacs-evil + :after (treemacs evil) + :ensure t) + +(use-package treemacs-projectile + :after (treemacs projectile) + :ensure t) + +(use-package treemacs-icons-dired + :after (treemacs dired) + :ensure t + :config (treemacs-icons-dired-mode)) + +(use-package treemacs-magit + :after (treemacs magit) + :ensure t) + +(use-package treemacs-persp ;;treemacs-perspective if you use perspective.el vs. persp-mode + :after (treemacs persp-mode) ;;or perspective vs. persp-mode + :ensure t + :config (treemacs-set-scope-type 'Perspectives)) + +(provide 'config-treemacs) diff --git a/users/profiles/emacs/emacs.d/init.el b/users/profiles/emacs/emacs.d/init.el index 828d604..25c8f8f 100644 --- a/users/profiles/emacs/emacs.d/init.el +++ b/users/profiles/emacs/emacs.d/init.el @@ -1,10 +1,11 @@ (add-to-list 'load-path "~/.emacs.d/config") (setq gc-cons-threshold 100000000 - read-process-output-max (* 1024 1024) -) + read-process-output-max (* 1024 1024)) (require 'aesthetics) (require 'config-evil) -(require 'lsp) -(require 'nix) \ No newline at end of file +(require 'config-helm) +(require 'config-treemacs) +(require 'config-lsp) +(require 'nix) diff --git a/users/profiles/gtk/default.nix b/users/profiles/gtk/default.nix index ac8e9be..54e45b6 100644 --- a/users/profiles/gtk/default.nix +++ b/users/profiles/gtk/default.nix @@ -3,9 +3,32 @@ gtk = { enable = true; font.name = "DejaVu Sans"; + theme = { + name = "WhiteSur-dark-alt-blue"; + package = pkgs.whitesur-gtk-theme; + }; iconTheme = { - name = "Adwaita"; - package = pkgs.gnome.adwaita-icon-theme; + #name = "Adwaita"; + #package = pkgs.gnome.adwaita-icon-theme; + name = "WhiteSur"; + package = pkgs.whitesur-icon-theme; }; }; + home.file.".icons/default" = { + recursive = true; + source = let + drv = pkgs.stdenv.mkDerivation { + name = "apple-cursor"; + src = pkgs.fetchurl { + url = "https://github.com/ful1e5/apple_cursor/releases/download/v1.2.0/macOSBigSur.tar.gz"; + sha256 = "sha256-8QNd8EEf11MIBVUbgZy6U1ZnDIWj92EGQmKLR8Edqfw="; + }; + installPhase = '' + mkdir -p $out + mv * $out/ + ''; + }; + in + "${drv}/"; + }; }