exmode: share history globally

On storage.local for now.
This commit is contained in:
Colin Caine 2017-11-09 08:04:05 +00:00
parent 3642477b57
commit 21c06d9520
2 changed files with 20 additions and 20 deletions

View file

@ -2,6 +2,8 @@
import * as Messaging from './messaging'
import * as SELF from './commandline_frame'
import './number.clamp'
import state from './state'
let completions = window.document.getElementById("completions") as HTMLElement
let clInput = window.document.getElementById("tridactyl-input") as HTMLInputElement
@ -44,7 +46,6 @@ clInput.addEventListener("keydown", function (keyevent) {
}
})
let cmdline_history = []
let cmdline_history_position = 0
let cmdline_history_current = ""
@ -52,8 +53,6 @@ function hide_and_clear(){
/** Bug workaround: clInput cannot be cleared during an "Escape"
* keydown event, presumably due to Firefox's internal handler for
* Escape. So clear clInput just after :)
*
* TODO: Report this on bugzilla.
*/
completions.innerHTML = ""
setTimeout(()=>{clInput.value = ""}, 0)
@ -65,12 +64,12 @@ function history(n){
if (cmdline_history_position == 0){
cmdline_history_current = clInput.value
}
let wrapped_ind = cmdline_history.length + n - cmdline_history_position
wrapped_ind = Math.min(cmdline_history.length,wrapped_ind)
wrapped_ind = Math.max(0,wrapped_ind)
let pot_history = cmdline_history[wrapped_ind]
let wrapped_ind = state.cmdHistory.length + n - cmdline_history_position
wrapped_ind = wrapped_ind.clamp(0, state.cmdHistory.length)
const pot_history = state.cmdHistory[wrapped_ind]
clInput.value = pot_history == undefined ? cmdline_history_current : pot_history
cmdline_history_position = - n + cmdline_history_position
cmdline_history_position = cmdline_history_position - n
}
/* Send the commandline to the background script and await response. */
@ -78,8 +77,8 @@ function process() {
console.log(clInput.value)
sendExstr("hidecmdline")
sendExstr(clInput.value)
cmdline_history.push(clInput.value)
console.log(cmdline_history)
state.cmdHistory = state.cmdHistory.concat([clInput.value])
console.log(state.cmdHistory)
completions.innerHTML = ""
clInput.value = ""
cmdline_history_position = 0

View file

@ -15,12 +15,13 @@
*/
export type ModeName = 'normal'|'insert'|'hint'
class State2 {
class State {
mode: ModeName = 'normal'
cmdHistory: string[] = []
}
// Don't change these from const or you risk breaking the Proxy below.
const defaults = Object.freeze(new State2())
const defaults = Object.freeze(new State())
const overlay = {} as any
browser.storage.local.get('state').then(res=>{
@ -49,7 +50,7 @@ const state = new Proxy(overlay, {
return true
}
}) as any as State2
}) as any as State
browser.storage.onChanged.addListener(
(changes, areaname) => {