[mirror] Make your go dev experience better github.com/olexsmir/gopher.nvim
neovim golang
at main 72 lines 1.5 kB view raw
1local c = require "gopher.config" 2local log = require "gopher._utils.log" 3local utils = {} 4 5---@param msg string 6---@param lvl? integer by default `vim.log.levels.INFO` 7function utils.notify(msg, lvl) 8 lvl = lvl or vim.log.levels.INFO 9 vim.notify(msg, lvl, { 10 ---@diagnostic disable-next-line:undefined-field 11 title = c.___plugin_name, 12 }) 13 log.debug(msg) 14end 15 16---@param path string 17---@return string 18function utils.readfile_joined(path) 19 return table.concat(vim.fn.readfile(path), "\n") 20end 21 22---@param t string[] 23---@return string[] 24function utils.remove_empty_lines(t) 25 local res = {} 26 for _, line in ipairs(t) do 27 if line ~= "" then 28 table.insert(res, line) 29 end 30 end 31 return res 32end 33 34---@param s string 35---@return string 36function utils.trimend(s) 37 local r, _ = string.gsub(s, "%s+$", "") 38 return r 39end 40 41-- Since indentation can be spaces or tabs, that's my hack around it 42---@param line string 43---@param indent integer 44---@return string 45function utils.indent(line, indent) 46 local char = string.sub(line, 1, 1) 47 if char ~= " " and char ~= "\t" then 48 char = " " 49 end 50 return string.rep(char, indent) 51end 52 53---@generic T 54---@param tbl T[] 55---@return T[] 56function utils.list_unique(tbl) 57 if vim.fn.has "nvim-0.12" == 1 then 58 return vim.list.unique(tbl) 59 end 60 61 for i = #tbl, 1, -1 do 62 for j = 1, i - 1 do 63 if tbl[i] == tbl[j] then 64 table.remove(tbl, i) 65 break 66 end 67 end 68 end 69 return tbl 70end 71 72return utils