1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
To: vim-dev@vim.org
Subject: Patch 7.2.353
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.353
Problem: No command line completion for ":profile".
Solution: Complete the subcommand and file name.
Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c,
src/proto/ex_cmds2.pro, src/vim.h
*** ../vim-7.2.352/src/ex_docmd.c 2009-11-03 12:38:50.000000000 +0100
--- src/ex_docmd.c 2010-02-03 14:40:14.000000000 +0100
***************
*** 3804,3809 ****
--- 3804,3814 ----
xp->xp_context = EXPAND_NOTHING;
break;
#endif
+ #if defined(FEAT_PROFILE)
+ case CMD_profile:
+ set_context_in_profile_cmd(xp, arg);
+ break;
+ #endif
#endif /* FEAT_CMDL_COMPL */
*** ../vim-7.2.352/src/ex_cmds2.c 2010-01-20 21:41:40.000000000 +0100
--- src/ex_cmds2.c 2010-02-03 14:50:08.000000000 +0100
***************
*** 1115,1120 ****
--- 1115,1193 ----
}
}
+ /* Command line expansion for :profile. */
+ static enum
+ {
+ PEXP_SUBCMD, /* expand :profile sub-commands */
+ PEXP_FUNC, /* expand :profile func {funcname} */
+ } pexpand_what;
+
+ static char *pexpand_cmds[] = {
+ "start",
+ #define PROFCMD_START 0
+ "pause",
+ #define PROFCMD_PAUSE 1
+ "continue",
+ #define PROFCMD_CONTINUE 2
+ "func",
+ #define PROFCMD_FUNC 3
+ "file",
+ #define PROFCMD_FILE 4
+ NULL
+ #define PROFCMD_LAST 5
+ };
+
+ /*
+ * Function given to ExpandGeneric() to obtain the profile command
+ * specific expansion.
+ */
+ char_u *
+ get_profile_name(xp, idx)
+ expand_T *xp UNUSED;
+ int idx;
+ {
+ switch (pexpand_what)
+ {
+ case PEXP_SUBCMD:
+ return (char_u *)pexpand_cmds[idx];
+ /* case PEXP_FUNC: TODO */
+ default:
+ return NULL;
+ }
+ }
+
+ /*
+ * Handle command line completion for :profile command.
+ */
+ void
+ set_context_in_profile_cmd(xp, arg)
+ expand_T *xp;
+ char_u *arg;
+ {
+ char_u *end_subcmd;
+ int len;
+
+ /* Default: expand subcommands. */
+ xp->xp_context = EXPAND_PROFILE;
+ pexpand_what = PEXP_SUBCMD;
+ xp->xp_pattern = arg;
+
+ end_subcmd = skiptowhite(arg);
+ if (*end_subcmd == NUL)
+ return;
+
+ len = end_subcmd - arg;
+ if (len == 5 && STRNCMP(arg, "start", 5) == 0)
+ {
+ xp->xp_context = EXPAND_FILES;
+ xp->xp_pattern = skipwhite(end_subcmd);
+ return;
+ }
+
+ /* TODO: expand function names after "func" */
+ xp->xp_context = EXPAND_NOTHING;
+ }
+
/*
* Dump the profiling info.
*/
*** ../vim-7.2.352/src/ex_getln.c 2010-01-19 14:59:14.000000000 +0100
--- src/ex_getln.c 2010-02-03 14:38:43.000000000 +0100
***************
*** 4522,4527 ****
--- 4522,4530 ----
#ifdef FEAT_SIGNS
{EXPAND_SIGN, get_sign_name, TRUE},
#endif
+ #ifdef FEAT_PROFILE
+ {EXPAND_PROFILE, get_profile_name, TRUE},
+ #endif
#if (defined(HAVE_LOCALE_H) || defined(X_LOCALE)) \
&& (defined(FEAT_GETTEXT) || defined(FEAT_MBYTE))
{EXPAND_LANGUAGE, get_lang_arg, TRUE},
*** ../vim-7.2.352/src/proto/ex_cmds2.pro 2008-01-06 20:07:25.000000000 +0100
--- src/proto/ex_cmds2.pro 2010-02-03 14:43:12.000000000 +0100
***************
*** 24,29 ****
--- 24,31 ----
int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
void ex_profile __ARGS((exarg_T *eap));
+ char_u *get_profile_name __ARGS((expand_T *xp, int idx));
+ void set_context_in_profile_cmd __ARGS((expand_T *xp, char_u *arg));
void profile_dump __ARGS((void));
void script_prof_save __ARGS((proftime_T *tm));
void script_prof_restore __ARGS((proftime_T *tm));
*** ../vim-7.2.352/src/vim.h 2009-06-16 11:08:13.000000000 +0200
--- src/vim.h 2010-02-03 14:40:42.000000000 +0100
***************
*** 718,723 ****
--- 718,724 ----
#define EXPAND_SHELLCMD 32
#define EXPAND_CSCOPE 33
#define EXPAND_SIGN 34
+ #define EXPAND_PROFILE 35
/* Values for exmode_active (0 is no exmode) */
#define EXMODE_NORMAL 1
*** ../vim-7.2.352/src/version.c 2010-02-03 12:23:16.000000000 +0100
--- src/version.c 2010-02-03 15:07:26.000000000 +0100
***************
*** 683,684 ****
--- 683,686 ----
{ /* Add new patch number below this line */
+ /**/
+ 353,
/**/
--
hundred-and-one symptoms of being an internet addict:
188. You purchase a laptop so you can surf while sitting on the can.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|