From e9824803b5d2460a275595863847fd734ff16d64 Mon Sep 17 00:00:00 2001 From: arne314 <73391160+arne314@users.noreply.github.com> Date: Thu, 9 Jan 2025 01:48:18 +0100 Subject: [PATCH] style: format lua using stylua --- .stylua.toml | 10 +++++ lua/typstar/anki.lua | 25 +++++------- lua/typstar/autosnippets.lua | 42 +++++++------------ lua/typstar/config.lua | 6 +-- lua/typstar/excalidraw.lua | 14 +++---- lua/typstar/snippets/letters.lua | 34 ++++++++-------- lua/typstar/snippets/markup.lua | 11 +++-- lua/typstar/snippets/matrix.lua | 4 +- lua/typstar/snippets/visual.lua | 69 ++++++++++++++------------------ lua/typstar/utils.lua | 42 ++++++------------- 10 files changed, 114 insertions(+), 143 deletions(-) create mode 100644 .stylua.toml diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..36ced5e --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,10 @@ +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" +indent_width = 4 +quote_style = "AutoPreferSingle" +call_parentheses = "Always" +collapse_simple_statement = "Always" + +[sort_requires] +enabled = true diff --git a/lua/typstar/anki.lua b/lua/typstar/anki.lua index 01c2a43..d0d3490 100644 --- a/lua/typstar/anki.lua +++ b/lua/typstar/anki.lua @@ -4,29 +4,26 @@ local utils = require('typstar.utils') local cfg = config.config.anki - local function run_typstar_anki(args) local cwd = vim.fn.getcwd() local anki_key = '' - if cfg.ankiKey ~= nil then - anki_key = ' --anki-key ' .. cfg.ankiKey - end + if cfg.ankiKey ~= nil then anki_key = ' --anki-key ' .. cfg.ankiKey end local cmd = string.format( '%s --root-dir %s --typst-cmd %s --anki-url %s %s %s', - cfg.typstarAnkiCmd, cwd, cfg.typstCmd, cfg.ankiUrl, anki_key, args) + cfg.typstarAnkiCmd, + cwd, + cfg.typstCmd, + cfg.ankiUrl, + anki_key, + args + ) utils.run_shell_command(cmd, true) end -function M.scan() - run_typstar_anki('') -end +function M.scan() run_typstar_anki('') end -function M.scan_force() - run_typstar_anki('--force-scan ' .. vim.fn.getcwd()) -end +function M.scan_force() run_typstar_anki('--force-scan ' .. vim.fn.getcwd()) end -function M.scan_force_current() - run_typstar_anki('--force-scan ' .. vim.fn.expand('%:p')) -end +function M.scan_force_current() run_typstar_anki('--force-scan ' .. vim.fn.expand('%:p')) end return M diff --git a/lua/typstar/autosnippets.lua b/lua/typstar/autosnippets.lua index 9fe5c8b..45d5230 100644 --- a/lua/typstar/autosnippets.lua +++ b/lua/typstar/autosnippets.lua @@ -1,16 +1,14 @@ local M = {} local cfg = require('typstar.config').config.snippets -local utils = require('typstar.utils') local luasnip = require('luasnip') +local utils = require('typstar.utils') local fmta = require('luasnip.extras.fmt').fmta local lsengines = require('luasnip.nodes.util.trig_engines') local ts = vim.treesitter local last_keystroke_time = nil vim.api.nvim_create_autocmd('TextChangedI', { - callback = function() - last_keystroke_time = vim.loop.now() - end, + callback = function() last_keystroke_time = vim.loop.now() end, }) local lexical_result_cache = {} local ts_markup_query = ts.query.parse('typst', '(text) @markup') @@ -33,16 +31,13 @@ end function M.visual(idx, default) default = default or '' - return luasnip.dynamic_node( - idx, - function(args, parent) - if (#parent.snippet.env.LS_SELECT_RAW > 0) then - return luasnip.snippet_node(nil, luasnip.text_node(parent.snippet.env.LS_SELECT_RAW)) - else -- If LS_SELECT_RAW is empty, return an insert node - return luasnip.snippet_node(nil, luasnip.insert_node(1, default)) - end + return luasnip.dynamic_node(idx, function(args, parent) + if #parent.snippet.env.LS_SELECT_RAW > 0 then + return luasnip.snippet_node(nil, luasnip.text_node(parent.snippet.env.LS_SELECT_RAW)) + else -- If LS_SELECT_RAW is empty, return an insert node + return luasnip.snippet_node(nil, luasnip.insert_node(1, default)) end - ) + end) end function M.ri(insert_node_id) @@ -58,11 +53,11 @@ function M.snip(trigger, expand, insert, condition, priority, wordTrig) trigEngineOpts = { condition = condition }, wordTrig = wordTrig, priority = priority, - snippetType = 'autosnippet' + snippetType = 'autosnippet', }, fmta(expand, { unpack(insert) }), { - condition = function() return M.snippets_toggle end + condition = function() return M.snippets_toggle end, } ) end @@ -75,17 +70,13 @@ function M.engine(trigger, opts) local base_engine = lsengines.ecma(trigger, opts) local condition = function() local cached = lexical_result_cache[opts.condition] - if cached ~= nil and cached[1] == last_keystroke_time then - return cached[2] - end + if cached ~= nil and cached[1] == last_keystroke_time then return cached[2] end local result = opts.condition() lexical_result_cache[opts.condition] = { last_keystroke_time, result } return result end return function(line, trig) - if not M.snippets_toggle or not condition() then - return nil - end + if not M.snippets_toggle or not condition() then return nil end return base_engine(line, trig) end end @@ -99,15 +90,12 @@ function M.setup() if cfg.enable then local autosnippets = {} for _, file in ipairs(cfg.modules) do - vim.list_extend( - autosnippets, - require(('typstar.snippets.%s'):format(file)) - ) + vim.list_extend(autosnippets, require(('typstar.snippets.%s'):format(file))) end luasnip.add_snippets('typst', autosnippets) - local jsregexp_ok, _ = pcall(require, "luasnip-jsregexp") + local jsregexp_ok, _ = pcall(require, 'luasnip-jsregexp') if not jsregexp_ok then - jsregexp_ok, _ = pcall(require, "jsregexp") + jsregexp_ok, _ = pcall(require, 'jsregexp') end if not jsregexp_ok then vim.notify("WARNING: Most snippets won't work as jsregexp is not installed", vim.log.levels.WARN) diff --git a/lua/typstar/config.lua b/lua/typstar/config.lua index 7ee2401..9491850 100644 --- a/lua/typstar/config.lua +++ b/lua/typstar/config.lua @@ -24,14 +24,14 @@ local default_config = { 'matrix', 'markup', 'visual', - } + }, }, } function M.merge_config(args) M.config = vim.tbl_deep_extend('force', default_config, args or {}) - M.config.excalidraw.templatePath = M.config.excalidraw.templatePath or - { + M.config.excalidraw.templatePath = M.config.excalidraw.templatePath + or { ['%.excalidraw%.md$'] = M.config.typstarRoot .. '/res/excalidraw_template.excalidraw.md', } end diff --git a/lua/typstar/excalidraw.lua b/lua/typstar/excalidraw.lua index f714d9d..fb6a8ab 100644 --- a/lua/typstar/excalidraw.lua +++ b/lua/typstar/excalidraw.lua @@ -12,7 +12,8 @@ local affix = [[ local function launch_obsidian(path) print(string.format('Opening %s in Excalidraw', path)) utils.run_shell_command( - string.format('%s "obsidian://open?path=%s"', cfg.uriOpenCommand, utils.urlencode(path)), false + string.format('%s "obsidian://open?path=%s"', cfg.uriOpenCommand, utils.urlencode(path)), + false ) end @@ -22,9 +23,7 @@ function M.insert_drawing() local path = assets_dir .. '/' .. filename .. cfg.fileExtension local path_inserted = cfg.assetsDir .. '/' .. filename .. cfg.fileExtensionInserted - if vim.fn.isdirectory(assets_dir) == 0 then - vim.fn.mkdir(assets_dir, 'p') - end + if vim.fn.isdirectory(assets_dir) == 0 then vim.fn.mkdir(assets_dir, 'p') end local found_match = false for pattern, template_path in pairs(cfg.templatePath) do if string.match(path, pattern) then @@ -44,9 +43,10 @@ end function M.open_drawing() local line = vim.api.nvim_get_current_line() - local path = vim.fn.expand('%:p:h') .. - '/' .. string.match(line, '"(.*)' .. string.gsub(cfg.fileExtensionInserted, '%.', '%%%.')) .. - '.excalidraw.md' + local path = vim.fn.expand('%:p:h') + .. '/' + .. string.match(line, '"(.*)' .. string.gsub(cfg.fileExtensionInserted, '%.', '%%%.')) + .. '.excalidraw.md' launch_obsidian(path) end diff --git a/lua/typstar/snippets/letters.lua b/lua/typstar/snippets/letters.lua index dba0129..35908bf 100644 --- a/lua/typstar/snippets/letters.lua +++ b/lua/typstar/snippets/letters.lua @@ -8,7 +8,6 @@ local cap = helper.cap local math = helper.in_math local markup = helper.in_markup - local letter_snippets = {} local greek_letters_map = { ['a'] = 'alpha', @@ -42,9 +41,7 @@ local trigger_greek = '' local trigger_index_pre = '' local trigger_index_post = '' -local upper_first = function(str) - return str:sub(1, 1):upper() .. str:sub(2, -1) -end +local upper_first = function(str) return str:sub(1, 1):upper() .. str:sub(2, -1) end local greek_full = {} for latin, greek in pairs(greek_letters_map) do @@ -65,28 +62,33 @@ trigger_greek = table.concat(greek_keys, '|') trigger_index_pre = '[A-Za-z]' .. '|' .. table.concat(greek_letters, '|') trigger_index_post = table.concat(common_indices, '|') -local get_greek = function(_, snippet) - return s(nil, t(greek_letters_map[snippet.captures[1]])) -end +local get_greek = function(_, snippet) return s(nil, t(greek_letters_map[snippet.captures[1]])) end local get_index = function(_, snippet) local letter, index = snippet.captures[1], snippet.captures[2] local trigger = letter .. index - if index_conflicts_set[trigger] then - return s(nil, t(trigger)) - end + if index_conflicts_set[trigger] then return s(nil, t(trigger)) end return s(nil, t(letter .. '_' .. index)) end table.insert(letter_snippets, snip(':([A-Za-z0-9])', '$<>$ ', { cap(1) }, markup)) table.insert(letter_snippets, snip(';(' .. trigger_greek .. ')', '$<>$ ', { d(1, get_greek) }, markup)) table.insert(letter_snippets, snip(';(' .. trigger_greek .. ')', '<>', { d(1, get_greek) }, math)) -table.insert(letter_snippets, - snip('\\$(' .. trigger_index_pre .. ')\\$' .. '(' .. trigger_index_post .. ') ', - '$<>$ ', { d(1, get_index) }, markup, 500)) -table.insert(letter_snippets, - snip('(' .. trigger_index_pre .. ')' .. '(' .. trigger_index_post .. ') ', '<> ', { d(1, get_index) }, math, 200)) +table.insert( + letter_snippets, + snip( + '\\$(' .. trigger_index_pre .. ')\\$' .. '(' .. trigger_index_post .. ') ', + '$<>$ ', + { d(1, get_index) }, + markup, + 500 + ) +) +table.insert( + letter_snippets, + snip('(' .. trigger_index_pre .. ')' .. '(' .. trigger_index_post .. ') ', '<> ', { d(1, get_index) }, math, 200) +) return { - unpack(letter_snippets) + unpack(letter_snippets), } diff --git a/lua/typstar/snippets/markup.lua b/lua/typstar/snippets/markup.lua index 2daeb1e..79739cc 100644 --- a/lua/typstar/snippets/markup.lua +++ b/lua/typstar/snippets/markup.lua @@ -8,7 +8,6 @@ local visual = helper.visual local snip = helper.snip local start = helper.start_snip - local ctheorems = { { 'tem', 'theorem' }, { 'pro', 'proof' }, @@ -21,9 +20,9 @@ local ctheorems = { } local wrappings = { - { 'll', '$', '$', '1+1' }, - { 'BLD', '*', '*', 'abc' }, - { 'ITL', '_', '_', 'abc' }, + { 'll', '$', '$', '1+1' }, + { 'BLD', '*', '*', 'abc' }, + { 'ITL', '_', '_', 'abc' }, { 'HIG', '#highlight[', ']', 'abc' }, { 'UND', '#underline[', ']', 'abc' }, } @@ -44,8 +43,8 @@ end return { start('dm', '$\n<>\t<>\n<>$', { cap(1), visual(1), cap(1) }, markup), - start('fla', '#flashcard(0)[<>][\n<>\t<>\n<>]', { i(1, "flashcard"), cap(1), visual(2), cap(1) }, markup), - start('flA', '#flashcard(0, "<>")[\n<>\t<>\n<>]', { i(1, "flashcard"), cap(1), visual(2), cap(1) }, markup), + start('fla', '#flashcard(0)[<>][\n<>\t<>\n<>]', { i(1, 'flashcard'), cap(1), visual(2), cap(1) }, markup), + start('flA', '#flashcard(0, "<>")[\n<>\t<>\n<>]', { i(1, 'flashcard'), cap(1), visual(2), cap(1) }, markup), snip('IMP', '$=>>$ ', {}, markup), snip('IFF', '$<<=>>$ ', {}, markup), unpack(document_snippets), diff --git a/lua/typstar/snippets/matrix.lua b/lua/typstar/snippets/matrix.lua index 8c76aac..3724ccd 100644 --- a/lua/typstar/snippets/matrix.lua +++ b/lua/typstar/snippets/matrix.lua @@ -61,9 +61,7 @@ local lmat = function(_, sp) ins_indx = ins_indx + 1 for k = 2, cols do table.insert(nodes, t(', ')) - if k == cols then - table.insert(nodes, t('dots, ')) - end + if k == cols then table.insert(nodes, t('dots, ')) end if j == k then table.insert(nodes, r(ins_indx, tostring(j) .. 'x' .. tostring(k), i(1, '1'))) else diff --git a/lua/typstar/snippets/visual.lua b/lua/typstar/snippets/visual.lua index d821bcf..b588189 100644 --- a/lua/typstar/snippets/visual.lua +++ b/lua/typstar/snippets/visual.lua @@ -5,35 +5,35 @@ local i = ls.insert_node local s = ls.snippet_node local t = ls.text_node -local utils = require('typstar.utils') local helper = require('typstar.autosnippets') +local utils = require('typstar.utils') local math = helper.in_math local snip = helper.snip local snippets = {} -local operations = { -- first boolean: existing brackets should be kept; second boolean: brackets should be added - { 'vi', '1/', '', true, false }, - { 'bb', '(', ')', true, false }, -- add round brackets - { 'sq', '[', ']', true, false }, -- add square brackets - { 'bB', '(', ')', false, false }, -- replace with round brackets - { 'sQ', '[', ']', false, false }, -- replace with square brackets - { 'BB', '', '', false, false }, -- remove brackets - { 'ss', '"', '"', false, false }, - { 'abs', 'abs', '', true, true }, - { 'ul', 'underline', '', true, true }, - { 'ol', 'overline', '', true, true }, - { 'ub', 'underbrace', '', true, true }, - { 'ob', 'overbrace', '', true, true }, - { 'ht', 'hat', '', true, true }, - { 'br', 'macron', '', true, true }, - { 'dt', 'dot', '', true, true }, - { 'ci', 'circle', '', true, true }, - { 'td', 'tilde', '', true, true }, - { 'nr', 'norm', '', true, true }, - { 'vv', 'vec', '', true, true }, - { 'rt', 'sqrt', '', true, true }, - { 'flo', 'floor', '', true, true }, - { 'cei', 'ceil', '', true, true }, +local operations = { -- first boolean: existing brackets should be kept; second boolean: brackets should be added + { 'vi', '1/', '', true, false }, + { 'bb', '(', ')', true, false }, -- add round brackets + { 'sq', '[', ']', true, false }, -- add square brackets + { 'bB', '(', ')', false, false }, -- replace with round brackets + { 'sQ', '[', ']', false, false }, -- replace with square brackets + { 'BB', '', '', false, false }, -- remove brackets + { 'ss', '"', '"', false, false }, + { 'abs', 'abs', '', true, true }, + { 'ul', 'underline', '', true, true }, + { 'ol', 'overline', '', true, true }, + { 'ub', 'underbrace', '', true, true }, + { 'ob', 'overbrace', '', true, true }, + { 'ht', 'hat', '', true, true }, + { 'br', 'macron', '', true, true }, + { 'dt', 'dot', '', true, true }, + { 'ci', 'circle', '', true, true }, + { 'td', 'tilde', '', true, true }, + { 'nr', 'norm', '', true, true }, + { 'vv', 'vec', '', true, true }, + { 'rt', 'sqrt', '', true, true }, + { 'flo', 'floor', '', true, true }, + { 'cei', 'ceil', '', true, true }, } local ts_wrap_query = ts.query.parse('typst', '[(call) (ident) (letter) (number)] @wrap') @@ -46,16 +46,11 @@ local process_ts_query = function(bufnr, cursor, query, root, insert1, insert2, if end_row == cursor[1] and end_col == cursor[2] then vim.schedule(function() -- to not interfere with luasnip local cursor_offset = 0 - local old_len1, new_len1 = utils.insert_text( - bufnr, start_row, start_col, insert1, 0, cut_offset) - if start_row == cursor[1] then - cursor_offset = cursor_offset + (new_len1 - old_len1) - end - local old_len2, new_len2 = utils.insert_text( - bufnr, end_row, cursor[2] + cursor_offset, insert2, cut_offset, 0) - if end_row == cursor[1] then - cursor_offset = cursor_offset + (new_len2 - old_len2) - end + local old_len1, new_len1 = utils.insert_text(bufnr, start_row, start_col, insert1, 0, cut_offset) + if start_row == cursor[1] then cursor_offset = cursor_offset + (new_len1 - old_len1) end + local old_len2, new_len2 = + utils.insert_text(bufnr, end_row, cursor[2] + cursor_offset, insert2, cut_offset, 0) + if end_row == cursor[1] then cursor_offset = cursor_offset + (new_len2 - old_len2) end vim.api.nvim_win_set_cursor(0, { cursor[1] + 1, cursor[2] + cursor_offset }) end) return true @@ -76,9 +71,7 @@ local smart_wrap = function(args, parent, old_state, expand) local expand1 = expand[5] and expand[2] .. '(' or expand[2] local expand2 = expand[5] and expand[3] .. ')' or expand[3] - if process_ts_query(bufnr, cursor, ts_wrap_query, root, expand1, expand2) then - return s(nil, t()) - end + if process_ts_query(bufnr, cursor, ts_wrap_query, root, expand1, expand2) then return s(nil, t()) end if #parent.env.LS_SELECT_RAW > 0 then return s(nil, t(expand1 .. table.concat(parent.env.LS_SELECT_RAW) .. expand2)) end @@ -90,5 +83,5 @@ for _, val in pairs(operations) do end return { - unpack(snippets) + unpack(snippets), } diff --git a/lua/typstar/utils.lua b/lua/typstar/utils.lua index 6093ca3..4118d7c 100644 --- a/lua/typstar/utils.lua +++ b/lua/typstar/utils.lua @@ -20,7 +20,7 @@ end function M.insert_text_block(snip) local line_num = M.get_cursor_pos()[1] + 1 local lines = {} - for line in snip:gmatch '[^\r\n]+' do + for line in snip:gmatch('[^\r\n]+') do table.insert(lines, line) end vim.api.nvim_buf_set_lines(vim.api.nvim_get_current_buf(), line_num, line_num, false, lines) @@ -35,45 +35,32 @@ function M.run_shell_command(cmd, show_output) end end if show_output then - vim.fn.jobstart( - cmd, - { - on_stdout = function(_, data, _) - handle_output(data, false) - end, - on_stderr = function(_, data, _) - handle_output(data, true) - end, - stdout_buffered = false, - stderr_buffered = true, - } - ) + vim.fn.jobstart(cmd, { + on_stdout = function(_, data, _) handle_output(data, false) end, + on_stderr = function(_, data, _) handle_output(data, true) end, + stdout_buffered = false, + stderr_buffered = true, + }) else vim.fn.jobstart(cmd) end end -function M.char_to_hex(c) - return string.format("%%%02X", string.byte(c)) -end +function M.char_to_hex(c) return string.format('%%%02X', string.byte(c)) end function M.urlencode(url) - if url == nil then - return '' - end + if url == nil then return '' end url = string.gsub(url, '\n', '\r\n') url = string.gsub(url, '([^%w _%%%-%.~])', M.char_to_hex) url = string.gsub(url, ' ', '%%20') return url end -function M.get_treesitter_root(bufnr) - return ts.get_parser(bufnr):parse()[1]:root() -end +function M.get_treesitter_root(bufnr) return ts.get_parser(bufnr):parse()[1]:root() end function M.treesitter_match_start_end(match) local start_row, start_col, _, _ = match[1]:range() - local _, _, end_row, end_col = match[#match]:range() + local _, _, end_row, end_col = match[#match]:range() return start_row, start_col, end_row, end_col end @@ -83,11 +70,8 @@ function M.cursor_within_treesitter_query(query, match_tolerance, cursor) for _, match, _ in query:iter_matches(M.get_treesitter_root(bufnr), bufnr, cursor[1], cursor[1] + 1) do if match then local start_row, start_col, end_row, end_col = M.treesitter_match_start_end(match) - local matched = M.cursor_within_coords(cursor, start_row, end_row, start_col, end_col, - match_tolerance) - if matched then - return true - end + local matched = M.cursor_within_coords(cursor, start_row, end_row, start_col, end_col, match_tolerance) + if matched then return true end end end return false