From 991d10dc557735a9015298e794e4f1dfb4061e5d Mon Sep 17 00:00:00 2001 From: Marien Zwart Date: Sat, 29 Jun 2024 20:47:38 +1000 Subject: [PATCH] Test with all flags except eglot and flymake Replaces most of the tests for specific combinations of flags. Intent is to also use this with cachix. --- build-helpers/doomdirs.nix | 16 +++++++++++++++- checks.nix | 29 +++++++++-------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/build-helpers/doomdirs.nix b/build-helpers/doomdirs.nix index aeec21c..f72c47d 100644 --- a/build-helpers/doomdirs.nix +++ b/build-helpers/doomdirs.nix @@ -16,8 +16,10 @@ callPackage, doomSource, emacs, + lib, + writeTextDir, }: -{ +let allModules = callPackage ./doomscript.nix { name = "doom-full-init"; inherit doomSource emacs; @@ -31,4 +33,16 @@ script = ./full-init; scriptArgs = "--flags -o $out"; }; + + # Hack, but given how this is used it's good enough even if the replacement misfires. + # + # Goal is to disable eglot and flymake, because doing so enables lsp-mode and flycheck + # respectively. We also want to keep most other flags enabled. But even if Doom introduces a flag + # starting with "eglot" or "flymake", disabling it and enabling a nonsensical flag is not really + # an issue. + allModulesMostFlags = writeTextDir "init.el" ( + lib.replaceStrings [ " +eglot" " +flymake" ] [ "" "" ] ( + lib.readFile "${allModulesAndFlags}/init.el")); +in { + inherit allModules allModulesAndFlags allModulesMostFlags; } diff --git a/checks.nix b/checks.nix index 9fbb589..efd45af 100644 --- a/checks.nix +++ b/checks.nix @@ -73,6 +73,7 @@ in { }; allModules = mkDoom { doomDir = doomDirs.allModules; }; allModulesAndFlags = mkDoom { doomDir = doomDirs.allModulesAndFlags; }; + allModulesMostFlags = mkDoom { doomDir = doomDirs.allModulesMostFlags; }; example = mkDoom { doomDir = ./doomdir; }; example-without-loader = mkDoom { doomDir = ./doomdir; @@ -89,33 +90,21 @@ in { # Various tests of module combinations. unpinned-org = doomTest "external-org" { app.rss = [ "+org" ]; } { }; # Dependencies that require a module flag enabled and a different module or flag disabled. - # Several are "+lsp and lsp without eglot" or "some flag and syntax without flymake". - # TODO: Might be worth doing a full init.el build with just those two flags disabled. - flycheck-guile = doomTest "nix-profile" { lang.scheme = [ "+guile" ]; checkers.syntax = true; } { }; - lsp-treemacs = doomTest "nix-profile" { ui.treemacs = [ "+lsp" ]; tools.lsp = true; } { }; + # flycheck-eglot needs flymake disabled. flycheck-eglot = doomTest "nix-profile" { tools.lsp = [ "+eglot" ]; checkers.syntax = true; } { }; - lsp-sourcekit-flycheck-swift = doomTest "nix-profile" { - lang.swift = [ "+lsp" ]; - tools.lsp = true; - checkers.syntax = true; - } { }; - lsp-metals = doomTest "nix-profile" { lang.scala = [ "+lsp" ]; tools.lsp = true; } { }; - lsp-pyright = doomTest "nix-profile" { lang.python = [ "+lsp" "+pyright" ]; tools.lsp = true; } { }; + # lsp-python-ms needs +pyright disabled. lsp-python-ms = doomTest "nix-profile" { lang.python = [ "+lsp" ]; tools.lsp = true; } { }; + # roam2 needs +roam disabled. org-roam2 = doomTest "nix-profile" { lang.org = [ "+roam2" ]; } { }; - flycheck-moonscript = doomTest "nix-profile" { lang.lua = [ "+moonscript" ]; checkers.syntax = true; } { }; - lsp-julia = doomTest "nix-profile" { lang.julia = [ "+lsp" ]; tools.lsp = true; } { }; - lsp-java = doomTest "nix-profile" { lang.java = [ "+lsp" ]; tools.lsp = true; } { }; - lsp-haskell = doomTest "nix-profile" { lang.haskell = [ "+lsp" ]; tools.lsp = true; } { }; - flycheck-stan = doomTest "nix-profile" { lang.ess = [ "+stan" ]; checkers.syntax = true; } { }; - lsp-dart = doomTest "nix-profile" { lang.dart = [ "+lsp" ]; tools.lsp = true; } { }; - ccls = doomTest "nix-profile" { lang.cc = [ "+lsp" ]; tools.lsp = true; } { }; - flycheck-irony = doomTest "nix-profile" { lang.cc = [ "+lsp" ]; checkers.syntax = true; } { }; + # nerd-icons-dired needs +dirvish disabled. nerd-icons-dired = doomTest "nix-profile" { emacs.dired = [ "+icons" ]; } { }; + # multiple-cursors needs :editor evil disabled. multiple-cursors = doomTest "nix-profile" { editor.multiple-cursors = true; } { }; + # flx needs +prescient disabled. flx = doomTest "nix-profile" { completion.ivy = [ "+fuzzy" ]; } { }; + # corfu pulls in unpinned orderless if vertico is disabled. corfu-orderless = doomTest "nix-profile" { completion.corfu = [ "+orderless" ]; } { }; - flycheck-posframe = doomTest "nix-profile" { checkers.syntax = [ "+childframe" ]; } { }; + # flyspell can pull in one of three completion modules. flyspell-correct-ivy = doomTest "nix-profile" { checkers.spell = [ "+flyspell" ]; completion.ivy = true; } { }; flyspell-correct-helm = doomTest "nix-profile" { checkers.spell = [ "+flyspell" ]; completion.helm = true; } { }; flyspell-correct-popup = doomTest "nix-profile" { checkers.spell = [ "+flyspell" ]; } { };