[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/bash-completion b281e1e181 008/313: bash-complete-add-to-a
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/bash-completion b281e1e181 008/313: bash-complete-add-to-alist |
Date: |
Sat, 3 Dec 2022 10:59:03 -0500 (EST) |
branch: elpa/bash-completion
commit b281e1e18111cb8b28dcf46e1bf00aaeea06f044
Author: Stephane Zermatten <szermatt@gmx.net>
Commit: Stephane Zermatten <szermatt@gmx.net>
bash-complete-add-to-alist
---
bash-complete.el | 32 ++++++++++++++++++++++++++++++++
bash-complete_test.el | 25 +++++++++++++++++++++++++
2 files changed, 57 insertions(+)
diff --git a/bash-complete.el b/bash-complete.el
index f769d14afa..83c22ccd49 100644
--- a/bash-complete.el
+++ b/bash-complete.el
@@ -1,6 +1,19 @@
(require 'comint)
+(defvar bash-complete-process nil
+ "Bash process object")
+(defvar bash-complete-alist nil
+ "Maps from command name to the 'complete' arguments.
+
+For example if the following completion is defined in bash:
+ complete -F _cdargs_aliases cdb
+the following entry is added to `bash-complete-alist':
+ (\"cdb\" . (\"-F\" \"_cdargs\"))
+
+See `bash-complete-add-to-alist'.
+")
+
(defun bash-complete-dynamic-complete ()
"Bash completion function for `comint-complete-dynamic-functions'.
@@ -106,4 +119,23 @@ The result is a list of candidates, which might be empty."
)
+(defun bash-complete-add-to-alist (words)
+ "Add split 'complete' line WORDS to `bash-complete-add-to-alist'.
+
+This parses the complete command-line arguments as output by
+ complete -p
+
+This does not work on arbitrary 'complete' calls.
+
+Lines that do not start with the word complete are skipped.
+
+Return `bash-complete-alist'."
+ (when (string= "complete" (car words))
+ (let* ( (reverse-wordsrest (nreverse (cdr words)))
+ (command (car reverse-wordsrest))
+ (options (nreverse (cdr reverse-wordsrest))) )
+ (when (and command options)
+ (push (cons command options) bash-complete-alist))))
+ bash-complete-alist)
+
(provide 'bash-complete)
\ No newline at end of file
diff --git a/bash-complete_test.el b/bash-complete_test.el
index 7f7efe2f71..ec4844c732 100644
--- a/bash-complete_test.el
+++ b/bash-complete_test.el
@@ -108,6 +108,31 @@
(bash-complete-split 1 (line-end-position) (point)))
'(1 . ("a" "hello" "world" "b" "c")))
+ ("bash-complete-add-to-alist garbage"
+ (let ((bash-complete-alist nil))
+ (bash-complete-add-to-alist '("just" "some" "garbage")))
+ nil)
+
+ ("bash-complete-add-to-alist empty"
+ (let ((bash-complete-alist nil))
+ (bash-complete-add-to-alist '()))
+ nil)
+
+ ("bash-complete-add-to-alist empty string"
+ (let ((bash-complete-alist nil))
+ (bash-complete-add-to-alist '("")))
+ nil)
+
+ ("bash-complete-add-to-alist empty complete"
+ (let ((bash-complete-alist nil))
+ (bash-complete-add-to-alist '("complete")))
+ nil)
+
+ ("bash-complete-add-to-alist one command"
+ (let ((bash-complete-alist nil))
+ (bash-complete-add-to-alist '("complete" "-e" "-F" "_cdargs_aliases"
"cdb")))
+ '(("cdb" . ("-e" "-F" "_cdargs_aliases"))))
+
)))
- [nongnu] elpa/bash-completion d673bf1ed0 132/313: Merge pull request #17 from svend/bash-flags, (continued)
- [nongnu] elpa/bash-completion d673bf1ed0 132/313: Merge pull request #17 from svend/bash-flags, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 1659c7ca38 126/313: Quoting fix: fix parentheses in a file name, improve double quoting within, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 432c2d15c9 142/313: Add a space after the completion candidate for single completion., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 0f3f8c22b4 146/313: Add a space after a single custom completion., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion eacb8061e3 147/313: Fallback to filename completion when custom completion didn't find, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 081d03bedc 156/313: Fix issue #21 completion bug, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 1c2153d287 159/313: Call make-obsolete with three arguments, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 7965b914da 160/313: Re-enable directory expansion for custom completion. fixes #23, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 2c0b8d6a6e 163/313: Merge pull request #27 from vorburger/patch-1, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 0c77c64b50 174/313: Disable bash-completion-enable-caching if completion-table-with-cache, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion b281e1e181 008/313: bash-complete-add-to-alist,
ELPA Syncer <=
- [nongnu] elpa/bash-completion 1144ae69a9 056/313: documented the tokenizer, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 376dd532e2 057/313: modre documentation, up until wordbreak, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion fd7e0e6fbe 078/313: added documentation, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion dd34b278bf 069/313: stopping at point; the easy way, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 8756e80737 184/313: Replace 'options' in the completion struct with 'nospace'., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 2c4cb6edd2 186/313: Replace bash-completion-integration-test with a higher-level test for, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 0aed19067b 188/313: When using Bash 4, split words as Bash 4 does., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 4581a7823f 189/313: Bash 4: set COMP_TYPE and COMP_KEY to TAB, to let completion functions, ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion 802eb4e5a8 194/313: Set EMACS_BASH_COMPLETE even on remote (tramp) completion., ELPA Syncer, 2022/12/03
- [nongnu] elpa/bash-completion fbdc78b877 198/313: Support compopt when using Bash 4., ELPA Syncer, 2022/12/03