Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Sample Ace Editor custom completer
// fetch ace's language tools module:
var langTools = ace.require('ace/ext/language_tools');
// data stub:
var sqlTables = [
{ name: 'users', description: 'Users in the system' },
{ name: 'userGroups', description: 'User groups to which users belong' },
{ name: 'customers', description: 'Customer entries' },
{ name: 'companies', description: 'Legal entities of customers' },
{ name: 'loginLog', description: 'Log entries for user log-ins' },
{ name: 'products', description: 'Products offered in the system' },
{ name: 'productCategories', description: 'Different product categories' }
];
// create a completer object with a required callback function:
var sqlTablesCompleter = {
getCompletions: function(editor, session, pos, prefix, callback) {
callback(null, sqlTables.map(function(table) {
return {
caption: table.description,
value: table.name,
meta: "Table"
};
}));
}
};
// finally, bind to langTools:
langTools.addCompleter(sqlTablesCompleter);
@mahdi943
Copy link

mahdi943 commented Mar 9, 2021

Hi,
I am using Ace editor in my project and also used CustomeCompleter to have my own list.
Could you please help me to delete the old list if I need to replace it with a new one?

Thanks.

@milesrichardson
Copy link

milesrichardson commented Sep 20, 2021

@mahdi943 You want to clear the completers list before adding one. So change the last line of this gist:

langTools.setCompleters([]);
langTools.addCompleter(sqlTablesCompleter);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment