Files
nvim-hardline/lua/hardline/parts/wordcount.lua
2021-02-08 23:09:35 +01:00

57 lines
1.1 KiB
Lua

local fn, vim = vim.fn, vim
local b, bo = vim.b, vim.bo
local fmt = string.format
local common = require('hardline.common')
local enabled = false
local cache = ''
local options = {
filetypes = {
'asciidoc',
'help',
'mail',
'markdown',
'nroff',
'org',
'rst',
'plaintex',
'tex',
'text',
},
max_lines = 5000,
}
local function in_visual()
local mode = common.modes[fn.mode()] or common.modes['?']
return mode.state == 'visual'
end
local function get_wordcount()
local query = in_visual() and 'visual_words' or 'words'
local wordcount = fn.wordcount()[query]
return fmt('%d words', wordcount)
end
local function get_item()
if not enabled then
common.set_cache_autocmds('hardline_wordcount')
enabled = true
end
if not vim.tbl_contains(options.filetypes, bo.filetype) then
return ''
end
if fn.line('$') > options.max_lines then
return ''
end
if b.hardline_wordcount and not in_visual() then
return cache
end
b.hardline_wordcount = true
cache = get_wordcount()
return cache
end
return {
get_item = get_item,
}