From fe0fe21a1233172e5d51e3432f4560a7f8ba56f3 Mon Sep 17 00:00:00 2001 From: derped Date: Sun, 7 Nov 2021 16:05:02 +0100 Subject: [PATCH] emacs: add javascript support --- pkgsets/emacs/company.nix | 6 +++- pkgsets/emacs/nix-mode.nix | 1 + pkgsets/emacs/web-mode.nix | 62 +++++++++++++++++++++++++++----------- 3 files changed, 50 insertions(+), 19 deletions(-) diff --git a/pkgsets/emacs/company.nix b/pkgsets/emacs/company.nix index 911782c..1aa644d 100644 --- a/pkgsets/emacs/company.nix +++ b/pkgsets/emacs/company.nix @@ -99,10 +99,14 @@ in mkIf (elem "emacs::company" config.machine.pkgs) { programs.emacs.init.usePackage = { company = { enable = true; + package = epkgs: [ epkgs.company epkgs.company-web ]; diminish = [ "company-mode" ]; hook = [ "(after-init . global-company-mode)" ] ++ optional (elem "emacs::rust" config.machine.pkgs) - ''(rust-mode . (lambda () (setq company-backends '((company-capf :with company-yasnippet)))))''; + ''(rust-mode . (lambda () (setq company-backends '((company-capf :with company-yasnippet)))))'' + ++ optional (elem "emacs::web-mode" config.machine.pkgs) + ''(web-mode . (lambda () (set (make-local-variable 'company-backends) '(company-web-html company-css)) + (company-mode t)))''; bind = { "\t" = "'company-complete-common"; }; init = ''(require 'ffap)''; config = '' diff --git a/pkgsets/emacs/nix-mode.nix b/pkgsets/emacs/nix-mode.nix index 973f9ef..0b38cd5 100644 --- a/pkgsets/emacs/nix-mode.nix +++ b/pkgsets/emacs/nix-mode.nix @@ -6,5 +6,6 @@ mkIf (elem "emacs::nix-mode" config.machine.pkgs) { programs.emacs.init.usePackage.nix-mode = { enable = true; mode = [ ''"\\.nix\\'"'' ]; + config = ''(setq nix-nixfmt-bin "nixfmt -w 150")''; }; } diff --git a/pkgsets/emacs/web-mode.nix b/pkgsets/emacs/web-mode.nix index 7f6d28e..027c7b8 100644 --- a/pkgsets/emacs/web-mode.nix +++ b/pkgsets/emacs/web-mode.nix @@ -3,23 +3,49 @@ with lib; mkIf (elem "emacs::web-mode" config.machine.pkgs) { - programs.emacs.init.usePackage.web-mode = { - enable = true; - mode = [ - ''("\\.html?\\'" . web-mode)'' - ''("\\.phtml\\'" . web-mode)'' - ''("\\.tpl\\.php\\'" . web-mode)'' - ''("\\.[agj]sp\\'" . web-mode)'' - ''("\\.as[cp]x\\'" . web-mode)'' - ''("\\.erb\\'" . web-mode)'' - ''("\\.mustache\\'" . web-mode)'' - ''("\\.djhtml\\'" . web-mode)'' - ]; - config = '' - (setq web-mode-engines-alist - '(("php" . "\\.phtml\\'") - ("blade" . "\\.blade\\.")) - ) - ''; + programs.emacs.init.usePackage = { + web-mode = { + enable = true; + # bind = {}; + mode = [ + ''("\\.html\\'" . web-mode)'' + ''("\\.css\\'" . web-mode)'' + ''("\\.html?\\'" . web-mode)'' + ''("\\.phtml\\'" . web-mode)'' + ''("\\.tpl\\.php\\'" . web-mode)'' + ''("\\.[agj]sp\\'" . web-mode)'' + ''("\\.as[cp]x\\'" . web-mode)'' + ''("\\.erb\\'" . web-mode)'' + ''("\\.mustache\\'" . web-mode)'' + ''("\\.djhtml\\'" . web-mode)'' + ]; + config = '' + (setq web-mode-engines-alist + '(("php" . "\\.phtml\\'") + ("blade" . "\\.blade\\.")) + ) + ''; + }; + js2-mode = { + enable = true; + }; + tide = { + enable = true; + after = [ "typescript-mode" "company" "flycheck" ]; + hook = [ + "(typescript-mode . tide-setup)" + "(typescript-mode . tide-hl-identifier-mode)" + "(before-save . tide-format-before-save)" + ]; + config = '' + (setq company-tooltip-align-annotations t) + ''; + }; + impatient-mode = { + enable = true; + }; + simple-httpd = { + enable = true; + }; }; }