mirror of
https://github.com/xonsh/xonsh.git
synced 2025-03-04 08:24:40 +01:00
parent
24862e03c9
commit
5b6ea6c993
3 changed files with 40 additions and 2 deletions
27
news/feat-clipboard-support.rst
Normal file
27
news/feat-clipboard-support.rst
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
**Added:**
|
||||||
|
|
||||||
|
* support PTK's clipboard integration if pyperclip is installed.
|
||||||
|
So that some common emacs like
|
||||||
|
[cut/copy](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/examples/prompts/system-clipboard-integration.py)
|
||||||
|
will work out of the box.
|
||||||
|
|
||||||
|
|
||||||
|
**Changed:**
|
||||||
|
|
||||||
|
* <news item>
|
||||||
|
|
||||||
|
**Deprecated:**
|
||||||
|
|
||||||
|
* <news item>
|
||||||
|
|
||||||
|
**Removed:**
|
||||||
|
|
||||||
|
* <news item>
|
||||||
|
|
||||||
|
**Fixed:**
|
||||||
|
|
||||||
|
* <news item>
|
||||||
|
|
||||||
|
**Security:**
|
||||||
|
|
||||||
|
* <news item>
|
2
setup.py
2
setup.py
|
@ -342,7 +342,7 @@ def main():
|
||||||
}
|
}
|
||||||
skw["cmdclass"]["develop"] = xdevelop
|
skw["cmdclass"]["develop"] = xdevelop
|
||||||
skw["extras_require"] = {
|
skw["extras_require"] = {
|
||||||
"ptk": ["prompt-toolkit>=3.0"],
|
"ptk": ["prompt-toolkit>=3.0", "pyperclip"],
|
||||||
"pygments": ["pygments>=2.2"],
|
"pygments": ["pygments>=2.2"],
|
||||||
"mac": ["gnureadline"],
|
"mac": ["gnureadline"],
|
||||||
"linux": ["distro"],
|
"linux": ["distro"],
|
||||||
|
|
|
@ -35,6 +35,12 @@ from prompt_toolkit.formatted_text import PygmentsTokens, to_formatted_text
|
||||||
from prompt_toolkit.styles import merge_styles, Style
|
from prompt_toolkit.styles import merge_styles, Style
|
||||||
from prompt_toolkit.styles.pygments import pygments_token_to_classname
|
from prompt_toolkit.styles.pygments import pygments_token_to_classname
|
||||||
|
|
||||||
|
try:
|
||||||
|
from prompt_toolkit.clipboard.pyperclip import PyperclipClipboard
|
||||||
|
|
||||||
|
SYS_CLIPBOARD = True
|
||||||
|
except ImportError:
|
||||||
|
SYS_CLIPBOARD = False
|
||||||
|
|
||||||
ANSI_OSC_PATTERN = re.compile("\x1b].*?\007")
|
ANSI_OSC_PATTERN = re.compile("\x1b].*?\007")
|
||||||
CAPITAL_PATTERN = re.compile(r"([a-z])([A-Z])")
|
CAPITAL_PATTERN = re.compile(r"([a-z])([A-Z])")
|
||||||
|
@ -146,7 +152,12 @@ class PromptToolkitShell(BaseShell):
|
||||||
winutils.enable_virtual_terminal_processing()
|
winutils.enable_virtual_terminal_processing()
|
||||||
self._first_prompt = True
|
self._first_prompt = True
|
||||||
self.history = ThreadedHistory(PromptToolkitHistory())
|
self.history = ThreadedHistory(PromptToolkitHistory())
|
||||||
self.prompter = PromptSession(history=self.history)
|
|
||||||
|
ptk_args = {"history": self.history}
|
||||||
|
if SYS_CLIPBOARD:
|
||||||
|
ptk_args["clipboard"] = PyperclipClipboard()
|
||||||
|
self.prompter = PromptSession(**ptk_args)
|
||||||
|
|
||||||
self.prompt_formatter = PTKPromptFormatter(self.prompter)
|
self.prompt_formatter = PTKPromptFormatter(self.prompter)
|
||||||
self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self)
|
self.pt_completer = PromptToolkitCompleter(self.completer, self.ctx, self)
|
||||||
self.key_bindings = load_xonsh_bindings()
|
self.key_bindings = load_xonsh_bindings()
|
||||||
|
|
Loading…
Add table
Reference in a new issue