mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-18 22:29:49 +01:00
fix(flutter-tools): bug where dart lsp is not found
This commit is contained in:
parent
efe5905c41
commit
b4eaabea95
5 changed files with 70 additions and 9 deletions
|
@ -73,6 +73,7 @@ with lib; let
|
|||
"diffview-nvim"
|
||||
"todo-comments"
|
||||
"flutter-tools"
|
||||
"flutter-tools-patched"
|
||||
"hop-nvim"
|
||||
"leap-nvim"
|
||||
"modes-nvim"
|
||||
|
|
|
@ -25,13 +25,13 @@ inputs: {
|
|||
// extraSpecialArgs;
|
||||
};
|
||||
|
||||
buildPlug = name:
|
||||
buildVimPluginFrom2Nix rec {
|
||||
pname = name;
|
||||
version = "master";
|
||||
src = assert lib.asserts.assertMsg (name != "nvim-treesitter") "Use buildTreesitterPlug for building nvim-treesitter.";
|
||||
getAttr pname inputs;
|
||||
};
|
||||
buildPlug = {pname, ...} @ args:
|
||||
assert lib.asserts.assertMsg (pname != "nvim-treesitter") "Use buildTreesitterPlug for building nvim-treesitter.";
|
||||
buildVimPluginFrom2Nix (args
|
||||
// {
|
||||
version = "master";
|
||||
src = getAttr pname inputs;
|
||||
});
|
||||
|
||||
buildTreesitterPlug = grammars: vimPlugins.nvim-treesitter.withPlugins (_: grammars);
|
||||
|
||||
|
@ -45,7 +45,13 @@ inputs: {
|
|||
(
|
||||
if (plug == "nvim-treesitter")
|
||||
then (buildTreesitterPlug vimOptions.treesitter.grammars)
|
||||
else (buildPlug plug)
|
||||
else if (plug == "flutter-tools-patched")
|
||||
then
|
||||
(buildPlug {
|
||||
pname = "flutter-tools";
|
||||
patches = [../patches/flutter-tools.patch];
|
||||
})
|
||||
else (buildPlug {pname = plug;})
|
||||
)
|
||||
else plug
|
||||
))
|
||||
|
|
|
@ -35,7 +35,10 @@ in {
|
|||
})
|
||||
|
||||
(mkIf (ftcfg.enable) {
|
||||
vim.startPlugins = ["flutter-tools"];
|
||||
vim.startPlugins =
|
||||
if ftcfg.enableNoResolvePatch
|
||||
then ["flutter-tools-patched"]
|
||||
else ["flutter-tools"];
|
||||
|
||||
vim.luaConfigRC.flutter-tools = nvim.dag.entryAnywhere ''
|
||||
require('flutter-tools').setup {
|
||||
|
|
|
@ -56,6 +56,16 @@ in {
|
|||
default = config.vim.languages.enableLSP;
|
||||
};
|
||||
|
||||
enableNoResolvePatch = mkOption {
|
||||
description = ''
|
||||
Patch flutter-tools so that it doesn't resolve symlinks when detecting flutter path.
|
||||
This is required if you want to use a flutter package built with nix.
|
||||
If you are using a flutter SDK installed from a different source and encounter the error "`dart` missing from PATH", disable this option.
|
||||
'';
|
||||
type = types.bool;
|
||||
default = true;
|
||||
};
|
||||
|
||||
color = {
|
||||
enable = mkEnableOption "Whether or mot to highlight color variables at all";
|
||||
|
||||
|
|
41
patches/flutter-tools.patch
Normal file
41
patches/flutter-tools.patch
Normal file
|
@ -0,0 +1,41 @@
|
|||
diff --git a/lua/flutter-tools/executable.lua b/lua/flutter-tools/executable.lua
|
||||
index 3807a4f..3345760 100644
|
||||
--- a/lua/flutter-tools/executable.lua
|
||||
+++ b/lua/flutter-tools/executable.lua
|
||||
@@ -31,12 +31,12 @@ local function _dart_sdk_root(paths)
|
||||
end
|
||||
|
||||
if utils.executable("flutter") then
|
||||
- local flutter_path = fn.resolve(fn.exepath("flutter"))
|
||||
+ local flutter_path = fn.exepath("flutter")
|
||||
local flutter_bin = fn.fnamemodify(flutter_path, ":h")
|
||||
return path.join(flutter_bin, dart_sdk)
|
||||
end
|
||||
|
||||
- if utils.executable("dart") then return fn.resolve(fn.exepath("dart")) end
|
||||
+ if utils.executable("dart") then return fn.exepath("dart") end
|
||||
|
||||
return ""
|
||||
end
|
||||
@@ -50,10 +50,10 @@ end
|
||||
---Get paths for flutter and dart based on the binary locations
|
||||
---@return table<string, string>
|
||||
local function get_default_binaries()
|
||||
- local flutter_bin = fn.resolve(fn.exepath("flutter"))
|
||||
+ local flutter_bin = fn.exepath("flutter")
|
||||
return {
|
||||
flutter_bin = flutter_bin,
|
||||
- dart_bin = fn.resolve(fn.exepath("dart")),
|
||||
+ dart_bin = fn.exepath("dart"),
|
||||
flutter_sdk = _flutter_sdk_root(flutter_bin),
|
||||
}
|
||||
end
|
||||
@@ -119,7 +119,7 @@ function M.get(callback)
|
||||
end
|
||||
|
||||
if config.flutter_path then
|
||||
- local flutter_path = fn.resolve(config.flutter_path)
|
||||
+ local flutter_path = config.flutter_path
|
||||
_paths = { flutter_bin = flutter_path, flutter_sdk = _flutter_sdk_root(flutter_path) }
|
||||
_paths.dart_sdk = _dart_sdk_root(_paths)
|
||||
_paths.dart_bin = _flutter_sdk_dart_bin(_paths.flutter_sdk)
|
Loading…
Reference in a new issue