我正在用C語言提示開發一個Linux工具。我使用GNU庫啓用了「函數」和「文件」完成。現在我想將支持擴展到「可變」名稱完成。下面是更好地理解的例子:GNU自動完成變量
作業輸出:
build2:/u/anitha> linux_tool
loading history
tool>
tool> ***On pressing TAB twice, the functions are prompted***
Display all 251 possibilities? (y or n)
byte(
dim(
fncc_fft2d(
HasValue(
ifft(
load_csv(
預期的額外支持:
tool> **var_name**=create(2,2)
2x2x1 array of int, bsq format [16 bytes]
0 1
2 3
tool>
tool> ***on pressing TAB twice, I want the variable name to be prompted for auto completion. i.e.**,*
tool> var_
**var_name**
Version(
代碼添加自動完成:
char ** dv_complete_func(char *text, int start, int end);
char *dv_complete_func_generator(const char*, int);
extern struct _vfuncptr vfunclist[];
/* This array has the list of functions that the tool can support */
char **
dv_complete_func(char *text, int start, int end)
{
return rl_completion_matches(text, dv_complete_func_generator);
}
char *dv_complete_func_generator(const char *text, int state)
{
static int list_index, len;
char *name;
if(!state) {
list_index =0;
len=strlen(text);
}
while((name = vfunclist[list_index++].name)) {
if(strncmp(name,text,len)==0) {
char *namedup = strdup(name);
strcat(namedup,"(");
return strdup(namedup);
}
}
return NULL;
}
讓我知道如果這個問題還不清楚。請幫助我解決方案。
是的,問題是不清楚的。 – Yunnosch
顯示您的實際代碼。你在正確的軌道上。 *顯示綁定到'rl_attempted_completion_function'的函數的源代碼*。所以**編輯你的問題**以改善它很多。 –
我希望「變量完成」也可以擴展爲變量。也就是說,如果我在提示中創建了一個變量,那麼「在按下選項卡」時,它也應該顯示與函數名稱不同的變量。 – Krish