diff --git a/lua/oil/adapters/files.lua b/lua/oil/adapters/files.lua index 3cf5fa7..cba0228 100644 --- a/lua/oil/adapters/files.lua +++ b/lua/oil/adapters/files.lua @@ -385,6 +385,7 @@ M.perform_action = function(action, cb) junction = false, } end + ---@diagnostic disable-next-line: param-type-mismatch uv.fs_symlink(target, path, flags, cb) else fs.touch(path, cb) diff --git a/lua/oil/adapters/ssh.lua b/lua/oil/adapters/ssh.lua index f21bf91..1491f23 100644 --- a/lua/oil/adapters/ssh.lua +++ b/lua/oil/adapters/ssh.lua @@ -12,7 +12,7 @@ local M = {} local FIELD_META = constants.FIELD_META ----@class oil.sshUrl +---@class (exact) oil.sshUrl ---@field scheme string ---@field host string ---@field user nil|string diff --git a/lua/oil/adapters/ssh/connection.lua b/lua/oil/adapters/ssh/connection.lua index 00e0916..6f6d05c 100644 --- a/lua/oil/adapters/ssh/connection.lua +++ b/lua/oil/adapters/ssh/connection.lua @@ -1,10 +1,22 @@ local layout = require("oil.layout") local util = require("oil.util") ----@class oil.sshConnection +---@class (exact) oil.sshCommand +---@field cmd string|string[] +---@field cb fun(err?: string, output?: string[]) +---@field running? boolean + +---@class (exact) oil.sshConnection +---@field new fun(url: oil.sshUrl): oil.sshConnection +---@field create_ssh_command fun(url: oil.sshUrl): string[] ---@field meta {user?: string, groups?: string[]} +---@field connection_error nil|string +---@field connected boolean ---@field private term_bufnr integer ---@field private jid integer +---@field private term_winid nil|integer +---@field private commands oil.sshCommand[] +---@field private _stdout string[] local SSHConnection = {} local function output_extend(agg, output) @@ -114,6 +126,7 @@ function SSHConnection.new(url) pty = true, -- This is require for interactivity on_stdout = function(j, output) pcall(vim.api.nvim_chan_send, self.term_id, table.concat(output, "\r\n")) + ---@diagnostic disable-next-line: invisible local new_i_start = output_extend(self._stdout, output) self:_handle_output(new_i_start) end, diff --git a/lua/oil/adapters/ssh/sshfs.lua b/lua/oil/adapters/ssh/sshfs.lua index 99438c1..2d1dc41 100644 --- a/lua/oil/adapters/ssh/sshfs.lua +++ b/lua/oil/adapters/ssh/sshfs.lua @@ -4,7 +4,8 @@ local permissions = require("oil.adapters.files.permissions") local SSHConnection = require("oil.adapters.ssh.connection") local util = require("oil.util") ----@class oil.sshFs +---@class (exact) oil.sshFs +---@field new fun(url: oil.sshUrl): oil.sshFs ---@field conn oil.sshConnection local SSHFS = {} diff --git a/lua/oil/columns.lua b/lua/oil/columns.lua index 625ecae..4c1031e 100644 --- a/lua/oil/columns.lua +++ b/lua/oil/columns.lua @@ -12,7 +12,7 @@ local all_columns = {} ---@alias oil.ColumnSpec string|table ----@class oil.ColumnDefinition +---@class (exact) oil.ColumnDefinition ---@field render fun(entry: oil.InternalEntry, conf: nil|table): nil|oil.TextChunk ---@field parse fun(line: string, conf: nil|table): nil|string, nil|string ---@field meta_fields nil|table diff --git a/lua/oil/init.lua b/lua/oil/init.lua index efdfec7..99ea008 100644 --- a/lua/oil/init.lua +++ b/lua/oil/init.lua @@ -1,6 +1,6 @@ local M = {} ----@class oil.Entry +---@class (exact) oil.Entry ---@field name string ---@field type oil.EntryType ---@field id nil|integer Will be nil if it hasn't been persisted to disk yet @@ -9,7 +9,7 @@ local M = {} ---@alias oil.EntryType "file"|"directory"|"socket"|"link"|"fifo" ---@alias oil.TextChunk string|string[] ----@class oil.Adapter +---@class (exact) oil.Adapter ---@field name string The unique name of the adapter (this will be set automatically) ---@field list fun(path: string, column_defs: string[], cb: fun(err?: string, entries?: oil.InternalEntry[], fetch_more?: fun())) Async function to list a directory. ---@field is_modifiable fun(bufnr: integer): boolean Return true if this directory is modifiable (allows for directories with read-only permissions). @@ -23,6 +23,7 @@ local M = {} -- TODO remove after https://github.com/folke/neodev.nvim/pull/163 lands ---@diagnostic disable: undefined-field +---@diagnostic disable: inject-field ---Get the entry on a specific line (1-indexed) ---@param bufnr integer diff --git a/lua/oil/mutator/init.lua b/lua/oil/mutator/init.lua index 5dd7ba3..ce8422a 100644 --- a/lua/oil/mutator/init.lua +++ b/lua/oil/mutator/init.lua @@ -17,30 +17,30 @@ local FIELD_TYPE = constants.FIELD_TYPE ---@alias oil.Action oil.CreateAction|oil.DeleteAction|oil.MoveAction|oil.CopyAction|oil.ChangeAction ----@class oil.CreateAction +---@class (exact) oil.CreateAction ---@field type "create" ---@field url string ---@field entry_type oil.EntryType ---@field link nil|string ----@class oil.DeleteAction +---@class (exact) oil.DeleteAction ---@field type "delete" ---@field url string ---@field entry_type oil.EntryType ----@class oil.MoveAction +---@class (exact) oil.MoveAction ---@field type "move" ---@field entry_type oil.EntryType ---@field src_url string ---@field dest_url string ----@class oil.CopyAction +---@class (exact) oil.CopyAction ---@field type "copy" ---@field entry_type oil.EntryType ---@field src_url string ---@field dest_url string ----@class oil.ChangeAction +---@class (exact) oil.ChangeAction ---@field type "change" ---@field entry_type oil.EntryType ---@field url string @@ -71,6 +71,7 @@ M.create_actions_from_diffs = function(all_diffs) if diff.id then local by_id = diff_by_id[diff.id] -- FIXME this is kind of a hack. We shouldn't be setting undocumented fields on the diff + ---@diagnostic disable-next-line: inject-field diff.dest = parent_url .. diff.name table.insert(by_id, diff) else diff --git a/lua/oil/mutator/parser.lua b/lua/oil/mutator/parser.lua index 60d163a..a8d3d58 100644 --- a/lua/oil/mutator/parser.lua +++ b/lua/oil/mutator/parser.lua @@ -13,19 +13,19 @@ local FIELD_META = constants.FIELD_META ---@alias oil.Diff oil.DiffNew|oil.DiffDelete|oil.DiffChange ----@class oil.DiffNew +---@class (exact) oil.DiffNew ---@field type "new" ---@field name string ---@field entry_type oil.EntryType ---@field id nil|integer ---@field link nil|string ----@class oil.DiffDelete +---@class (exact) oil.DiffDelete ---@field type "delete" ---@field name string ---@field id integer --- ----@class oil.DiffChange +---@class (exact) oil.DiffChange ---@field type "change" ---@field entry_type oil.EntryType ---@field name string @@ -56,7 +56,7 @@ local function compare_link_target(meta, parsed_entry) return meta_name == parsed_name end ----@class oil.ParseResult +---@class (exact) oil.ParseResult ---@field data table Parsed entry data ---@field ranges table Locations of the various columns ---@field entry nil|oil.InternalEntry If the entry already exists diff --git a/lua/oil/mutator/trie.lua b/lua/oil/mutator/trie.lua index dbbe62c..ea39266 100644 --- a/lua/oil/mutator/trie.lua +++ b/lua/oil/mutator/trie.lua @@ -1,6 +1,7 @@ local util = require("oil.util") ----@class oil.Trie +---@class (exact) oil.Trie +---@field new fun(): oil.Trie ---@field private root table local Trie = {}