luozhiya / fittencode.nvim

Fitten Code AI Programming Assistant for Neovim
49 stars 8 forks source link

toggle接口行为,自动聚焦, start_chat绑定到i失败 #93

Open Kaiser-Yang opened 1 week ago

Kaiser-Yang commented 1 week ago

很多插件的toggle会在没有创建窗口时,自动创建一个窗口并且移动光标。但是我发现在fittencode中如果直接使用Fitten toggle_chat命令什么事情都不会发生,只有当我调用过Fitten start_chat开启一次对话后toggle命令才会生效。这是本身接口是这样还是我设置的有问题?

其次我想问能否在启动chat窗口的时候可以有一个选项控制是否将指针移动过去。

最后我在配置文件中,将i绑定到开启一个对话,但是我在chat窗口中并不能通过i进行开启对话,我通过nmap命令查看是存在这个按键绑定的: image

Kaiser-Yang commented 1 week ago

这一次的配置文件在:fitten-code-test

Kaiser-Yang commented 1 week ago

Minimal Part:

keymaps = {
        inline = {
            -- ['<C-Down>'] = 'accept_line',
            -- ['<esc>f'] = 'accept_word',
            -- ['<C-Right>'] = 'accept_word',
            -- ['<C-Up>'] = 'revoke_line',
            -- ['<C-Left>'] = 'revoke_word',
        },
        chat = {
            ['q'] = 'close',
            ['Q'] = 'close',
            ['[c'] = 'goto_previous_conversation',
            [']c'] = 'goto_next_conversation',
            ['c'] = 'copy_conversation',
            ['C'] = 'copy_all_conversations',
            ['d'] = 'delete_conversation',
            ['D'] = 'delete_all_conversations',
            ['i'] = 'start_chat',
        }
    },

-- key mapping for toggle and explain code
map.set({ 'n' }, 'gpt', '<cmd>Fitten toggle_chat<cr>')
map.set({ 'v' }, 'gpt', '<cmd>Fitten explain_code<cr>')
Kaiser-Yang commented 1 week ago

我发现toggle可以自动聚焦, explain-code和start_chat不会自动聚焦,我看文档里面写的有额外选项可以传递,是需要传递选项进行聚焦吗?

Kaiser-Yang commented 1 week ago

我尝试了其他的按键绑定到start chat,都不能成功绑定。

luozhiya commented 1 week ago

不支持 ['i'] = 'start_chat', 这种方式

luozhiya commented 1 week ago

chat窗口的设计是不持有焦点,执行一个action创建一个chat window后,焦点会返回原来的window,特别的如果是在chat窗口中执行action,则焦点会保留在chat中

这个设计是和vscode里explain code一致,不干预代码编辑,chat仅仅作为一个辅助信息

不知道这样是否解释清楚了

Kaiser-Yang commented 1 week ago

chat窗口的设计是不持有焦点,执行一个action创建一个chat window后,焦点会返回原来的window,特别的如果是在chat窗口中执行action,则焦点会保留在chat中

这个设计是和vscode里explain code一致,不干预代码编辑,chat仅仅作为一个辅助信息

不知道这样是否解释清楚了

我能理解这样设计的理由。但是能否增加相关参数支持可以配置解释时是否聚焦。因为当解释较长的代码时,往往需要上下滚动以查看上下文,如果不聚焦的话,那么每次都需要先移动一次。

Kaiser-Yang commented 1 week ago

不支持 ['i'] = 'start_chat', 这种方式

这个问题我想到一个解决方案,我发现chat窗口的readonly为真,所以我为所有readonly为真的窗口绑定i到start_chat命令

vim.cmd[[
augroup no_modify_files
  autocmd!
  autocmd BufEnter,FileType * if &readonly | nnoremap <buffer> i <cmd>Fitten start_chat<CR> | endif
augroup END
]]
luozhiya commented 1 week ago

toggle 改进符合预期了 ebbb5434ec60add6efd0c84bc938a468802ec7a2

Kaiser-Yang commented 1 week ago

好的, 辛苦了

luozhiya commented 6 days ago

@Kaiser-Yang

97 在sidebar风格中添加了focus 选项,执行Action之后会把焦点放到chat中