mirror of https://github.com/Hilbis/Hilbish
feat: add method for deleting history
parent
3d0fffd49a
commit
72d7c4b8ab
16
history.go
16
history.go
|
@ -12,6 +12,14 @@ import (
|
|||
|
||||
type luaHistory struct {}
|
||||
|
||||
|
||||
func (h *luaHistory) Delete(idx int) error {
|
||||
histWrite := hshMod.Get(rt.StringValue("history")).AsTable().Get(rt.StringValue("delete"))
|
||||
_, err := rt.Call1(l.MainThread(), histWrite, rt.IntValue(int64(idx)))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func (h *luaHistory) Write(line string) (int, error) {
|
||||
histWrite := hshMod.Get(rt.StringValue("history")).AsTable().Get(rt.StringValue("add"))
|
||||
ln, err := rt.Call1(l.MainThread(), histWrite, rt.StringValue(line))
|
||||
|
@ -109,6 +117,14 @@ func (h *fileHistory) Write(line string) (int, error) {
|
|||
return len(h.items), nil
|
||||
}
|
||||
|
||||
func (h *fileHistory) Delete(idx int) error {
|
||||
h.items[idx] = ""
|
||||
h.f.WriteAt([]byte(strings.Join(h.items, "\n")), 0)
|
||||
h.f.Sync()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *fileHistory) GetLine(idx int) (string, error) {
|
||||
if len(h.items) == 0 {
|
||||
return "", nil
|
||||
|
|
|
@ -13,6 +13,9 @@ type History interface {
|
|||
// Append takes the line and returns an updated number of lines or an error
|
||||
Write(string) (int, error)
|
||||
|
||||
// Delete removes an entry from the history based on the index.
|
||||
Delete(int) error
|
||||
|
||||
// GetLine takes the historic line number and returns the line or an error
|
||||
GetLine(int) (string, error)
|
||||
|
||||
|
@ -61,6 +64,10 @@ func (h *ExampleHistory) Write(s string) (int, error) {
|
|||
return len(h.items), nil
|
||||
}
|
||||
|
||||
func (h *ExampleHistory) Delete(idx int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetLine returns a line from history
|
||||
func (h *ExampleHistory) GetLine(i int) (string, error) {
|
||||
return h.items[i], nil
|
||||
|
@ -85,6 +92,10 @@ func (h *NullHistory) Write(s string) (int, error) {
|
|||
return 0, nil
|
||||
}
|
||||
|
||||
func (h *NullHistory) Delete(idx int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetLine returns a line from history
|
||||
func (h *NullHistory) GetLine(i int) (string, error) {
|
||||
return "", nil
|
||||
|
|
|
@ -837,6 +837,15 @@ func (rl *Instance) escapeSeq(r []rune) {
|
|||
rl.updateHelpers()
|
||||
|
||||
case seqCtrlDelete, seqCtrlDelete2, seqAltD:
|
||||
if rl.searchMode == HistoryFind {
|
||||
fmt.Println("\nCURRENT COMP\n", string(rl.lineComp), "\n\n\n")
|
||||
rl.resetVirtualComp(true)
|
||||
|
||||
rl.renderHelpers()
|
||||
rl.viUndoSkipAppend = true
|
||||
return
|
||||
}
|
||||
|
||||
if rl.modeTabCompletion {
|
||||
rl.resetVirtualComp(false)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue