Skip to content

Commit 366796c

Browse files
committed
enable the use of slash in completions
1 parent 478d4c4 commit 366796c

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/meshcore_cli/meshcore_cli.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"""
33
mccli.py : CLI interface to MeschCore BLE companion app
44
"""
5+
56
import asyncio
67
import os, sys
78
import time, datetime
@@ -16,11 +17,19 @@
1617
from prompt_toolkit.shortcuts import PromptSession
1718
from prompt_toolkit.shortcuts import CompleteStyle
1819
from prompt_toolkit.completion import NestedCompleter
20+
from prompt_toolkit.completion import CompleteEvent, Completer, Completion
1921
from prompt_toolkit.history import FileHistory
2022
from prompt_toolkit.formatted_text import ANSI
2123
from prompt_toolkit.key_binding import KeyBindings
2224
from prompt_toolkit.shortcuts import radiolist_dialog
2325

26+
#from typing import Iterable, Mapping, Set, Union
27+
28+
from prompt_toolkit.completion.word_completer import WordCompleter
29+
from prompt_toolkit.document import Document
30+
31+
import re
32+
2433
from meshcore import MeshCore, EventType, logger
2534

2635
# Version
@@ -297,6 +306,17 @@ async def subscribe_to_msgs(mc, json_output=False, above=False):
297306
CS = mc.subscribe(EventType.CHANNEL_MSG_RECV, handle_message)
298307
await mc.start_auto_message_fetching()
299308

309+
# redefine get_completion to let user put symbols in first item
310+
class MyNestedCompleter(NestedCompleter):
311+
def get_completions( self, document, complete_event):
312+
if not " " in document.text_before_cursor.lstrip():
313+
completer = WordCompleter(
314+
list(self.options.keys()), ignore_case=self.ignore_case,
315+
pattern=re.compile(r"([a-zA-Z0-9_\\/]+|[^a-zA-Z0-9_\s]+)"))
316+
yield from completer.get_completions(document, complete_event)
317+
else: # normal behavior for remainder
318+
yield from super().get_completions(document, complete_event)
319+
300320
def make_completion_dict(contacts, pending={}, to=None, channels=None):
301321
contact_list = {}
302322
pending_list = {}
@@ -666,7 +686,7 @@ def _(event):
666686
session.app.ttimeoutlen = 0.2
667687
session.app.timeoutlen = 0.2
668688

669-
completer = NestedCompleter.from_nested_dict(
689+
completer = MyNestedCompleter.from_nested_dict(
670690
make_completion_dict(mc.contacts,
671691
mc.pending_contacts,
672692
to=contact,

0 commit comments

Comments
 (0)