From d9e3da291a1748d9b1c8efebcd6d12cbf092c3c6 Mon Sep 17 00:00:00 2001
From: David Luevano Alvarado <david@luevano.xyz>
Date: Tue, 30 Jan 2024 23:40:21 -0600
Subject: feat: add treesitter-context

---
 lua/plugins/context.lua | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
 create mode 100644 lua/plugins/context.lua

diff --git a/lua/plugins/context.lua b/lua/plugins/context.lua
new file mode 100644
index 0000000..e0625ab
--- /dev/null
+++ b/lua/plugins/context.lua
@@ -0,0 +1,26 @@
+return {
+  'nvim-treesitter/nvim-treesitter-context',
+  dependencies = {
+    'nvim-treesitter/nvim-treesitter',
+  },
+  opts = {
+    enable = true,            -- Enable this plugin (Can be enabled/disabled later via commands)
+    max_lines = 0,            -- How many lines the window should span. Values <= 0 mean no limit.
+    min_window_height = 0,    -- Minimum editor window height to enable context. Values <= 0 mean no limit.
+    line_numbers = true,
+    multiline_threshold = 20, -- Maximum number of lines to show for a single context
+    trim_scope = 'outer',     -- Which context lines to discard if `max_lines` is exceeded. Choices: 'inner', 'outer'
+    mode = 'cursor',          -- Line used to calculate context. Choices: 'cursor', 'topline'
+    -- Separator between context and content. Should be a single character string, like '-'.
+    -- When separator is set, the context will only show up when there are at least 2 lines above cursorline.
+    separator = nil,
+    zindex = 20,   -- The Z-index of the context window
+    on_attach = nil, -- (fun(buf: integer): boolean) return false to disable attaching
+  },
+  config = function(_, opts)
+    require('treesitter-context').setup(opts)
+
+    -- TODO: change keybind?
+    vim.keymap.set('n', '<leader>cx', '<CMD>TSContextToggle<CR>', { desc = '[C]onte[x]t Toggle' })
+  end,
+}
-- 
cgit v1.2.3-70-g09d2