Skip to content

Commit ff8a7f3

Browse files
committed
fix: use api to create status window
1 parent 83cf79a commit ff8a7f3

File tree

1 file changed

+18
-16
lines changed

1 file changed

+18
-16
lines changed

lua/git/command/status.lua

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
local M = {}
22

33
local job = require('job')
4-
local nt = require('notify')
54
local log = require('git.log')
65

76
local status_bufnr = -1
@@ -18,17 +17,20 @@ local function close_status_window()
1817
end
1918

2019
local function openStatusBuffer()
21-
vim.cmd([[
22-
10split git://status
23-
normal! "_dd
24-
setl nobuflisted
25-
setl nomodifiable
26-
setl nonumber norelativenumber
27-
setl buftype=nofile
28-
setl bufhidden=wipe
29-
setf git-status
30-
]])
31-
status_bufnr = vim.fn.bufnr()
20+
status_bufnr = vim.api.nvim_create_buf(false, false)
21+
vim.api.nvim_buf_set_name(status_bufnr, 'git://status')
22+
vim.api.nvim_buf_set_lines(status_bufnr, 0, -1, false, {})
23+
local winid = vim.api.nvim_open_win(status_bufnr, true, {
24+
split = 'above',
25+
height = 10,
26+
})
27+
vim.api.nvim_set_option_value('buflisted', false, { buf = status_bufnr })
28+
vim.api.nvim_set_option_value('modifiable', false, { buf = status_bufnr })
29+
vim.api.nvim_set_option_value('buftype', 'nofile', { buf = status_bufnr })
30+
vim.api.nvim_set_option_value('bufhidden', 'wipe', { buf = status_bufnr })
31+
vim.api.nvim_set_option_value('filetype', 'git-status', { buf = status_bufnr })
32+
vim.api.nvim_set_option_value('number', false, { win = winid })
33+
vim.api.nvim_set_option_value('relativenumber', false, { win = winid })
3234
-- nnoremap <buffer><silent> q :call <SID>close_status_window()<CR>
3335
vim.api.nvim_buf_set_keymap(status_bufnr, 'n', 'q', '', {
3436
callback = close_status_window,
@@ -63,16 +65,16 @@ local function on_exit(id, code, single)
6365
end
6466
log.debug('git-status exit code:' .. code .. ' single:' .. single)
6567
if vim.api.nvim_buf_is_valid(status_bufnr) then
66-
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', true)
68+
vim.api.nvim_set_option_value('modifiable', true, { buf = status_bufnr })
6769
vim.api.nvim_buf_set_lines(status_bufnr, 0, -1, false, lines)
68-
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', false)
70+
vim.api.nvim_set_option_value('modifiable', false, { buf = status_bufnr })
6971
pcall(vim.api.nvim_del_autocmd, autocmd)
7072
autocmd = vim.api.nvim_create_autocmd('BufReadCmd', {
7173
buffer = status_bufnr,
7274
callback = function()
73-
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', true)
75+
vim.api.nvim_set_option_value('modifiable', true, { buf = status_bufnr })
7476
vim.api.nvim_buf_set_lines(status_bufnr, 0, -1, false, lines)
75-
vim.api.nvim_buf_set_option(status_bufnr, 'modifiable', false)
77+
vim.api.nvim_set_option_value('modifiable', false, { buf = status_bufnr })
7678
vim.api.nvim_set_option_value('syntax', 'diff', { buf = status_bufnr })
7779
end,
7880
})

0 commit comments

Comments
 (0)