Skip to content

Commit

Permalink
feat: add abbreviations
Browse files Browse the repository at this point in the history
  • Loading branch information
TorchedSammy committed Dec 30, 2024
1 parent 4743222 commit 800a118
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 0 deletions.
19 changes: 19 additions & 0 deletions editor.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ func editorLoader(rtm *rt.Runtime) *rt.Table {
"getVimRegister": {editorGetRegister, 2, false},
"getLine": {editorGetLine, 0, false},
"readChar": {editorReadChar, 0, false},
"deleteByAmount": {editorDeleteByAmount, 1, false},
}

mod := rt.NewTable()
Expand Down Expand Up @@ -106,3 +107,21 @@ func editorReadChar(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {

return c.PushingNext1(t.Runtime, rt.StringValue(string(buf))), nil
}

// #interface editor
// deleteByAmount() -> string
// Reads a keystroke from the user. This is in a format of something like Ctrl-L.
func editorDeleteByAmount(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {
if err := c.Check1Arg(); err != nil {
return nil, err
}

amount, err := c.IntArg(0)
if err != nil {
return nil, err
}

lr.rl.DeleteByAmount(int(amount))

return c.Next(), nil
}
35 changes: 35 additions & 0 deletions nature/abbr.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
local bait = require 'bait'
local hilbish = require 'hilbish'
hilbish.abbr = {
_abbrevs = {}
}

function hilbish.abbr.add(opts)
hilbish.abbr._abbrevs[opts.abbr] = opts
end

print 'abbr loaded'
hilbish.abbr.add {
abbr = 'tt',
expand = 'echo titties'
}

hilbish.abbr.add {
abbr = 'idk',
expand = 'i dont know',
anywhere = true
}

bait.catch('hilbish.rawInput', function(c)
if c == ' ' then -- space
-- check if the last "word" was a valid abbreviation
local line = hilbish.editor.getLine()
local lineSplits = string.split(line, ' ')
local thisAbbr = hilbish.abbr._abbrevs[lineSplits[#lineSplits]]

if thisAbbr and (#lineSplits == 1 or thisAbbr.anywhere == true) then
hilbish.editor.deleteByAmount(-lineSplits[#lineSplits]:len())
hilbish.editor.insert(thisAbbr.expand)
end
end
end)
1 change: 1 addition & 0 deletions nature/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ require 'nature.opts'
require 'nature.vim'
require 'nature.runner'
require 'nature.hummingbird'
require 'nature.abbr'

local shlvl = tonumber(os.getenv 'SHLVL')
if shlvl ~= nil then
Expand Down
4 changes: 4 additions & 0 deletions readline/vimdelete.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,10 @@ func (rl *Instance) viDeleteByAdjust(adjust int) {
rl.updateHelpers()
}

func (rl *Instance) DeleteByAmount(adjust int) {
rl.viDeleteByAdjust(adjust)
}

func (rl *Instance) vimDeleteToken(r rune) bool {
tokens, _, _ := tokeniseSplitSpaces(rl.line, 0)
pos := int(r) - 48 // convert ASCII to integer
Expand Down

0 comments on commit 800a118

Please sign in to comment.