mirror of https://github.com/Hilbis/Hilbish
feat: add abbreviations
parent
4743222044
commit
800a1184a2
19
editor.go
19
editor.go
|
@ -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()
|
||||
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue