Skip to content

Commit

Permalink
v35.25; added fuzzy completer in terminal mode
Browse files Browse the repository at this point in the history
  • Loading branch information
eliranwong committed Jan 9, 2024
1 parent e16c5bf commit 661c082
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 28 deletions.
2 changes: 1 addition & 1 deletion UniqueBibleAppVersion.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
35.25
35.26
4 changes: 2 additions & 2 deletions file_manager.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import config, os, platform, subprocess
from util.get_path_prompt import GetPath
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.completion import WordCompleter, FuzzyCompleter
from prompt_toolkit.application import run_in_terminal
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit import PromptSession
Expand Down Expand Up @@ -103,7 +103,7 @@ def _(_):
indicator = "{0} {1} ".format(os.path.basename(os.getcwd()), "%")
inputIndicator = [("class:indicator", indicator)]
dirIndicator = "\\" if platform.system() == "Windows" else "/"
completer = WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()])))
completer = FuzzyCompleter(WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()]))))
auto_suggestion=AutoSuggestFromHistory()
userInput = self.terminal_system_command_session.prompt(inputIndicator, style=self.promptStyle, key_bindings=this_key_bindings, auto_suggest=auto_suggestion, completer=completer).strip()
#userInput = self.simplePrompt(inputIndicator=inputIndicator).strip()
Expand Down
3 changes: 3 additions & 0 deletions latest_changes.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
Changes in 35.25:
* added fuzzy completer in terminal mode

Changes in 35.25:
* Add display word frequency menu plugin
- https://github.com/eliranwong/UniqueBible/wiki/Display-Word-Frequency-Menu-Plugin
Expand Down
16 changes: 8 additions & 8 deletions patches.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1213,7 +1213,6 @@
(33.07, "file", "util/get_path_prompt.py")
(33.07, "file", "util/uba_command_prompt_key_bindings.py")
(33.16, "file", "plugins/startup/customise_terminal_mode_commands.py")
(33.16, "file", "util/terminal_mode_dialogs.py")
(33.20, "file", "util/PromptValidator.py")
(33.25, "file", "util/LexicalData.py")
(33.28, "file", ".gitignore")
Expand Down Expand Up @@ -1290,7 +1289,6 @@
(33.93, "file", "htmlResources/material/action/task_alt/materialiconsoutlined/48dp/2x/outline_task_alt_black_48dp.png")
(33.93, "folder", "plugins/menu/ToDo")
(33.93, "file", "plugins/menu/ToDo/Readme.md")
(33.96, "file", "file_manager.txt")
(33.96, "file", "gui/SimpleBrowser.py")
(33.96, "file", "gui/WorkSpace.py")
(33.96, "file", "gui/YouTubePopover.py")
Expand Down Expand Up @@ -1353,19 +1351,16 @@
(35.06, "file", "plugins/menu/Bible Chat.py")
(35.09, "file", "db/BiblesSqlite.py")
(35.10, "file", "plugins/startup/highlightActiveVerse.py")
(35.10, "file", "util/terminal_system_command_prompt.py")
(35.12, "file", "plugins/terminal/generate reference table from copied text.py")
(35.12, "file", "plugins/terminal/generate reference table from latest content.py")
(35.12, "file", "plugins/terminal/open html content with w3m.py")
(35.13, "file", "util/CrossPlatform.py")
(35.13, "file", "util/TextEditorUtility.py")
(35.16, "file", "util/VlcUtil.py")
(35.19, "file", "startup/nonGui.py")
(35.19, "file", "util/ConfigUtil.py")
(35.20, "file", "util/TextUtil.py")
(35.21, "file", "util/RemoteApiHandler.py")
(35.22, "file", "util/RemoteCliHandler.py")
(35.22, "file", "util/LocalCliHandler.py")
(35.23, "file", "util/checkup.py")
(35.24, "file", "gui/MaterialMainWindow.py")
(35.24, "file", "util/ShortcutUtil.py")
Expand Down Expand Up @@ -1394,6 +1389,11 @@
(35.25, "file", "util/GitHubRepoInfo.py")
(35.25, "file", "util/LanguageUtil.py")
(35.25, "file", "util/TextCommandParser.py")
(35.25, "file", "patches.txt")
(35.25, "file", "latest_changes.txt")
(35.25, "file", "UniqueBibleAppVersion.txt")
(35.26, "file", "file_manager.txt")
(35.26, "file", "util/LocalCliHandler.py")
(35.26, "file", "util/terminal_mode_dialogs.py")
(35.26, "file", "util/terminal_system_command_prompt.py")
(35.26, "file", "util/TextEditorUtility.py")
(35.26, "file", "patches.txt")
(35.26, "file", "latest_changes.txt")
(35.26, "file", "UniqueBibleAppVersion.txt")
16 changes: 8 additions & 8 deletions util/LocalCliHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
from prompt_toolkit.filters import Condition
#from prompt_toolkit.application import run_in_terminal
from prompt_toolkit.key_binding import KeyBindings, merge_key_bindings
from prompt_toolkit.completion import WordCompleter, NestedCompleter, ThreadedCompleter
from prompt_toolkit.completion import WordCompleter, NestedCompleter, ThreadedCompleter, FuzzyCompleter
from prompt_toolkit.history import FileHistory
from prompt_toolkit.styles import Style
#from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
Expand Down Expand Up @@ -1088,9 +1088,9 @@ def getCommandCompleter(self):
# Remove unexpected item
suggestions.pop(":::", None)
if config.terminalUseLighterCompleter:
completer = ThreadedCompleter(NestedCompleter.from_nested_dict(suggestions))
completer = FuzzyCompleter(ThreadedCompleter(NestedCompleter.from_nested_dict(suggestions)))
else:
completer = ThreadedCompleter(NestedCompleter.from_nested_dict(suggestions))
completer = FuzzyCompleter(ThreadedCompleter(NestedCompleter.from_nested_dict(suggestions)))
return completer

