local M = {} local pickers = require "telescope.pickers" local finders = require "telescope.finders" local conf = require("telescope.config").values local actions = require "telescope.actions" local action_state = require "telescope.actions.state" local previewers = require "telescope.previewers" local utils = require "telescope.utils" local add_abbreviations = false local unicodeChars = { nats = "ℕ", rationals = "ℚ", reals = "ℝ", integers = "ℤ", forall = "∀", lambda = "λ", arrow = "→", compose = "∘", inverse = "⁻¹", dots = "…", alpha = "ɑ", beta = "β", pi = "π", Pi = 'Π', sigma = "σ", Sigma = "Σ", tau = "τ", theta = "θ", gamma = "γ", Gamma = "Γ", context = "Γ" } -- our picker function for unicode chars function M.picker(opts) opts = opts or {} local results = {} for key, value in pairs(unicodeChars) do -- Name: char pair table.insert(results, { key, value }) end print(results) pickers.new(opts, { prompt_title = "Unicode characters", finder = finders.new_table { results = results, entry_maker = function(entry) return { value = entry, display = entry[1], ordinal = entry[1] } end }, sorter = conf.generic_sorter(opts), previewer = previewers.new { preview_fn = function(_, entry) return entry.value[2] end }, attach_mappings = function(prompt_bufnr) actions.select_default:replace(function() actions.close(prompt_bufnr) local selection = action_state.get_selected_entry() if selection == nil then utils.__warn_no_selection "my.abbreviations" return end vim.api.nvim_put({ selection.value[2] }, "", false, true) vim.cmd("startinsert") end) return true end }):find() end function M.setupAbbreviations(prefix, ending) prefix = prefix or "" ending = ending or "" if not add_abbreviations then return end local abbreviate = require("my.abbreviations").abbr for key, value in pairs(unicodeChars) do -- By default abbreviations are triggered using "_" abbreviate(prefix .. key .. ending, value) end end return M