{ config, lib, ... }: with lib; mkIf (elem "emacs::web-mode" config.machine.pkgs) { 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; mode = [ ''("\\.js\\'" . js2-mode)'' ]; }; typescript-mode = { enable = true; hook = lib.optional (elem "emacs::lsp" config.machine.pkgs) ''(typescript-mode . (lambda () (lsp)))''; mode = [ ''("\\.ts\\'" . typescript-mode)'' ]; }; # 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 = '' # (flycheck-mode +1) # (setq flycheck-check-syntax-automatically '(save mode-enabled)) # (setq company-tooltip-align-annotations t) # ''; # }; impatient-mode = { enable = true; }; simple-httpd = { enable = true; }; }; }