ref: 0b3dee53faea192fd49509879c447eebe68a4fe3
parent: e60aaf56635fe82a2557d34fb22a284c09fa1746
author: penny <penny@limitedideas.org>
date: Sat Nov 8 15:32:55 EST 2025
pages can now be scrrobbed through by number of pages
--- a/commands.go
+++ b/commands.go
@@ -339,7 +339,7 @@
hc.page = &Page{} getter := &BasicStatusGetter{getter: hc.client.GetTimelineDirect} hc.page.loader = &StatusPages{hc: hc, getter: getter}- fmt.Print(hc.page.String())
+ fmt.Print(hc.page.Pages(1))
hc.pause(true)
return ""
}
@@ -522,7 +522,9 @@
cmd.doer = func(data *cmddata) string { if hc.page != nil {hc.page.Prev()
- return fmt.Sprint(hc.page.String())
+ num, _ := strconv.Atoi(data.content)
+ num = -num
+ return fmt.Sprint(hc.page.Pages(num))
}
return fmt.Sprintf("No page loaded")}
@@ -537,7 +539,9 @@
cmd.doer = func(data *cmddata) string { if hc.page != nil {hc.page.Next()
- return hc.page.String()
+ num, _ := strconv.Atoi(data.content)
+ return hc.page.Pages(num)
+
}
return fmt.Sprintf("No page loaded")}
@@ -551,7 +555,8 @@
cmd.bflags = free
cmd.doer = func(data *cmddata) string { if hc.page != nil {- return hc.page.String()
+ return hc.page.Pages(1)
+
}
return fmt.Sprintf("No page loaded")}
@@ -568,7 +573,7 @@
hc.page = &Page{} getter := &BasicStatusGetter{getter: hc.client.GetBookmarks} hc.page.loader = &StatusPages{hc: hc, getter: getter}- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
}
@@ -614,7 +619,7 @@
}
hc.page = &Page{} hc.page.loader = &NotificationPages{hc: hc}- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
}
@@ -691,7 +696,7 @@
getter := &BasicStatusGetter{getter: hc.client.GetTimelineHome} hc.page.loader = &StatusPages{hc: hc, getter: getter}hc.pause(true)
- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
@@ -710,7 +715,7 @@
getter := &BasicStatusGetter{getter: localAPI} hc.page.loader = &StatusPages{hc: hc, getter: getter}hc.pause(true)
- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
@@ -729,7 +734,7 @@
getter := &BasicStatusGetter{getter: localAPI} hc.page.loader = &StatusPages{hc: hc, getter: getter}hc.pause(true)
- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
@@ -755,8 +760,6 @@
cmd.bname = "translate"
cmd.bflags = status | templater
cmd.doer = func(data *cmddata) string {- line, _ := data.templater.render("$index $display_name $username_full $content $media_descriptions\n$detail_line")- return fmt.Sprint(line)
translated, err := hc.client.TranslateStatus(context.Background(), data.status.ID)
if err != nil { return fmt.Sprintf("Translation error: %s\n", err)@@ -1074,7 +1077,7 @@
hc.page = &Page{disablereverse: true} getter := &ThreadStatusGetter{target: data.status, client: hc.client} hc.page.loader = &StatusPages{hc: hc, getter: getter}- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
}
@@ -1090,7 +1093,7 @@
hc.page.itembuffer = new([]PageItem)
getter := &PinnedStatusGetter{client: hc.client, ID: data.account.ID} hc.page.loader = &StatusPages{hc: hc, getter: getter}- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
}
@@ -1106,7 +1109,7 @@
hc.page.itembuffer = new([]PageItem)
getter := &AccountStatusGetter{client: hc.client, ID: data.account.ID} hc.page.loader = &StatusPages{hc: hc, getter: getter}- return hc.page.String()
+ return hc.page.Pages(1)
}
return cmd
}
--- a/help.go
+++ b/help.go
@@ -18,8 +18,8 @@
/unlike <index> Unfavorite status by index.
/thread <index> View thread the indexed status is part of.
/cat <index> Output a status with details (liker, replies, etc).
- /next Print next page if page is open.
- /prev Print previous page.
+ /next [count] Print next page (or next count pages) if page is open.
+ /prev [count Print previous page (or the previous count pages).
/page Print current page.
/home Open timeline page.
/public Open federated timeline page.
--- a/pages.go
+++ b/pages.go
@@ -289,6 +289,27 @@
*page.itembuffer = append(*page.itembuffer, *page.loader.Load(20)...)
}
+func (page *Page) Pages(number int) string {+ var sb strings.Builder
+ if number == 0 {+ number = 1
+ }
+ pageAction := page.Next
+ if number < 0 {+ number = -number
+ pageAction = page.Prev
+ }
+ for p := 0 ; p < number ; p++ {+ sb.WriteString(page.String())
+ if (p + 1) != number {+ pageAction()
+ }
+ }
+ sb.WriteString(page.pageTitle())
+ return sb.String()
+}
+
+
// Returns the current page rendered as text
func (page *Page) String() string {var sb strings.Builder
@@ -303,7 +324,6 @@
for i := range items {sb.WriteString(items[i].itemtext)
}
- sb.WriteString(page.pageTitle())
return sb.String()
}
--
⑨