Skip to content

Commit

Permalink
Update config setup for fold_ts
Browse files Browse the repository at this point in the history
  • Loading branch information
ray-x committed Nov 11, 2023
1 parent 164e8ad commit 0ce1009
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 12 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,11 @@ require'navigator'.setup({
-- end,
-- The attach code will apply to all LSP clients

ts_fold = false, -- modified version of treesitter folding
ts_fold = {
enable = false,
comment_fold = true, -- fold with comment string
max_lines_scan_comments = 20, -- only fold when the fold level higher than this value
}, -- modified version of treesitter folding
default_mapping = true, -- set to false if you will remap every key or if you using old version of nvim-
keymaps = {{key = "gK", func = vim.lsp.declaration, desc = 'declaration'}}, -- a list of key maps
-- this kepmap gK will override "gD" mapping function declaration() in default kepmap
Expand Down
16 changes: 12 additions & 4 deletions lua/navigator.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,12 @@ _NgConfigValues = {
on_attach = function(client, bufnr)
-- your on_attach will be called at end of navigator on_attach
end,
ts_fold = false,
-- ts_fold = false, -- deprecated
ts_fold = {
enable = false,
comment = true, -- ts fold text object
max_lines_scan_comments = 2000, -- maximum lines to scan for comments
},
treesitter_analysis = true, -- treesitter variable context
treesitter_navigation = true, -- bool|table
treesitter_analysis_max_num = 100, -- how many items to run treesitter analysis
Expand Down Expand Up @@ -236,6 +241,9 @@ M.deprecated = function(cfg)
if cfg.lsp and cfg.lsp.sumneko_lua then
warn('sumneko_lua option deprecated, refer to README for more details')
end
if cfg.ts_fold ~= nil and type(cfg.ts_fold) == "boolean" then
warn('ts_fold option changed, refer to README for more details')
end
end

local extend_config = function(opts)
Expand Down Expand Up @@ -348,9 +356,9 @@ M.setup = function(cfg)
require('navigator.implementation')
local ts_installed = pcall(require, 'nvim-treesitter')
if not ts_installed then
if _NgConfigValues.ts_fold == true then
if _NgConfigValues.ts_fold.enable == true then
warn('treesitter not installed ts_fold disabled')
_NgConfigValues.ts_fold = false
_NgConfigValues.ts_fold.enable = false
end
if _NgConfigValues.treesitter_analysis == true then
warn('nvim-treesitter not installed, disable treesitter_analysis')
Expand All @@ -370,7 +378,7 @@ M.setup = function(cfg)
_NgConfigValues.loaded = true
end

if _NgConfigValues.ts_fold == true then
if _NgConfigValues.ts_fold.enable == true then
require('navigator.foldts').on_attach()
end

Expand Down
17 changes: 10 additions & 7 deletions lua/navigator/foldts.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

local log = require('navigator.util').log
local trace = require('navigator.util').trace
trace = log
local api = vim.api
local tsutils = require('nvim-treesitter.ts_utils')
local query = require('nvim-treesitter.query')
Expand Down Expand Up @@ -52,10 +51,10 @@ function NG_custom_fold_text()
spaces[2] = { '@keyword' }
end
end
local sep2 = ' ' .. string.rep(sep, 3)
local sep2 = ' ' .. string.rep(sep, 3) .. ' '
table.insert(line_syntax, { sep2, { '@comment' } })
table.insert(line_syntax, { ' ' .. tostring(line_count), { '@number' } })
table.insert(line_syntax, { ' lines ', { '@comment' } })
table.insert(line_syntax, { tostring(line_count), { '@number' } })
table.insert(line_syntax, { ' lines', { '@text.title' } })
table.insert(line_syntax, { sep2, { '@comment' } })
return line_syntax
end
Expand Down Expand Up @@ -88,19 +87,23 @@ end

local function is_comment(line_number)
local node = get_node_at_line(line_number)
trace(node, node:type())
trace(line_number, node, node:type())
if not node then
return false
end
local node_type = node:type()
trace(node_type)
return node_type == 'comment' or node_type == 'comment_block'
trace(line_number, node_type)
return node_type:find('comment')
end

local function get_comment_scopes(total_lines)
if not _NgConfigValues.ts_fold.comment then
return {}
end
local comment_scopes = {}
local comment_start = nil

total_lines = math.min(total_lines, _NgConfigValues.ts_fold.max_lines_scan_comments)
for line = 0, total_lines - 1 do
if is_comment(line + 1) then
if not comment_start then
Expand Down

0 comments on commit 0ce1009

Please sign in to comment.