shithub: hell

Download patch

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()
 }
 
--