diff --git a/javascript/tagAutocomplete.js b/javascript/tagAutocomplete.js index 8f8e540..70e0080 100644 --- a/javascript/tagAutocomplete.js +++ b/javascript/tagAutocomplete.js @@ -366,6 +366,7 @@ function updateSelectionStyle(textArea, newIndex, oldIndex) { } var wildcardFiles = []; +var wildcardExtFiles = []; var wildcards = {}; var embeddings = []; var allTags = []; @@ -418,9 +419,11 @@ function autocomplete(textArea, prompt, fixedTag = null) { // Show available wildcard files let tempResults = []; if (tagword !== "__") { - tempResults = wildcardFiles.filter(x => x.toLowerCase().includes(tagword.replace("__", ""))) // Filter by tagword + let lmb = (x) => x.toLowerCase().includes(tagword.replace("__", "")) + tempResults = wildcardFiles.filter(lmb).concat(wildcardExtFiles.filter(lmb)) // Filter by tagword + } else { - tempResults = wildcardFiles; + tempResults = wildcardFiles.concat(wildcardExtFiles); } results = tempResults.map(x => ["Wildcards: " + x.trim(), "wildcardFile"]); // Mark as wildcard } else if (acConfig.useEmbeddings && tagword.match(/<[^,> ]*>?/g)) { @@ -581,6 +584,9 @@ onUiUpdate(function () { wildcardFiles = readFile("file/tags/temp/wc.txt").split("\n") .filter(x => x.trim().length > 0) // Remove empty lines .map(x => x.trim().replace(".txt", "")); // Remove file extension & newlines + wildcardExtFiles = readFile("file/tags/temp/wce.txt").split("\n") + .filter(x => x.trim().length > 0) // Remove empty lines + .map(x => x.trim().replace(".txt", "")); // Remove file extension & newlines wildcardFiles.forEach(fName => { try { @@ -590,8 +596,16 @@ onUiUpdate(function () { console.log(`Could not load wildcards for ${fName}`); } }); + wildcardExtFiles.forEach(fName => { + try { + wildcards[fName] = readFile(`file/extensions/wildcards/wildcards/${fName}.txt`).split("\n") + .filter(x => x.trim().length > 0); // Remove empty lines + } catch (e) { + console.log(`Could not load wildcards for ${fName}`); + } + }); } catch (e) { - console.error("Error loading wildcardNames.txt: " + e); + console.error("Error loading wildcards: " + e); } } // Load embeddings diff --git a/scripts/tag_autocomplete_helper.py b/scripts/tag_autocomplete_helper.py index 2dbf4cb..52c9485 100644 --- a/scripts/tag_autocomplete_helper.py +++ b/scripts/tag_autocomplete_helper.py @@ -6,6 +6,7 @@ from pathlib import Path # The path to the folder containing the wildcards and embeddings FILE_DIR = Path().absolute() WILDCARD_PATH = FILE_DIR.joinpath('scripts/wildcards') +WILDCARD_EXT_PATH = FILE_DIR.joinpath('extensions/wildcards/wildcards') EMB_PATH = FILE_DIR.joinpath('embeddings') # The path to the temporary file TEMP_PATH = FILE_DIR.joinpath('tags/temp') @@ -14,7 +15,13 @@ TEMP_PATH = FILE_DIR.joinpath('tags/temp') def get_wildcards(): """Returns a list of all wildcards. Works on nested folders.""" wildcard_files = list(WILDCARD_PATH.rglob("*.txt")) - resolved = [str(w.relative_to(WILDCARD_PATH)) for w in wildcard_files] + resolved = [str(w.relative_to(WILDCARD_PATH)) for w in wildcard_files if w.name != "put wildcards here.txt"] + return resolved + +def get_ext_wildcards(): + """Returns a list of all extension wildcards. Works on nested folders.""" + wildcard_files = list(WILDCARD_EXT_PATH.rglob("*.txt")) + resolved = [str(w.relative_to(WILDCARD_EXT_PATH)) for w in wildcard_files if w.name != "put wildcards here.txt"] return resolved @@ -32,10 +39,12 @@ def write_to_temp_file(name, data): # Check if the temp path exists and create it if not if not TEMP_PATH.exists(): TEMP_PATH.mkdir(parents=True, exist_ok=True) - # Set up files to ensure the script doesn't fail to load them - # even if no wildcards or embeddings are found - write_to_temp_file('wc.txt', []) - write_to_temp_file('emb.txt', []) + +# Set up files to ensure the script doesn't fail to load them +# even if no wildcards or embeddings are found +write_to_temp_file('wc.txt', []) +write_to_temp_file('wce.txt', []) +write_to_temp_file('emb.txt', []) # Write wildcards to wc.txt if found if WILDCARD_PATH.exists(): @@ -43,6 +52,12 @@ if WILDCARD_PATH.exists(): if wildcards: write_to_temp_file('wc.txt', wildcards) +# Write extension wildcards to wce.txt if found +if WILDCARD_EXT_PATH.exists(): + wildcards_ext = get_ext_wildcards() + if wildcards_ext: + write_to_temp_file('wce.txt', wildcards_ext) + # Write embeddings to emb.txt if found if EMB_PATH.exists(): embeddings = get_embeddings()