def getTextCommandSuggestion(self, addDotCommandWordOnly=True):
Expand Down Expand Up @@ -2065,7 +2065,7 @@ def searchablePrompt(self, inputIndicator="", multiline=False, default="", accep
if not inputIndicator:
inputIndicator = self.inputIndicator
if completer is None and options:
completer = WordCompleter(options, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(options, ignore_case=True))
if validator is None and numberOnly:
validator=NumberValidator()
result = inputPrompt(
Expand Down Expand Up @@ -2100,7 +2100,7 @@ def getBibleVersion(self, defaultText=""):

def getBibleVersions(self):
self.print("(empty entry to select from a list)")
completer = WordCompleter(self.crossPlatform.textList, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(self.crossPlatform.textList, ignore_case=True))
userInput = self.simplePrompt(default="_".join(config.compareParallelList), completer=completer, promptSession=self.terminal_multiple_bible_selection_session).strip()
userInput = userInput.replace(" ", "")
if not userInput:
Expand All @@ -2112,7 +2112,7 @@ def getBibleVersions(self):

def getStrongBibleVersions(self):
self.print("(empty entry to select from a list)")
completer = WordCompleter(self.crossPlatform.strongBibles, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(self.crossPlatform.strongBibles, ignore_case=True))
userInput = self.simplePrompt(default=config.concordance, completer=completer, promptSession=self.terminal_concordance_selection_session).strip()
userInput = userInput.replace(" ", "")
if not userInput:
Expand All @@ -2124,7 +2124,7 @@ def getStrongBibleVersions(self):

def getBibleBookRange(self, options=["ALL"], default_values=["ALL"]):
self.print("(empty entry to select from a list)")
completer = WordCompleter(options, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(options, ignore_case=True))
userInput = self.simplePrompt(default="ALL", completer=completer, promptSession=self.terminal_search_bible_book_range_session).strip()
userInput = userInput.replace(" ", "")
if not userInput:
Expand Down Expand Up @@ -2510,7 +2510,7 @@ def startChat():
self.conversationStarted = False
startChat()
multilineInput = False
completer = WordCompleter(config.inputSuggestions, ignore_case=True) if config.inputSuggestions else None
completer = FuzzyCompleter(WordCompleter(config.inputSuggestions, ignore_case=True)) if config.inputSuggestions else None
features = (
".new",
".singleLineInput",
Expand Down
10 changes: 5 additions & 5 deletions util/TextEditorUtility.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from util.VlcUtil import VlcUtil
from install.module import *
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.completion import WordCompleter, FuzzyCompleter
from prompt_toolkit.application import run_in_terminal
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit import prompt
Expand Down Expand Up @@ -335,7 +335,7 @@ def googleTranslate(self, runOnSelectedText=True, defaultText=""):
print("Translate from:")
print("(enter a language code)")
suggestions = codes
completer = WordCompleter(suggestions, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(suggestions, ignore_case=True))
userInput = self.terminal_google_translate_from_language_session.prompt(self.inputIndicator, style=self.promptStyle, completer=completer).strip()
if not userInput or userInput.lower() == config.terminal_cancel_action:
return self.cancelAction()
Expand All @@ -347,7 +347,7 @@ def googleTranslate(self, runOnSelectedText=True, defaultText=""):
print("Translate to:")
print("(enter a language code)")
suggestions = codes
completer = WordCompleter(suggestions, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(suggestions, ignore_case=True))
userInput = self.terminal_google_translate_to_language_session.prompt(self.inputIndicator, style=self.promptStyle, completer=completer).strip()
if not userInput or userInput.lower() == config.terminal_cancel_action:
return self.cancelAction()
Expand Down Expand Up @@ -426,7 +426,7 @@ def tts(self, runOnSelectedText=True, defaultText=""):
print("Enter a language code:")
suggestions = shortCodes + codes
suggestions = list(set(suggestions))
completer = WordCompleter(suggestions, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(suggestions, ignore_case=True))
default = config.ttsDefaultLangauge if config.ttsDefaultLangauge in suggestions else ""
userInput = self.terminal_tts_language_session.prompt(self.inputIndicator, style=self.promptStyle, completer=completer, default=default).strip()
if not userInput or userInput.lower() == config.terminal_cancel_action:
Expand Down Expand Up @@ -665,7 +665,7 @@ def _(_):
indicator = "{0} {1} ".format(os.path.basename(os.getcwd()), "%")
inputIndicator = [("class:indicator", indicator)]
dirIndicator = "\\" if platform.system() == "Windows" else "/"
completer = WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()])))
completer = FuzzyCompleter(WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()]))))
auto_suggestion=AutoSuggestFromHistory()
userInput = self.terminal_system_command_session.prompt(inputIndicator, style=self.promptStyle, key_bindings=this_key_bindings, auto_suggest=auto_suggestion, completer=completer).strip()
if userInput and not userInput == config.terminal_cancel_action:
Expand Down
4 changes: 2 additions & 2 deletions util/terminal_mode_dialogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from prompt_toolkit.formatted_text import HTML
from prompt_toolkit.styles import Style
from prompt_toolkit.shortcuts import input_dialog, radiolist_dialog, checkboxlist_dialog, message_dialog
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.completion import WordCompleter, FuzzyCompleter
from util.PromptValidator import NumberValidator
from db.BiblesSqlite import Bible
from db.ToolsSqlite import Book
Expand Down Expand Up @@ -46,7 +46,7 @@ def __init__(self, parent) -> None:
# a wrapper to standard input_dialog; open radiolist_dialog showing available options when user input is not a valid option.
def searchableInput(self, title="Text Entry", text="Enter / Search:", default="", completer=None, options=[], descriptions=[], validator=None, numberOnly=False, password=False, ok_text="OK", cancel_text="Cancel"):
if completer is None and options:
completer = WordCompleter(options, ignore_case=True)
completer = FuzzyCompleter(WordCompleter(options, ignore_case=True))
if validator is None and numberOnly:
validator=NumberValidator()
result = input_dialog(
Expand Down
4 changes: 2 additions & 2 deletions util/terminal_system_command_prompt.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from util.prompt_shared_key_bindings import prompt_shared_key_bindings
from prompt_toolkit.application import run_in_terminal
from prompt_toolkit.key_binding import KeyBindings, merge_key_bindings
from prompt_toolkit.completion import WordCompleter
from prompt_toolkit.completion import WordCompleter, FuzzyCompleter
from prompt_toolkit.auto_suggest import AutoSuggestFromHistory
from prompt_toolkit.filters import Condition
from prompt_toolkit.styles import Style
Expand Down Expand Up @@ -100,7 +100,7 @@ def _(event):
indicator = "{0} {1} ".format(os.path.basename(os.getcwd()), "%")
inputIndicator = [("class:indicator", indicator)]
dirIndicator = "\\" if platform.system() == "Windows" else "/"
completer = WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()])))
completer = FuzzyCompleter(WordCompleter(sorted(set(systemCommands + [f"{i}{dirIndicator}" if os.path.isdir(i) else i for i in os.listdir()]))))
auto_suggestion=AutoSuggestFromHistory()
userInput = self.terminal_system_command_session.prompt(inputIndicator, swap_light_and_dark_colors=Condition(lambda: not config.terminalResourceLinkColor.startswith("ansibright")), style=self.promptStyle, key_bindings=this_key_bindings, auto_suggest=auto_suggestion, completer=completer, bottom_toolbar=self.getToolBar(), default=self.systemCommandPromptEntry).strip()
if self.addPath:
Expand Down

0 comments on commit 661c082

Please sign in to comment.