diff --git a/README.md b/README.md index c60fbe2c..ccbdadf5 100644 --- a/README.md +++ b/README.md @@ -238,7 +238,7 @@ require("flutter-tools").setup { }, flutter_path = "", -- <-- this takes priority over the lookup flutter_lookup_cmd = nil, -- example "dirname $(which flutter)" or "asdf where flutter" - root_patterns = { ".git", "pubspec.yaml" }, -- patterns to find the root of your flutter project + root_patterns = { "pubspec.yaml", ".git" }, -- patterns to find the root of your flutter project fvm = false, -- takes priority over path, uses /.fvm/flutter_sdk if enabled default_run_args= nil, -- Default options for run command (i.e `{ flutter = "--no-version-check" }`). Configured separately for `dart run` and `flutter run`. widget_guides = { diff --git a/lua/flutter-tools/config.lua b/lua/flutter-tools/config.lua index dffd95ac..7c174363 100644 --- a/lua/flutter-tools/config.lua +++ b/lua/flutter-tools/config.lua @@ -100,7 +100,7 @@ local config = { flutter_path = nil, flutter_lookup_cmd = get_default_lookup(), pre_run_callback = nil, - root_patterns = { ".git", "pubspec.yaml" }, + root_patterns = { "pubspec.yaml", ".git" }, fvm = false, default_run_args = nil, widget_guides = { diff --git a/lua/flutter-tools/lsp/init.lua b/lua/flutter-tools/lsp/init.lua index 2f5e7dd4..abc223d0 100644 --- a/lua/flutter-tools/lsp/init.lua +++ b/lua/flutter-tools/lsp/init.lua @@ -287,8 +287,12 @@ function M.attach() if not is_valid_path(buffer_path) then return end get_server_config(user_config, function(c) + local root_patterns = conf.root_patterns + if conf.fvm then + root_patterns = vim.tbl_map(function(pattern) return ".fvm" .. pattern end, root_patterns) + end c.root_dir = M.get_project_root_dir() - or fs.dirname(fs.find(conf.root_patterns, { + or fs.dirname(fs.find(root_patterns, { path = buffer_path, upward = true, })[1])