From 8856eab7521da6e7d4ae4933278109dac8f2e306 Mon Sep 17 00:00:00 2001 From: Eric Haynes Date: Thu, 26 Feb 2026 22:32:22 -0500 Subject: [PATCH] feat: set filetype for claude-code buffer --- lua/claudecode/terminal/native.lua | 1 + lua/claudecode/terminal/snacks.lua | 1 + tests/unit/native_terminal_toggle_spec.lua | 14 ++++++++++++++ 3 files changed, 16 insertions(+) diff --git a/lua/claudecode/terminal/native.lua b/lua/claudecode/terminal/native.lua index 7cd24dd5..a1f36931 100644 --- a/lua/claudecode/terminal/native.lua +++ b/lua/claudecode/terminal/native.lua @@ -132,6 +132,7 @@ local function open_terminal(cmd_string, env_table, effective_config, focus) winid = new_winid bufnr = vim.api.nvim_get_current_buf() vim.bo[bufnr].bufhidden = "hide" + vim.bo[bufnr].filetype = "claudecode" -- buftype=terminal is set by termopen if focus then diff --git a/lua/claudecode/terminal/snacks.lua b/lua/claudecode/terminal/snacks.lua index 2b4c7c98..25b45ba9 100644 --- a/lua/claudecode/terminal/snacks.lua +++ b/lua/claudecode/terminal/snacks.lua @@ -132,6 +132,7 @@ function M.open(cmd_string, env_table, config, focus) if term_instance and term_instance:buf_valid() then setup_terminal_events(term_instance, config) terminal = term_instance + vim.bo[term_instance.buf].filetype = "claudecode" else terminal = nil local logger = require("claudecode.logger") diff --git a/tests/unit/native_terminal_toggle_spec.lua b/tests/unit/native_terminal_toggle_spec.lua index ddf4d700..7e7d237e 100644 --- a/tests/unit/native_terminal_toggle_spec.lua +++ b/tests/unit/native_terminal_toggle_spec.lua @@ -220,6 +220,20 @@ describe("claudecode.terminal.native toggle behavior", function() -- Should have created terminal and have active buffer assert.is_not_nil(native_provider.get_active_bufnr()) end) + + it("should set filetype to claudecode on the terminal buffer", function() + local cmd_string = "claude" + local env_table = { TEST = "value" } + local config = { split_side = "right", split_width_percentage = 0.3 } + + native_provider.open(cmd_string, env_table, config) + + local bufnr = native_provider.get_active_bufnr() + assert.is_not_nil(bufnr) + + local mock_state = _G.get_mock_state() + assert.are.equal("claudecode", mock_state.buffers[bufnr].options.filetype) + end) end) describe("toggle with existing hidden terminal", function()