feat: add toggle_doc functionality (#1647)
* feat: Add toggle_doc functionality fix: Update docs view on entry change * Replace toggle logic by open/close * add docs and pinned flags * add faq for disabling docs * chore(git): ignore .DS_Store --------- Co-authored-by: hrsh7th <629908+hrsh7th@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
3b9f28061a
commit
1c03ebc7dc
@@ -10,6 +10,7 @@ local ghost_text_view = require('cmp.view.ghost_text_view')
|
||||
|
||||
---@class cmp.View
|
||||
---@field public event cmp.Event
|
||||
---@field private is_docs_view_pinned boolean
|
||||
---@field private resolve_dedup cmp.AsyncDedup
|
||||
---@field private native_entries_view cmp.NativeEntriesView
|
||||
---@field private custom_entries_view cmp.CustomEntriesView
|
||||
@@ -23,6 +24,7 @@ local view = {}
|
||||
view.new = function()
|
||||
local self = setmetatable({}, { __index = view })
|
||||
self.resolve_dedup = async.dedup()
|
||||
self.is_docs_view_pinned = false
|
||||
self.custom_entries_view = custom_entries_view.new()
|
||||
self.native_entries_view = native_entries_view.new()
|
||||
self.wildmenu_entries_view = wildmenu_entries_view.new()
|
||||
@@ -128,6 +130,7 @@ end
|
||||
---Close menu
|
||||
view.close = function(self)
|
||||
if self:visible() then
|
||||
self.is_docs_view_pinned = false
|
||||
self.event:emit('complete_done', {
|
||||
entry = self:_get_entries_view():get_selected_entry(),
|
||||
})
|
||||
@@ -142,6 +145,9 @@ end
|
||||
|
||||
---Abort menu
|
||||
view.abort = function(self)
|
||||
if self:visible() then
|
||||
self.is_docs_view_pinned = false
|
||||
end
|
||||
self:_get_entries_view():abort()
|
||||
self.docs_view:close()
|
||||
self.ghost_text_view:hide()
|
||||
@@ -156,6 +162,28 @@ view.visible = function(self)
|
||||
return self:_get_entries_view():visible()
|
||||
end
|
||||
|
||||
---Opens the documentation window.
|
||||
view.open_docs = function(self)
|
||||
self.is_docs_view_pinned = true
|
||||
local e = self:get_selected_entry()
|
||||
if e then
|
||||
e:resolve(vim.schedule_wrap(self.resolve_dedup(function()
|
||||
if not self:visible() then
|
||||
return
|
||||
end
|
||||
self.docs_view:open(e, self:_get_entries_view():info())
|
||||
end)))
|
||||
end
|
||||
end
|
||||
|
||||
---Closes the documentation window.
|
||||
view.close_docs = function(self)
|
||||
self.is_docs_view_pinned = false
|
||||
if self:get_selected_entry() then
|
||||
self.docs_view:close()
|
||||
end
|
||||
end
|
||||
|
||||
---Scroll documentation window if possible.
|
||||
---@param delta integer
|
||||
view.scroll_docs = function(self, delta)
|
||||
@@ -239,7 +267,9 @@ view.on_entry_change = async.throttle(function(self)
|
||||
if not self:visible() then
|
||||
return
|
||||
end
|
||||
self.docs_view:open(e, self:_get_entries_view():info())
|
||||
if self.is_docs_view_pinned or config.get().view.docs.auto_open then
|
||||
self.docs_view:open(e, self:_get_entries_view():info())
|
||||
end
|
||||
end)))
|
||||
else
|
||||
self.docs_view:close()
|
||||
|
||||
Reference in New Issue
Block a user