github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/mods/store/store.go (about) 1 package store 2 3 import ( 4 "github.com/markusbkk/elvish/pkg/eval" 5 "github.com/markusbkk/elvish/pkg/store/storedefs" 6 ) 7 8 //elvdoc:fn next-cmd-seq 9 // 10 // ```elvish 11 // store:next-cmd-seq 12 // ``` 13 // 14 // Outputs the sequence number that will be used for the next entry of the 15 // command history. 16 17 //elvdoc:fn add-cmd 18 // 19 // ```elvish 20 // store:add-cmd $text 21 // ``` 22 // 23 // Adds an entry to the command history with the given content. Outputs its 24 // sequence number. 25 26 //elvdoc:fn del-cmd 27 // 28 // ```elvish 29 // store:del-cmd $seq 30 // ``` 31 // 32 // Deletes the command history entry with the given sequence number. 33 // 34 // **NOTE**: This command only deletes the entry from the persistent store. When 35 // deleting an entry that was added in the current session, the deletion will 36 // not take effect for the current session, since the entry still exists in the 37 // in-memory per-session history. 38 39 //elvdoc:fn cmd 40 // 41 // ```elvish 42 // store:cmd $seq 43 // ``` 44 // 45 // Outputs the content of the command history entry with the given sequence 46 // number. 47 48 //elvdoc:fn cmds 49 // 50 // ```elvish 51 // store:cmds $from $upto 52 // ``` 53 // 54 // Outputs all command history entries with sequence numbers between `$from` 55 // (inclusive) and `$upto` (exclusive). Use -1 for `$upto` to not set an upper 56 // bound. 57 // 58 // Each entry is represented by a pseudo-map with fields `text` and `seq`. 59 60 //elvdoc:fn add-dir 61 // 62 // ```elvish 63 // store:add-dir $path 64 // ``` 65 // 66 // Adds a path to the directory history. This will also cause the scores of all 67 // other directories to decrease. 68 69 //elvdoc:fn del-dir 70 // 71 // ```elvish 72 // store:del-dir $path 73 // ``` 74 // 75 // Deletes a path from the directory history. This has no impact on the scores 76 // of other directories. 77 78 //elvdoc:fn dirs 79 // 80 // ```elvish 81 // store:dirs 82 // ``` 83 // 84 // Outputs all directory history entries, in decreasing order of score. 85 // 86 // Each entry is represented by a pseudo-map with fields `path` and `score`. 87 88 //elvdoc:fn shared-var 89 // 90 // ```elvish 91 // store:shared-var $name 92 // ``` 93 // 94 // Outputs the value of the shared variable with the given name. Throws an error 95 // if the shared variable doesn't exist. 96 97 //elvdoc:fn set-shared-var 98 // 99 // ```elvish 100 // store:set-shared-var $name $value 101 // ``` 102 // 103 // Sets the value of the shared variable with the given name, creating it if it 104 // doesn't exist. The value must be a string. 105 106 //elvdoc:fn del-shared-var 107 // 108 // ```elvish 109 // store:del-shared-var $name 110 // ``` 111 // 112 // Deletes the shared variable with the given name. 113 114 func Ns(s storedefs.Store) *eval.Ns { 115 return eval.BuildNsNamed("store"). 116 AddGoFns(map[string]interface{}{ 117 "next-cmd-seq": s.NextCmdSeq, 118 "add-cmd": s.AddCmd, 119 "del-cmd": s.DelCmd, 120 "cmd": s.Cmd, 121 "cmds": s.CmdsWithSeq, 122 "next-cmd": s.NextCmd, 123 "prev-cmd": s.PrevCmd, 124 125 "add-dir": func(dir string) error { return s.AddDir(dir, 1) }, 126 "del-dir": s.DelDir, 127 "dirs": func() ([]storedefs.Dir, error) { return s.Dirs(storedefs.NoBlacklist) }, 128 129 "shared-var": s.SharedVar, 130 "set-shared-var": s.SetSharedVar, 131 "del-shared-var": s.DelSharedVar, 132 }).Ns() 133 }