Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit8aef7be

Browse files
refactor: move window layout restoration to terminal module
Move restore_window_layout() function from diff.lua to terminal.luafor better code organization and separation of concerns.- Terminal module now handles all window layout management- Simplify diff.lua to delegate window restoration calls- Improve code maintainability and discoverability
1 parent9f1adf1 commit8aef7be

File tree

2 files changed

+57
-70
lines changed

2 files changed

+57
-70
lines changed

‎lua/claudecode/diff.lua

Lines changed: 5 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -8,75 +8,14 @@ local logger = require("claudecode.logger")
88
localactive_diffs= {}
99
localautocmd_group
1010

11-
--- Get terminal configuration to restore proper window layout
12-
-- @return table Terminal config with split_width_percentage and split_side
13-
localfunctionget_terminal_config()
14-
localok,terminal=pcall(require,"claudecode.terminal")
15-
ifokandterminal.get_configthen
16-
localterminal_config=terminal.get_config()
17-
return {
18-
split_width_percentage=terminal_config.split_width_percentage,
19-
split_side=terminal_config.split_side
20-
}
21-
end
22-
23-
-- Fallback to defaults if terminal module is not available
24-
return {
25-
split_width_percentage=0.30,-- Default terminal width (30%)
26-
split_side="right"-- Default terminal side
27-
}
28-
end
29-
30-
--- Restore window layout after closing diff windows
31-
-- This ensures that Claude's terminal maintains its configured size ratio
11+
--- Restore window layout by delegating to terminal module
3212
-- @param target_window number|nil The remaining main editor window
3313
localfunctionrestore_window_layout(target_window)
34-
ifnottarget_windowornotvim.api.nvim_win_is_valid(target_window)then
35-
return
36-
end
37-
38-
localterm_config=get_terminal_config()
39-
40-
-- Find terminal window
41-
localterminal_win=nil
42-
localwindows=vim.api.nvim_list_wins()
43-
44-
for_,wininipairs(windows)do
45-
ifvim.api.nvim_win_is_valid(win)then
46-
localbuf=vim.api.nvim_win_get_buf(win)
47-
localfiletype=vim.api.nvim_buf_get_option(buf,"filetype")
48-
localbuftype=vim.api.nvim_buf_get_option(buf,"buftype")
49-
50-
-- Check if this is Claude's terminal window
51-
iffiletype=="ClaudeCode"orbuftype=="terminal"then
52-
localbuf_name=vim.api.nvim_buf_get_name(buf)
53-
ifbuf_name:match("claude")orfiletype=="ClaudeCode"then
54-
terminal_win=win
55-
break
56-
end
57-
end
58-
end
59-
end
60-
61-
ifterminal_winandvim.api.nvim_win_is_valid(terminal_win)then
62-
-- Calculate proper terminal width based on configuration
63-
localtotal_width=vim.o.columns
64-
localterminal_width=math.floor(total_width*term_config.split_width_percentage)
65-
66-
-- Set terminal window width
67-
vim.api.nvim_win_set_width(terminal_win,terminal_width)
68-
69-
-- Equalize other windows
70-
vim.cmd("wincmd =")
71-
72-
-- Re-apply terminal width to maintain proportion
73-
ifvim.api.nvim_win_is_valid(terminal_win)then
74-
vim.api.nvim_win_set_width(terminal_win,terminal_width)
75-
end
76-
77-
logger.debug("diff","Restored window layout with terminal width:",terminal_width)
14+
localok,terminal=pcall(require,"claudecode.terminal")
15+
ifokandterminal.restore_window_layoutthen
16+
terminal.restore_window_layout(target_window)
7817
else
79-
--No terminal found,just equalize
18+
--Fallback:just equalize windows
8019
vim.cmd("wincmd =")
8120
end
8221
end

‎lua/claudecode/terminal.lua

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,10 +298,58 @@ function M._get_managed_terminal_for_test()
298298
returnnil
299299
end
300300

301-
--- Gets the current terminal configuration
302-
-- @return table The current terminal configuration with split_side, split_width_percentage, etc.
303-
functionM.get_config()
304-
returnvim.deepcopy(config)
301+
--- Restore window layout after closing diff windows
302+
-- This ensures that Claude's terminal maintains its configured size ratio
303+
-- @param target_window number|nil The remaining main editor window
304+
functionM.restore_window_layout(target_window)
305+
ifnottarget_windowornotvim.api.nvim_win_is_valid(target_window)then
306+
return
307+
end
308+
309+
locallogger=require("claudecode.logger")
310+
311+
-- Find terminal window
312+
localterminal_win=nil
313+
localwindows=vim.api.nvim_list_wins()
314+
315+
for_,wininipairs(windows)do
316+
ifvim.api.nvim_win_is_valid(win)then
317+
localbuf=vim.api.nvim_win_get_buf(win)
318+
localfiletype=vim.api.nvim_buf_get_option(buf,"filetype")
319+
localbuftype=vim.api.nvim_buf_get_option(buf,"buftype")
320+
321+
-- Check if this is Claude's terminal window
322+
iffiletype=="ClaudeCode"orbuftype=="terminal"then
323+
localbuf_name=vim.api.nvim_buf_get_name(buf)
324+
ifbuf_name:match("claude")orfiletype=="ClaudeCode"then
325+
terminal_win=win
326+
break
327+
end
328+
end
329+
end
330+
end
331+
332+
ifterminal_winandvim.api.nvim_win_is_valid(terminal_win)then
333+
-- Calculate proper terminal width based on configuration
334+
localtotal_width=vim.o.columns
335+
localterminal_width=math.floor(total_width*config.split_width_percentage)
336+
337+
-- Set terminal window width
338+
vim.api.nvim_win_set_width(terminal_win,terminal_width)
339+
340+
-- Equalize other windows
341+
vim.cmd("wincmd =")
342+
343+
-- Re-apply terminal width to maintain proportion
344+
ifvim.api.nvim_win_is_valid(terminal_win)then
345+
vim.api.nvim_win_set_width(terminal_win,terminal_width)
346+
end
347+
348+
logger.debug("terminal","Restored window layout with terminal width:",terminal_width)
349+
else
350+
-- No terminal found, just equalize
351+
vim.cmd("wincmd =")
352+
end
305353
end
306354

307355
returnM

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp