Skip to content

Commit

Permalink
feat: re-introduce abolish/abbreviations setup using autocmds
Browse files Browse the repository at this point in the history
  • Loading branch information
mike325 committed Aug 26, 2024
1 parent 78748e7 commit efccdf9
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 148 deletions.
3 changes: 3 additions & 0 deletions after/ftplugin/python.lua
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ require('utils.buffers').setup(ft, {
})

vim.keymap.set('ia', 'false', 'False', { buffer = true })
vim.keymap.set('ia', 'flase', 'False', { buffer = true })
vim.keymap.set('ia', 'Flase', 'False', { buffer = true })

vim.keymap.set('ia', 'true', 'True', { buffer = true })
178 changes: 94 additions & 84 deletions lua/configs/abolish.lua
Original file line number Diff line number Diff line change
@@ -1,87 +1,97 @@
local abolish = {}

-- stylua: ignore
abolish['en'] = {
['flase'] = 'false',
['syntaxis'] = 'syntax',
['developement'] = 'development',
['identation'] = 'indentation',
['aligment'] = 'aliment',
['posible'] = 'possible',
['reproducable'] = 'reproducible',
['retreive'] = 'retrieve',
['compeletly'] = 'completely',
['movil'] = 'mobil',
['pro{j,y}ect{o}'] = 'project',
['imr{pov,pvo}e'] = 'improve',
['enviroment{,s}'] = 'environment{}',
['sustition{,s}'] = 'substitution{}',
['sustitution{,s}'] = 'substitution{}',
['aibbreviation{,s}'] = 'abbreviation{}',
['abbrevation{,s}'] = 'abbreviation{}',
['avalib{ility,le}'] = 'availab{ility,le}',
['seting{,s}'] = 'setting{}',
['settign{,s}'] = 'setting{}',
['subtitution{,s}'] = 'substitution{}',
['{despa,sepe}rat{e,es,ed}'] = '{despe,sepa}rat{}',
['{despa,sepe}rat{ing,ely,ion,ions,or}'] = '{despe,sepa}rat{}',
['{,in}consistant{,ly}'] = '{}consistent{}',
['lan{gauge,gue,guege}'] = 'language',
['lan{guegae,ague,agueg}'] = 'language',
['delimeter{,s}'] = 'delimiter{}',
['{,non}existan{ce,t}'] = '{}existen{}',
['d{e,i}screp{e,a}nc{y,ies}'] = 'd{i}screp{a}nc{}',
['{,un}nec{ce,ces,e}sar{y,ily}'] = '{}nec{es}sar{}',
['persistan{ce,t,tly}'] = 'persisten{}',
['{,ir}releven{ce,cy,t,tly}'] = '{}relevan{}',
['cal{a,e}nder{,s}'] = 'cal{e}ndar{}'
}

-- stylua: ignore
abolish['es'] = {
['analisis'] = 'análisis',
['artifial'] = 'artificial',
['conexion'] = 'conexión',
['autonomo'] = 'autónomo',
['codigo'] = 'código',
['teoricas'] = 'teóricas',
['disminicion'] = 'disminución',
['adminstracion'] = 'administración',
['relacion'] = 'relación',
['minimo'] = 'mínimo',
['area'] = 'área',
['imagenes'] = 'imágenes',
['arificiales'] = 'artificiales',
['actuan'] = 'actúan',
['basicamente'] = 'básicamente',
['acuardo'] = 'acuerdo',
['carateristicas'] = 'características',
['ademas'] = 'además',
['asi'] = 'así',
['siguente'] = 'siguiente',
['automatico'] = 'automático',
['algun'] = 'algún',
['dia{,s}'] = 'día{}',
['pre{sici,cisi}on'] = 'precisión',
['pro{j,y}ect{o}'] = 'proyecto',
['logic{as,o,os}'] = 'lógic{}',
['{h,f}ernandez'] = '{}ernández',
['electronico{,s}'] = 'electrónico{}',
['algorimo{,s}'] = 'algoritmo{}',
['podria{,n,s}'] = 'podría{}',
['metodologia{,s}'] = 'metodología{}',
['{bibliogra}fia'] = '{}fía',
['{reflexi}on'] = '{}ón',
['mo{b,v}il'] = 'móvil',
['{televi,explo}sion'] = '{}sión',
['{reac,disminu,interac}cion'] = '{}ción',
['{clasifica,crea,notifica}cion'] = '{}ción',
['{introduc,justifi}cion'] = '{}ción',
['{obten,ora,emo,valora}cion'] = '{}ción',
['{utilizap,modifica,sec}cion'] = '{}ción',
['{delimita,informa}cion'] = '{}ción',
['{fun,administra,aplica}cion'] = '{}ción',
['{rala,aproxima,programa}cion'] = '{}ción',
local abolish = {
en = {
flase = 'false',
syntaxis = 'syntax',
developement = 'development',
identation = 'indentation',
aligment = 'aliment',
posible = 'possible',
reproducable = 'reproducible',
retreive = 'retrieve',
compeletly = 'completely',
movil = 'mobil',
abbrebation = 'abbreviation',
abbrebations = 'abbreviations',
enviroment = 'environment',
enviroments = 'environments',
sustition = 'substitution',
sustitions = 'substitutions',
sustitution = 'substitution',
sustitutions = 'substitutions',
aibbreviation = 'abbreviation',
aibbreviations = 'abbreviations',
abbrevation = 'abbreviation',
abbrevations = 'abbreviations',
seting = 'setting',
setings = 'settings',
settign = 'setting',
settigns = 'settings',
subtitution = 'substitution',
subtitutions = 'substitutions',
['pro{j,y}ect{o}'] = 'project',
['imr{pov,pvo}e'] = 'improve',
['avalib{ility,le}'] = 'availab{ility,le}',
['{despa,sepe}rat{e,es,ed}'] = '{despe,sepa}rat{}',
['{despa,sepe}rat{ing,ely,ion,ions,or}'] = '{despe,sepa}rat{}',
['{,in}consistant{,ly}'] = '{}consistent{}',
['lan{gauge,gue,guege}'] = 'language',
['lan{guegae,ague,agueg}'] = 'language',
['delimeter{,s}'] = 'delimiter{}',
['{,non}existan{ce,t}'] = '{}existen{}',
['d{e,i}screp{e,a}nc{y,ies}'] = 'd{i}screp{a}nc{}',
['{,un}nec{ce,ces,e}sar{y,ily}'] = '{}nec{es}sar{}',
['persistan{ce,t,tly}'] = 'persisten{}',
['{,ir}releven{ce,cy,t,tly}'] = '{}relevan{}',
['cal{a,e}nder{,s}'] = 'cal{e}ndar{}',
},
es = {
analisis = 'análisis',
artifial = 'artificial',
conexion = 'conexión',
autonomo = 'autónomo',
codigo = 'código',
teoricas = 'teóricas',
disminicion = 'disminución',
adminstracion = 'administración',
relacion = 'relación',
minimo = 'mínimo',
area = 'área',
imagenes = 'imágenes',
arificiales = 'artificiales',
actuan = 'actúan',
basicamente = 'básicamente',
acuardo = 'acuerdo',
carateristicas = 'características',
ademas = 'además',
asi = 'así',
siguente = 'siguiente',
automatico = 'automático',
algun = 'algún',
dia = 'día',
dias = 'días',
electronico = 'electrónico',
electronicos = 'electrónicos',
algorimo = 'algoritmo',
algorimos = 'algoritmos',
['pre{sici,cisi}on'] = 'precisión',
['pro{j,y}ect{o}'] = 'proyecto',
['logic{as,o,os}'] = 'lógic{}',
['{h,f}ernandez'] = '{}ernández',
['podria{,n,s}'] = 'podría{}',
['metodologia{,s}'] = 'metodología{}',
['{bibliogra}fia'] = '{}fía',
['{reflexi}on'] = '{}ón',
['mo{b,v}il'] = 'móvil',
['{televi,explo}sion'] = '{}sión',
['{reac,disminu,interac}cion'] = '{}ción',
['{clasifica,crea,notifica}cion'] = '{}ción',
['{introduc,justifi}cion'] = '{}ción',
['{obten,ora,emo,valora}cion'] = '{}ción',
['{utilizap,modifica,sec}cion'] = '{}ción',
['{delimita,informa}cion'] = '{}ción',
['{fun,administra,aplica}cion'] = '{}ción',
['{rala,aproxima,programa}cion'] = '{}ción',
},
}

return {
Expand Down
18 changes: 18 additions & 0 deletions lua/configs/autocmds.lua
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,24 @@ vim.api.nvim_create_autocmd({ 'TermOpen' }, {
end,
})

local abbreviations = vim.api.nvim_create_augroup('Abbreviations', { clear = true })
vim.api.nvim_create_autocmd({ 'OptionSet' }, {
pattern = 'spelllang',
desc = 'Set abbreviations',
group = abbreviations,
callback = function()
RELOAD('utils.functions').set_abbrs(vim.v.option_old, vim.v.option_new)
end,
})
vim.api.nvim_create_autocmd({ 'VimEnter', 'BufReadPost' }, {
pattern = '*',
desc = 'Set abbreviations',
group = abbreviations,
callback = function()
RELOAD('utils.functions').set_abbrs('', 'en')
end,
})

vim.api.nvim_create_autocmd({ 'VimResized' }, {
desc = 'Auto rezise windows to equalize sizes',
group = vim.api.nvim_create_augroup('AutoResize', { clear = true }),
Expand Down
3 changes: 3 additions & 0 deletions lua/nvim/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,9 @@ local nvim = {
end,
}),
has = setmetatable({
cmd = function(cmd)
return vim.api.nvim_call_function('exists', { ':' .. cmd }) == 2
end,
command = function(command)
return vim.api.nvim_call_function('exists', { ':' .. command }) == 2
end,
Expand Down
87 changes: 23 additions & 64 deletions lua/utils/functions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -761,87 +761,46 @@ end

function M.spelllangs(lang)
if lang and lang ~= '' then
M.abolish(lang)
vim.bo.spelllang = lang
end
vim.print(vim.bo.spelllang)
end

function M.get_abbrs(language)
return require('configs.abolish').abolish[language]
end

function M.abolish(language)
local current = vim.bo.spelllang
local set_abbr = require('nvim.abbrs').set_abbr
local abolish = require('configs.abolish').abolish
function M.set_abbrs(old_lang, new_lang)
if old_lang == new_lang or vim.bo.spelllang ~= new_lang then
return
end
local abolish = RELOAD('configs.abolish').abolish
local capitalize = require('utils.strings').capitalize

if nvim.has.cmd 'Abolish' then
if abolish[current] ~= nil then
for base, _ in pairs(abolish[current]) do
if abolish[old_lang] ~= nil then
for base, _ in pairs(abolish[old_lang]) do
vim.cmd.Abolish { args = { '-delete', '-buffer', base } }
end
end
if abolish[language] ~= nil then
for base, replace in pairs(abolish[language]) do
if abolish[new_lang] ~= nil then
for base, replace in pairs(abolish[new_lang]) do
vim.cmd.Abolish { args = { '-buffer', base, replace } }
end
end
else
local function remove_abbr(base)
set_abbr {
mode = 'i',
lhs = base,
args = { silent = true, buffer = true },
}

set_abbr {
mode = 'i',
lhs = base:upper(),
args = { silent = true, buffer = true },
}

set_abbr {
mode = 'i',
lhs = base:gsub('%a', string.upper, 1),
args = { silent = true, buffer = true },
}
end

local function change_abbr(base, replace)
set_abbr {
mode = 'i',
lhs = base,
rhs = replace,
args = { buffer = true },
}

set_abbr {
mode = 'i',
lhs = base:upper(),
rhs = replace:upper(),
args = { buffer = true },
}

set_abbr {
mode = 'i',
lhs = base:gsub('%a', string.upper, 1),
rhs = replace:gsub('%a', string.upper, 1),
args = { buffer = true },
}
end

if abolish[current] ~= nil then
for base, _ in pairs(abolish[current]) do
if not string.match(base, '{.+}') then
remove_abbr(base)
if abolish[old_lang] ~= nil then
for base, _ in pairs(abolish[old_lang]) do
-- TODO: Use abolish transformations
if not base:match '%{' then
pcall(vim.keymap.del, 'ia', base, { buffer = true })
pcall(vim.keymap.del, 'ia', base:upper(), { buffer = true })
pcall(vim.keymap.del, 'ia', capitalize(base), { buffer = true })
end
end
end
if abolish[language] ~= nil then
for base, replace in pairs(abolish[language]) do
if not string.match(base, '{.+}') then
change_abbr(base, replace)
if abolish[new_lang] ~= nil then
for base, replace in pairs(abolish[new_lang]) do
if not base:match '%{' and not replace:match '%{' then
vim.keymap.set('ia', base, replace, { buffer = true })
vim.keymap.set('ia', base:upper(), replace:upper(), { buffer = true })
vim.keymap.set('ia', capitalize(base), capitalize(replace), { buffer = true })
end
end
end
Expand Down

0 comments on commit efccdf9

Please sign in to comment.