From d593b82436e55471b19ee19186aed60cc0a10a81 Mon Sep 17 00:00:00 2001 From: Pyxels <39232833+Pyxels@users.noreply.github.com> Date: Fri, 8 Nov 2024 11:17:06 +0100 Subject: [PATCH] plugins/nonels/prettierd: add disableTsServerFormatting option to prettierd Add a new option (and warning) to disable the typescript-language-server (ts_ls) formatting the same as for prettier. --- plugins/by-name/none-ls/prettierd.nix | 45 +++++++++++++++++++++++++++ plugins/by-name/none-ls/sources.nix | 5 ++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 plugins/by-name/none-ls/prettierd.nix diff --git a/plugins/by-name/none-ls/prettierd.nix b/plugins/by-name/none-ls/prettierd.nix new file mode 100644 index 00000000..3c61c4d7 --- /dev/null +++ b/plugins/by-name/none-ls/prettierd.nix @@ -0,0 +1,45 @@ +{ + lib, + config, + options, + ... +}: +let + cfg = config.plugins.none-ls.sources.formatting.prettierd; + ts-ls-cfg = config.plugins.lsp.servers.ts_ls; + opt = options.plugins.none-ls.sources.formatting.prettierd; + defaultPrio = (lib.mkOptionDefault null).priority; +in +{ + options.plugins.none-ls.sources.formatting.prettierd = { + disableTsServerFormatter = lib.mkOption { + type = lib.types.bool; + description = '' + Disables the formatting capability of the `ts_ls` language server if it is enabled. + ''; + default = false; + example = true; + }; + }; + + config = lib.mkIf cfg.enable { + warnings = + lib.optional (opt.disableTsServerFormatter.highestPrio == defaultPrio && ts-ls-cfg.enable) + '' + You have enabled the `prettierd` formatter in none-ls. + You have also enabled the `ts_ls` language server which also brings a formatting feature. + + - To disable the formatter built-in the `ts_ls` language server, set + `plugins.none-ls.sources.formatting.prettierd.disableTsServerFormatter` to `true`. + - Else, to silence this warning, explicitly set the option to `false`. + ''; + + plugins.lsp.servers.ts_ls = + lib.mkIf (cfg.enable && ts-ls-cfg.enable && cfg.disableTsServerFormatter) + { + onAttach.function = '' + client.server_capabilities.documentFormattingProvider = false + ''; + }; + }; +} diff --git a/plugins/by-name/none-ls/sources.nix b/plugins/by-name/none-ls/sources.nix index 176dd92c..bc373a3b 100644 --- a/plugins/by-name/none-ls/sources.nix +++ b/plugins/by-name/none-ls/sources.nix @@ -5,7 +5,10 @@ let in { imports = - [ ./prettier.nix ] + [ + ./prettier.nix + ./prettierd.nix + ] ++ (lib.flatten ( lib.mapAttrsToList (category: (lib.map (mkSourcePlugin category))) noneLsBuiltins ));