xP: abort autocomplete when no longer applicable
This commit is contained in:
		@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user