branch: elpa/bash-completion
commit b307dc24c3e8ab20e41aeca32c5c7ac3d8ecebb0
Author: Stephane Zermatten <[email protected]>
Commit: Stephane Zermatten <[email protected]>
keep cword
---
bash-complete.el | 6 ++++--
bash-complete_test.el | 14 +++++++-------
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/bash-complete.el b/bash-complete.el
index 06df1d4b3a..8af7b5619b 100644
--- a/bash-complete.el
+++ b/bash-complete.el
@@ -38,7 +38,9 @@ Return a list containing the words and the number of the word
at POS, the current word: ( (word1 word2 ...) . wordnum )"
(save-excursion
(goto-char start)
- (nreverse (bash-complete-split-0 start end pos nil ""))))
+ (let ((accum (cons nil nil)))
+ (setq accum (bash-complete-split-0 start end pos accum ""))
+ (cons (car accum) (nreverse (cdr accum))))))
(defun bash-complete-split-0 (start end pos accum straccum)
(let ( (char-start (char-after))
@@ -76,7 +78,7 @@ at POS, the current word: ( (word1 word2 ...) . wordnum )"
;; word end
(t
(when straccum
- (push straccum accum))
+ (setcdr accum (cons straccum (cdr accum))))
(skip-chars-forward " \t\n\r" end)
(if (< (point) end)
(bash-complete-split-0 (point) end pos accum "")
diff --git a/bash-complete_test.el b/bash-complete_test.el
index 3c6f9447b6..d3403a7343 100644
--- a/bash-complete_test.el
+++ b/bash-complete_test.el
@@ -32,43 +32,43 @@
(sz-testutils-with-buffer
'("a hello world b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "hello" "world" "b" "c"))
+ '(nil . ("a" "hello" "world" "b" "c")))
("bash-complete-split escaped space"
(sz-testutils-with-buffer
'("a hello\\ world b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "hello world" "b" "c"))
+ '(nil . ("a" "hello world" "b" "c")))
("bash-complete-split double quotes"
(sz-testutils-with-buffer
'("a \"hello world\" b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "hello world" "b" "c"))
+ '(nil . ("a" "hello world" "b" "c")))
("bash-complete-split double quotes escaped"
(sz-testutils-with-buffer
'("a \"-\\\"hello world\\\"-\" b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "-\"hello world\"-" "b" "c"))
+ '(nil . ("a" "-\"hello world\"-" "b" "c")))
("bash-complete-split single quotes"
(sz-testutils-with-buffer
'("a 'hello world' b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "hello world" "b" "c"))
+ '(nil . ("a" "hello world" "b" "c")))
("bash-complete-split single quotes escaped"
(sz-testutils-with-buffer
'("a '-\\'hello world\\'-' b c")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "-'hello world'-" "b" "c"))
+ '(nil . ("a" "-'hello world'-" "b" "c")))
("bash-complete-split complex quote mix"
(sz-testutils-with-buffer
'("a hel\"lo w\"o'rld b'c d")
(bash-complete-split 1 (line-end-position) 0))
- '("a" "hello world bc" "d"))
+ '(nil . ("a" "hello world bc" "d")))
)))