Implement different scroll excmds

In addition to scrollByLine and scrollByPage,
an excmd to scroll by half pages is included to
mimic default <C-u> and <C-d> behavior. In a
future revision, it may be preferred to have some
variable V for scroll values that pulls current
window height when called.
This commit is contained in:
Koushien 2017-09-27 21:10:52 -07:00
parent dcdef5f812
commit 687aaf9209
No known key found for this signature in database
GPG key ID: 082A69D4DD10690E
4 changed files with 44 additions and 18 deletions

View file

@ -6,9 +6,10 @@ namespace content {
window.history.go(message.number)
}
function scrollHandler(message: Message) {
window.scrollBy(0, message.number)
function scrollHandler(message: Message, scope?: string) {
if (!scope) window.scrollBy(0, message.number)
else if (scope === "lines") window.scrollByLines(message.number)
else if (scope === "pages") window.scrollByPages(message.number)
}
function evalHandler(message: Message) {
@ -23,6 +24,12 @@ namespace content {
case "scroll":
scrollHandler(message)
break
case "scroll_lines":
scrollHandler(message, "lines")
break
case "scroll_pages":
scrollHandler(message, "pages")
break
case "eval":
evalHandler(message)
break

View file

@ -20,14 +20,23 @@ namespace ExCmds {
}
}
let scroll = messageHelper("scroll")
const scroll = messageHelper("scroll")
const scroll_lines = messageHelper("scroll_lines")
const scroll_pages = messageHelper("scroll_pages")
export function scrolldown(n = 1) {
scroll(n)
export function scrolldown(n = 1) { scroll(n) }
export function scrolldownline(n = 1) { scroll_lines(n) }
export function scrolldownpage(n = 1) { scroll_pages(n) }
export const scrollup = function (n = 1) { scrolldown(n*-1) }
export const scrollupline = function (n = 1) { scrolldownline(n*-1) }
export const scrolluppage = funciton (n = 1) { scrolluppage(n*-1) }
export const scrolldownhalfpage = async function (n = 1) {
const current_window = await browser.windows.getCurrent()
scrolldown(n*0.5*current_window.height)
}
export let scrollup = function (n = 1) { scrolldown(n*-1) }
export const scrolluphalfpage = async function (n = 1) { scrolldownhalfpage(n*-1) }
}
// From main.ts

View file

@ -99,15 +99,21 @@ namespace Parsing {
// ex_str function names
// TODO: These should be automatically discovered with introspection of the ExCmd object.
const ex_str_to_func = {
tabopen: console.log,
scrolldown: ExCmds.scrolldown,
scrollup: ExCmds.scrollup,
nextab: console.log,
prevtab: console.log,
reader: console.log,
exmode: console.log,
open: console.log,
//something: console.log,
tabopen: console.log,
scrolldown: ExCmds.scrolldown,
scrollup: ExCmds.scrollup,
scrolldownline: ExCmds.scrolldownline,
scrollupline: ExCmds.scrollupline,
scrolldownpage: ExCmds.scrolldownpage,
scrolluppage: ExCmds.scrolluppage,
scrolldownhalfpage: ExCmds.scrolldownhalfpage,
scrolluphalfpage: ExCmds.scrolluphalfpage,
nextab: console.log,
prevtab: console.log,
reader: console.log,
exmode: console.log,
open: console.log,
//something: console.log,
}
// Simplistic Ex command line parser.

4
src/tridactyl.d.ts vendored
View file

@ -13,4 +13,8 @@ interface Message {
number?: number
}
interface Window {
scrollByLines(n: number): void
scrollByPages(n: number): void
}