diff src/vim9execute.c @ 24909:09d222e89a84 v8.2.2992

patch 8.2.2992: Vim9: completion for :disassemble is incomplete Commit: https://github.com/vim/vim/commit/4ee9d8e04daa97a3d0a19d7d2eed76b7721301e6 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jun 13 18:38:48 2021 +0200 patch 8.2.2992: Vim9: completion for :disassemble is incomplete Problem: Vim9: completion for :disassemble is incomplete. Solution: Recognize the "debug" and "profile" arguments.
author Bram Moolenaar <Bram@vim.org>
date Sun, 13 Jun 2021 18:45:03 +0200
parents 701e4a2576dd
children f11779c1d123
line wrap: on
line diff
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -5371,6 +5371,40 @@ list_instructions(char *pfx, isn_T *inst
 }
 
 /*
+ * Handle command line completion for the :disassemble command.
+ */
+    void
+set_context_in_disassemble_cmd(expand_T *xp, char_u *arg)
+{
+    char_u	*p;
+
+    // Default: expand user functions, "debug" and "profile"
+    xp->xp_context = EXPAND_DISASSEMBLE;
+    xp->xp_pattern = arg;
+
+    // first argument already typed: only user function names
+    if (*arg != NUL && *(p = skiptowhite(arg)) != NUL)
+    {
+	xp->xp_context = EXPAND_USER_FUNC;
+	xp->xp_pattern = skipwhite(p);
+    }
+}
+
+/*
+ * Function given to ExpandGeneric() to obtain the list of :disassemble
+ * arguments.
+ */
+    char_u *
+get_disassemble_argument(expand_T *xp, int idx)
+{
+    if (idx == 0)
+	return (char_u *)"debug";
+    if (idx == 1)
+	return (char_u *)"profile";
+    return get_user_func_name(xp, idx - 2);
+}
+
+/*
  * ":disassemble".
  * We don't really need this at runtime, but we do have tests that require it,
  * so always include this.