eliminate ui pkg
This commit is contained in:
parent
5365c19720
commit
fda140439c
|
|
@ -1,87 +0,0 @@
|
|||
package ui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
a "9fans.net/go/acme"
|
||||
)
|
||||
|
||||
type Window = a.Win
|
||||
|
||||
// WindowOpen shows the window with a given name if it exists,
|
||||
// otherwise creates it
|
||||
func WindowOpen(name string) (*a.Win, error) {
|
||||
if w := a.Show(name); w != nil {
|
||||
return w, nil
|
||||
}
|
||||
w, err := a.New()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to open prompt window: %w", err)
|
||||
}
|
||||
|
||||
if err := w.Name(name); err != nil {
|
||||
w.Del(true)
|
||||
return nil, fmt.Errorf("failed to set prompt window name: %w", err)
|
||||
}
|
||||
return w, nil
|
||||
}
|
||||
|
||||
// WindowDirty marks the window as "dirty"
|
||||
// (dirty=true) or "clean" (dirty=false).
|
||||
func WindowDirty(w *a.Win, dirty bool) {
|
||||
if dirty {
|
||||
w.Ctl("dirty")
|
||||
} else {
|
||||
w.Ctl("clean")
|
||||
}
|
||||
}
|
||||
|
||||
// DotToAddr positions the cursor in a window to the given addr.
|
||||
// addr follows the ':' in a fileaddr (e.g., '$', '#0', '<linenum>',
|
||||
// '<range>')
|
||||
func DotToAddr(w *a.Win, addr string) {
|
||||
w.Addr(addr)
|
||||
w.Ctl("dot=addr")
|
||||
w.Ctl("show")
|
||||
}
|
||||
|
||||
// WindowClear clears a window's contents
|
||||
func WindowClear(w *a.Win) {
|
||||
w.Clear()
|
||||
}
|
||||
|
||||
// TagSet sets the tag of the window with the given name.
|
||||
func TagSet(w *a.Win, tag string) error {
|
||||
if _, err := w.Write("tag", []byte(tag)); err != nil {
|
||||
w.Del(true)
|
||||
return fmt.Errorf("failed to set tag: %w", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// BodyWrite writes the bytes s to the window body at address addr.
|
||||
// addr is what follows the ":" in a file address, e.g., "$" for EOF,
|
||||
// "1" for BOF, "," for the full file, "1,20" for lines 1-20.
|
||||
func BodyWrite(w *a.Win, addr string, s []byte) error {
|
||||
if err := w.Addr(addr); err != nil {
|
||||
return fmt.Errorf("failed to seek to end of body: %w", err)
|
||||
}
|
||||
|
||||
_, err := w.Write("data", s)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to append data: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// BodyRead reads the full contents from the window of
|
||||
// the given name.
|
||||
func BodyRead(w *a.Win) ([]byte, error) {
|
||||
data, err := w.ReadAll("body")
|
||||
if err != nil {
|
||||
return []byte(""), fmt.Errorf("failed to read from window: %w", err)
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
65
main.go
65
main.go
|
|
@ -4,7 +4,6 @@ import (
|
|||
"denote/internal/fs"
|
||||
"denote/internal/sync"
|
||||
"denote/internal/tmpl"
|
||||
"denote/internal/ui"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
|
|
@ -359,7 +358,7 @@ func handleDeleteEvent(identifier string) error {
|
|||
|
||||
func main() {
|
||||
var err error
|
||||
var w *ui.Window
|
||||
var w *acme.Win
|
||||
args := os.Args[1:]
|
||||
if len(args) == 1 {
|
||||
if identifier, ok := strings.CutPrefix(args[0], "denote:"); ok {
|
||||
|
|
@ -394,13 +393,20 @@ func main() {
|
|||
go sync.WatchAcmeLog()
|
||||
|
||||
// open window
|
||||
if w, err = ui.WindowOpen(wname); err != nil {
|
||||
log.Fatal(err)
|
||||
if w = acme.Show(wname); w == nil {
|
||||
if w, err = acme.New(); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if err = w.Name(wname); err != nil {
|
||||
w.Del(true)
|
||||
log.Fatal(fmt.Errorf("failed to set window name: %w", err))
|
||||
}
|
||||
}
|
||||
defer w.CloseFiles()
|
||||
|
||||
if err = ui.TagSet(w, "New Put Remove Reset Sync"); err != nil {
|
||||
log.Fatal(err)
|
||||
if _, err = w.Write("tag", []byte("New Put Remove Reset Sync")); err != nil {
|
||||
w.Del(true)
|
||||
log.Fatal(fmt.Errorf("failed to set tag: %w", err))
|
||||
}
|
||||
|
||||
// get initial results (clear any filter, read index)
|
||||
|
|
@ -452,8 +458,10 @@ func main() {
|
|||
}
|
||||
}()
|
||||
|
||||
ui.WindowDirty(w, false)
|
||||
ui.DotToAddr(w, "#0")
|
||||
w.Ctl("clean")
|
||||
w.Addr("#0")
|
||||
w.Ctl("dot=addr")
|
||||
w.Ctl("show")
|
||||
|
||||
// event loop
|
||||
for e := range w.EventChan() {
|
||||
|
|
@ -503,21 +511,35 @@ func main() {
|
|||
fullPath, content := generateNotePath(denoteDir, title, tags, "md-yaml")
|
||||
|
||||
// Create new Acme window
|
||||
newWin, err := ui.WindowOpen(fullPath)
|
||||
if err != nil {
|
||||
log.Printf("New: failed to create window: %v", err)
|
||||
break
|
||||
var newWin *acme.Win
|
||||
if newWin = acme.Show(fullPath); newWin == nil {
|
||||
if newWin, err = acme.New(); err != nil {
|
||||
log.Printf("New: failed to create window: %v", err)
|
||||
break
|
||||
}
|
||||
if err = newWin.Name(fullPath); err != nil {
|
||||
newWin.Del(true)
|
||||
log.Printf("New: failed to set window name: %v", err)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// Write content to window
|
||||
if err := ui.BodyWrite(newWin, "0", []byte(content)); err != nil {
|
||||
if err := newWin.Addr("0"); err != nil {
|
||||
log.Printf("New: failed to seek: %v", err)
|
||||
newWin.Del(true)
|
||||
break
|
||||
}
|
||||
if _, err := newWin.Write("data", []byte(content)); err != nil {
|
||||
log.Printf("New: failed to write content: %v", err)
|
||||
newWin.Del(true)
|
||||
break
|
||||
}
|
||||
|
||||
ui.WindowDirty(newWin, true)
|
||||
ui.DotToAddr(newWin, "$")
|
||||
newWin.Ctl("dirty")
|
||||
newWin.Addr("$")
|
||||
newWin.Ctl("dot=addr")
|
||||
newWin.Ctl("show")
|
||||
|
||||
// Start event listener for this note window
|
||||
go watchNoteWindow(newWin, fullPath)
|
||||
|
|
@ -597,7 +619,7 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
func performSearch(w *ui.Window, searchText string) {
|
||||
func performSearch(w *acme.Win, searchText string) {
|
||||
args := parseArgs(searchText)
|
||||
|
||||
var filterArgs []string
|
||||
|
|
@ -650,12 +672,15 @@ func performSearch(w *ui.Window, searchText string) {
|
|||
refreshWindow(w, rs)
|
||||
}
|
||||
|
||||
func refreshWindow(w *ui.Window, rs fs.Results) {
|
||||
ui.BodyWrite(w, ",", rs.Bytes())
|
||||
ui.DotToAddr(w, "#0")
|
||||
func refreshWindow(w *acme.Win, rs fs.Results) {
|
||||
w.Addr(",")
|
||||
w.Write("data", rs.Bytes())
|
||||
w.Addr("#0")
|
||||
w.Ctl("dot=addr")
|
||||
w.Ctl("show")
|
||||
}
|
||||
|
||||
func refreshWindowWithDefaults(w *ui.Window) {
|
||||
func refreshWindowWithDefaults(w *acme.Win) {
|
||||
// Clear filter and read index
|
||||
if err := setFilter(""); err != nil {
|
||||
log.Printf("error clearing filter: %v", err)
|
||||
|
|
|
|||
Loading…
Reference in New Issue