summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xP/public/xP.js14
1 files changed, 12 insertions, 2 deletions
diff --git a/xP/public/xP.js b/xP/public/xP.js
index abef57a..7bcfeb2 100644
--- a/xP/public/xP.js
+++ b/xP/public/xP.js
@@ -421,16 +421,28 @@ let BufferContainer = {
}
let Input = {
+ counter: 0,
+ stamp: textarea => {
+ return [Input.counter,
+ textarea.selectionStart, textarea.selectionEnd, textarea.value]
+ },
+
complete: textarea => {
if (textarea.selectionStart !== textarea.selectionEnd)
return false
+ // Cancel any previous autocomplete, and ensure applicability.
+ Input.counter++
+ let state = Input.stamp(textarea)
rpc.send({
command: 'BufferComplete',
bufferName: bufferCurrent,
text: textarea.value,
position: textarea.selectionEnd,
}).then(resp => {
+ if (!Input.stamp(textarea).every((v, k) => v === state[k]))
+ return
+
// TODO: Somehow display remaining options, or cycle through.
if (resp.completions.length)
textarea.setRangeText(resp.completions[0],
@@ -456,8 +468,6 @@ let Input = {
// TODO: And perhaps on other actions, too.
rpc.send({command: 'Active'})
- // TODO: Cancel any current autocomplete.
-
let textarea = event.currentTarget
let handled = false
switch (event.keyCode) {