obsidian#EditorSuggestTriggerInfo TypeScript Examples
The following examples show how to use
obsidian#EditorSuggestTriggerInfo.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Autocomplete.ts From Templater with GNU Affero General Public License v3.0 | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo | null {
const range = editor.getRange(
{ line: cursor.line, ch: 0 },
{ line: cursor.line, ch: cursor.ch }
);
const match = this.tp_keyword_regex.exec(range);
if (!match) {
return null;
}
let query: string;
const module_name = match.groups["module"] || "";
this.module_name = module_name;
if (match.groups["fn_trigger"]) {
if (module_name == "" || !is_module_name(module_name)) {
return;
}
this.function_trigger = true;
this.function_name = match.groups["fn"] || "";
query = this.function_name;
} else {
this.function_trigger = false;
query = this.module_name;
}
const trigger_info: EditorSuggestTriggerInfo = {
start: { line: cursor.line, ch: cursor.ch - query.length },
end: { line: cursor.line, ch: cursor.ch },
query: query,
};
this.latest_trigger_info = trigger_info;
return trigger_info;
}
Example #2
Source File: date-suggest.ts From nldates-obsidian with MIT License | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo {
if (!this.plugin.settings.isAutosuggestEnabled) {
return null;
}
const triggerPhrase = this.plugin.settings.autocompleteTriggerPhrase;
const startPos = this.context?.start || {
line: cursor.line,
ch: cursor.ch - triggerPhrase.length,
};
if (!editor.getRange(startPos, cursor).startsWith(triggerPhrase)) {
return null;
}
const precedingChar = editor.getRange(
{
line: startPos.line,
ch: startPos.ch - 1,
},
startPos
);
// Short-circuit if `@` as a part of a word (e.g. part of an email address)
if (precedingChar && /[`a-zA-Z0-9]/.test(precedingChar)) {
return null;
}
return {
start: startPos,
end: cursor,
query: editor.getRange(startPos, cursor).substring(triggerPhrase.length),
};
}
Example #3
Source File: locationSuggest.ts From obsidian-map-view with GNU General Public License v3.0 | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo | null {
const currentLink = this.getGeolinkOfCursor(cursor, editor);
if (currentLink)
return {
start: { line: cursor.line, ch: currentLink.index },
end: { line: cursor.line, ch: currentLink.linkEnd },
query: currentLink.name,
};
return null;
}
Example #4
Source File: tagSuggest.ts From obsidian-map-view with GNU General Public License v3.0 | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo | null {
const line = editor.getLine(cursor.line);
// Start by verifying that the current line has an inline location.
// If it doesn't, we don't wanna trigger the completion even if the user
// starts typing 'tag:'
const hasLocationMatch = matchInlineLocation(line);
if (!hasLocationMatch || hasLocationMatch.length == 0) return null;
const tagMatch = getTagUnderCursor(line, cursor.ch);
if (tagMatch)
return {
start: { line: cursor.line, ch: tagMatch.index },
end: {
line: cursor.line,
ch: tagMatch.index + tagMatch[0].length,
},
query: tagMatch[1],
};
return null;
}
Example #5
Source File: main.ts From obsidian-emoji-shortcodes with MIT License | 6 votes |
onTrigger(cursor: EditorPosition, editor: Editor, _: TFile): EditorSuggestTriggerInfo | null {
if (this.plugin.settings.suggester) {
const sub = editor.getLine(cursor.line).substring(0, cursor.ch);
const match = sub.match(/:\S+$/)?.first();
if (match) {
return {
end: cursor,
start: {
ch: sub.lastIndexOf(match),
line: cursor.line,
},
query: match,
}
}
}
return null;
}
Example #6
Source File: suggest.ts From obsidian-admonition with MIT License | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo {
const line = editor.getLine(cursor.line);
//not inside the bracket
if (/> \[!\w+\]/.test(line.slice(0, cursor.ch))) return null;
if (!/> \[!\w*/.test(line)) return null;
const match = line.match(/> \[!(\w*)\]?/);
if (!match) return null;
const [_, query] = match;
if (
!query ||
Object.keys(this.plugin.admonitions).find(
(p) => p.toLowerCase() == query.toLowerCase()
)
) {
return null;
}
const matchData = {
end: cursor,
start: {
ch: match.index + 4,
line: cursor.line
},
query
};
return matchData;
}
Example #7
Source File: suggest.ts From obsidian-admonition with MIT License | 6 votes |
onTrigger(
cursor: EditorPosition,
editor: Editor,
file: TFile
): EditorSuggestTriggerInfo {
const line = editor.getLine(cursor.line);
if (!/```ad-\w+/.test(line)) return null;
const match = line.match(/```ad-(\w+)/);
if (!match) return null;
const [_, query] = match;
if (
!query ||
Object.keys(this.plugin.admonitions).find(
(p) => p.toLowerCase() == query.toLowerCase()
)
) {
return null;
}
const matchData = {
end: cursor,
start: {
ch: match.index + 6,
line: cursor.line
},
query
};
return matchData;
}
Example #8
Source File: Autocomplete.ts From Templater with GNU Affero General Public License v3.0 | 5 votes |
private latest_trigger_info: EditorSuggestTriggerInfo;