plsqlwks 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/PKG-INFO +112 -11
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/README.md +111 -10
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/API.md +22 -3
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/ARCHITECTURE.md +24 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/PLUGINS.md +3 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/PLUGIN_CATALOG.md +94 -21
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/__init__.py +1 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/loader.py +2 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/models.py +24 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/settings.py +30 -1
- plsqlwks-0.2.3/plsqlwks/db/ddl_remap.py +452 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/metadata.py +4 -2
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/table_export.py +217 -15
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/table_export_catalog.py +313 -30
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/__init__.py +2 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/app.py +29 -2
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/catalog.py +22 -7
- plsqlwks-0.2.3/plsqlwks/ui/clipboard.py +513 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/commands.py +4 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/constants.py +11 -7
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/dialogs.py +147 -38
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/documents.py +24 -3
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/editor_controller.py +42 -15
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/input_controller.py +4 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/keys.py +8 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/renderer.py +7 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/result_controller.py +31 -29
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/table_export.py +19 -3
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/tests/fixtures/ui_exports.txt +2 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/tools/putty_keys.ps1 +6 -0
- plsqlwks-0.2.2/plsqlwks/db/ddl_remap.py +0 -132
- plsqlwks-0.2.2/plsqlwks/ui/clipboard.py +0 -128
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/COMPATIBILITY.md +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/QUICKSTART.html +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/doc/QUICKSTART.md +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/license.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/__main__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/cli.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/paths.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/config/session.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/dependencies.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/editing.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/execution.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/explain.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/health.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/identifiers.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/models.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/session.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/sql_analysis.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/timestamps.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/db/transactions.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/plugins/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/plugins/api.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/plugins/loader.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/plugins/management.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/sqlbinds.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/sqlsplit.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/application_controller.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/browser.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/buffer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/code_generation.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/command_dispatcher.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/completion.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/db_operations.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/db_session.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/db_worker.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/dependency_walker.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/display.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/errors.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/help.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/key_reader.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/menu.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/output_selection.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/plugin_host.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/ports.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/query_controller.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/result_export.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/result_presenter.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/results.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/sql.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/sqlplus.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/state.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/syntax.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/ui/viewport.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks/workspace.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plsqlwks.egg-info/SOURCES.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv-export/payload/writer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv2oratab/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/csv2oratab.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/dependencies-walker/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/dependencies-walker/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/dependencies-walker/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/payload/html_exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/html-export/payload/writer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/csv-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/csv2oratab-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/dependencies-walker-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/html-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/sqlplus-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/table-ddl-export-0.1.1.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/packages/xlsx-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/sqlplus/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/sqlplus/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/sqlplus/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/table-ddl-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/table-ddl-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/table-ddl-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/xlsx-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/xlsx_exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/pyproject.toml +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/pytest.ini +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/rchar.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/requirements.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/setup.cfg +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/tests/conftest.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/tests/fixtures/config_exports.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.3}/tools/windows_keys.cmd +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: plsqlwks
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: An ncurses SQL and PL/SQL workspace for Oracle databases.
|
|
5
5
|
Author: unu2000
|
|
6
6
|
License-Expression: LicenseRef-plsqlwks-Donationware
|
|
@@ -533,7 +533,11 @@ After a successful quit, plsqlwks records the open file-backed tabs, active tab,
|
|
|
533
533
|
Worksheet and configuration saves replace their destination atomically while
|
|
534
534
|
preserving an existing file's POSIX permission bits. A
|
|
535
535
|
file-backed worksheet also detects when its file was changed or deleted outside
|
|
536
|
-
plsqlwks and asks whether to overwrite it,
|
|
536
|
+
plsqlwks and asks whether to overwrite it, reload the disk version, save under
|
|
537
|
+
another name, or cancel. Reload is available while the file exists, including
|
|
538
|
+
when a change is detected just before saving. It replaces the editor text
|
|
539
|
+
without writing to disk; Undo can restore local edits. If reading fails, the
|
|
540
|
+
local buffer stays intact.
|
|
537
541
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
538
542
|
with the last successful save.
|
|
539
543
|
|
|
@@ -613,9 +617,11 @@ Use left Alt for application shortcuts; AltGr remains available for characters
|
|
|
613
617
|
on international keyboards. Shortcut digits and symbols refer to the character
|
|
614
618
|
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
615
619
|
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
616
|
-
autocomplete refresh.
|
|
617
|
-
|
|
618
|
-
|
|
620
|
+
autocomplete refresh. Clipboard preferences choose application copy targets
|
|
621
|
+
and paste sources; on a Linux SSH host the ordinary shortcuts default to the
|
|
622
|
+
Linux clipboard. Ctrl-Shift-C copies internally and Ctrl-Shift-V defaults to
|
|
623
|
+
internal paste. SSH does not expose the Windows clipboard to the host. Use
|
|
624
|
+
PuTTY's native paste (`Shift-Insert` or
|
|
619
625
|
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
620
626
|
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
621
627
|
available to the server when customizing PuTTY clipboard settings.
|
|
@@ -680,6 +686,94 @@ Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
|
680
686
|
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
681
687
|
also works from Command Prompt and continues to support PuTTY.
|
|
682
688
|
|
|
689
|
+
### Windows Terminal and WSL clipboard shortcuts
|
|
690
|
+
|
|
691
|
+
There are two main sources in WSL: plsqlwks' internal clipboard and the Windows
|
|
692
|
+
clipboard. Linux desktop access uses Wayland/X11; WSLg can bridge Linux and
|
|
693
|
+
Windows contents, so these are not necessarily three independent clipboards.
|
|
694
|
+
|
|
695
|
+
Open **Alt-O → Preferences → Clipboard** to choose external copy destinations
|
|
696
|
+
and the source of each paste shortcut. Save persists the choices in your
|
|
697
|
+
workspace's `config.ini`; Cancel discards changes. Internal copy is always
|
|
698
|
+
enabled. Capabilities / latest failure shows available readers/writers and the
|
|
699
|
+
latest backend error without displaying clipboard contents.
|
|
700
|
+
|
|
701
|
+
| Shortcut | Default on WSL/Windows |
|
|
702
|
+
| --- | --- |
|
|
703
|
+
| `Ctrl-C` | Copy internally and to Windows |
|
|
704
|
+
| `Ctrl-Shift-C` | Copy internally only |
|
|
705
|
+
| `Ctrl-V` | Paste from Windows |
|
|
706
|
+
| `Ctrl-Shift-V` | Paste internally |
|
|
707
|
+
|
|
708
|
+
`Ctrl-X` cuts using the ordinary copy destinations and remains one immediate
|
|
709
|
+
Undo edit. `Ctrl-C` interrupts a running database operation first. These copy
|
|
710
|
+
shortcuts work for editor selections, result cells/ranges, DBMS_OUTPUT
|
|
711
|
+
selections and schema-browser object names. Existing paste-enabled prompts and
|
|
712
|
+
cell editors honor both paste-source preferences. New workspaces without
|
|
713
|
+
Windows tools default ordinary copy/paste to Linux; explicit settings always
|
|
714
|
+
win, even if the selected backend is unavailable.
|
|
715
|
+
|
|
716
|
+
```ini
|
|
717
|
+
[clipboard]
|
|
718
|
+
copy_to_windows = yes
|
|
719
|
+
copy_to_linux = no
|
|
720
|
+
ctrl_v_source = windows
|
|
721
|
+
ctrl_shift_v_source = internal
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
Paste sources are `windows`, `internal`, or `linux`. Windows paste reads Windows
|
|
725
|
+
exclusively: failure or empty contents causes no insertion and explicit
|
|
726
|
+
feedback. Internal paste performs no OS access and cancels a pending paste for
|
|
727
|
+
that target. Copy updates internal text immediately, then attempts every enabled
|
|
728
|
+
external destination in a background worker. Windows copy tries PowerShell,
|
|
729
|
+
then `clip.exe` on failure, and verifies contents by readback when a reader is
|
|
730
|
+
available. Copy-only Windows access is labelled unverified. Each Linux provider
|
|
731
|
+
is attempted when Linux copying is enabled. A Linux success does not conceal a
|
|
732
|
+
Windows failure.
|
|
733
|
+
|
|
734
|
+
Windows Terminal normally consumes all four shortcuts for its own copy/paste.
|
|
735
|
+
To let plsqlwks receive them, open **Settings → Open JSON file** and add these
|
|
736
|
+
entries to `actions`, keeping the other actions:
|
|
737
|
+
|
|
738
|
+
```json
|
|
739
|
+
{ "command": { "action": "sendInput", "input": "\u0003" }, "id": "User.PlsqlwksCopy" },
|
|
740
|
+
{ "command": { "action": "sendInput", "input": "\u001b[99;6u" }, "id": "User.PlsqlwksInternalCopy" },
|
|
741
|
+
{ "command": { "action": "sendInput", "input": "\u0016" }, "id": "User.PlsqlwksPaste" },
|
|
742
|
+
{ "command": { "action": "sendInput", "input": "\u001b[118;6u" }, "id": "User.PlsqlwksAlternatePaste" }
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
Replace the existing copy/paste entries in `keybindings` with
|
|
746
|
+
the entries below, keeping the other keybindings:
|
|
747
|
+
|
|
748
|
+
```json
|
|
749
|
+
{ "id": "User.PlsqlwksCopy", "keys": "ctrl+c" },
|
|
750
|
+
{ "id": "User.PlsqlwksInternalCopy", "keys": "ctrl+shift+c" },
|
|
751
|
+
{ "id": "User.PlsqlwksPaste", "keys": "ctrl+v" },
|
|
752
|
+
{ "id": "User.PlsqlwksAlternatePaste", "keys": "ctrl+shift+v" }
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
This setting applies to every Windows Terminal profile and tab. Restart
|
|
756
|
+
plsqlwks after upgrading and reopen Windows Terminal if it retains old bindings.
|
|
757
|
+
The command menu offers equivalents when a terminal intercepts the shortcuts.
|
|
758
|
+
The optional `tools/putty_keys.ps1` helper also forwards all four shortcuts when
|
|
759
|
+
enabled for the active Windows terminal window.
|
|
760
|
+
|
|
761
|
+
Keyboard navigation, resizing and dialogs remain available while clipboard
|
|
762
|
+
commands run. Windows paste waits behind pending external copies. If you change
|
|
763
|
+
the paste target's text, cursor, selection or active tab before it finishes, the
|
|
764
|
+
pending paste is cancelled; repeated external paste requests for that target
|
|
765
|
+
are ignored. Requests retain the settings in effect when submitted.
|
|
766
|
+
|
|
767
|
+
For native Windows Terminal paste, wait until application copy reports that the
|
|
768
|
+
Windows clipboard has been updated. Native paste reads the Windows clipboard
|
|
769
|
+
independently and receives no internal fallback. Its bracketed paste payload is
|
|
770
|
+
inserted directly without a second clipboard lookup.
|
|
771
|
+
|
|
772
|
+
Windows Terminal's **Copy on select** setting can overwrite the clipboard when
|
|
773
|
+
you select terminal text with the mouse. Turn it off if you want only explicit
|
|
774
|
+
copy commands to change the Windows clipboard.
|
|
775
|
+
See Microsoft's [send input action](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/actions#send-input).
|
|
776
|
+
|
|
683
777
|
## Keys
|
|
684
778
|
|
|
685
779
|
### Global
|
|
@@ -742,8 +836,10 @@ also works from Command Prompt and continues to support PuTTY.
|
|
|
742
836
|
| `Ctrl-U` | Uppercase selected SQL code |
|
|
743
837
|
| `Ctrl-L` | Lowercase selected SQL code |
|
|
744
838
|
| `Ctrl-C` | Copy selected text |
|
|
839
|
+
| `Ctrl-Shift-C` | Copy selected text internally only |
|
|
745
840
|
| `Ctrl-X` | Cut selected text |
|
|
746
841
|
| `Ctrl-V` | Paste clipboard text, expanding each tab to two spaces |
|
|
842
|
+
| `Ctrl-Shift-V` | Paste the alternate source (internal by default) |
|
|
747
843
|
| Terminal paste | Paste text as one edit, expanding each tab to two spaces |
|
|
748
844
|
| `Ctrl-Z` / `Ctrl-Y` | Undo / redo |
|
|
749
845
|
| `Ctrl+=` | Reconnect |
|
|
@@ -783,8 +879,8 @@ recorded as one undoable edit. `Ctrl-N` and `Ctrl-P` repeat the last search with
|
|
|
783
879
|
its case setting, forward or backward with wraparound.
|
|
784
880
|
|
|
785
881
|
Editor paste expands every tab character to two spaces and keeps multiline
|
|
786
|
-
text in one undoable edit. This applies to
|
|
787
|
-
|
|
882
|
+
text in one undoable edit. This applies to both configured paste shortcuts and
|
|
883
|
+
to native terminal paste while the editor is focused;
|
|
788
884
|
clipboard contents themselves are not changed. Native paste requires a
|
|
789
885
|
terminal that supports the standard bracketed-paste protocol, with `Ctrl-V`
|
|
790
886
|
remaining available as the fallback.
|
|
@@ -831,6 +927,7 @@ Read-only mode is a client-side guardrail that rejects statements which the SQL
|
|
|
831
927
|
| `Ctrl-Home` / `Ctrl-End` | Move to the first/last result-grid row |
|
|
832
928
|
| `F8` | Toggle result grid / row-detail output |
|
|
833
929
|
| `Ctrl-C` | Copy one result cell immediately, or choose header handling for a rectangular selection |
|
|
930
|
+
| `Ctrl-Shift-C` | Copy the same cell/range internally only |
|
|
834
931
|
| `F10` | View or edit a mapped text cell in a ROWID-backed result |
|
|
835
932
|
| `Enter` | Edit the selected ROWID-backed result cell when available |
|
|
836
933
|
| `INS` | Prepare a draft insert row for ROWID-backed results |
|
|
@@ -1123,7 +1220,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1123
1220
|
| `PageUp` / `PageDown` | Scroll cell text by page |
|
|
1124
1221
|
| `Home` / `End` | Move to the first/last cell-viewer line |
|
|
1125
1222
|
| `Ctrl-S` (editor) | Save the multiline edit |
|
|
1126
|
-
| `Ctrl-V` / terminal paste (editor) | Paste exact clipboard text as one undoable edit |
|
|
1223
|
+
| `Ctrl-V` / `Ctrl-Shift-V` / terminal paste (editor) | Paste exact clipboard text as one undoable edit |
|
|
1127
1224
|
| `Enter` (editor) | Insert a newline |
|
|
1128
1225
|
| `F10` / `Esc` / `Ctrl-Q` (editor) | Cancel the multiline edit |
|
|
1129
1226
|
|
|
@@ -1132,7 +1229,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1132
1229
|
| Key | Action |
|
|
1133
1230
|
| --- | --- |
|
|
1134
1231
|
| Printable text | Type into prompts or filter picker options |
|
|
1135
|
-
| `Ctrl-V` / terminal paste | Paste single-line text; tabs are preserved and multiline text is rejected |
|
|
1232
|
+
| `Ctrl-V` / `Ctrl-Shift-V` / terminal paste | Paste single-line text; tabs are preserved and multiline text is rejected |
|
|
1136
1233
|
| `Backspace` | Delete before the prompt cursor or picker filter |
|
|
1137
1234
|
| `Enter` | Accept the prompt or selected picker item |
|
|
1138
1235
|
| `Esc` / `Ctrl-Q` | Cancel the prompt or picker |
|
|
@@ -1193,9 +1290,13 @@ for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
|
1193
1290
|
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1194
1291
|
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1195
1292
|
lets you choose a schema, filter table names as you type, select tables, and
|
|
1196
|
-
optionally remap them to another schema
|
|
1293
|
+
optionally remap them to another schema and prefix tables, indexes, constraints
|
|
1294
|
+
and triggers while updating static table references. It automatically includes related
|
|
1197
1295
|
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1198
|
-
required source-schema tables and
|
|
1296
|
+
required source-schema tables, views, SQL types and program units recursively.
|
|
1297
|
+
Unreadable type or program definitions become named destination prerequisites.
|
|
1298
|
+
Types retain their names; prefixed copies in the source schema reuse existing types.
|
|
1299
|
+
Definitions, constraints, indexes,
|
|
1199
1300
|
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1200
1301
|
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1201
1302
|
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|
|
@@ -499,7 +499,11 @@ After a successful quit, plsqlwks records the open file-backed tabs, active tab,
|
|
|
499
499
|
Worksheet and configuration saves replace their destination atomically while
|
|
500
500
|
preserving an existing file's POSIX permission bits. A
|
|
501
501
|
file-backed worksheet also detects when its file was changed or deleted outside
|
|
502
|
-
plsqlwks and asks whether to overwrite it,
|
|
502
|
+
plsqlwks and asks whether to overwrite it, reload the disk version, save under
|
|
503
|
+
another name, or cancel. Reload is available while the file exists, including
|
|
504
|
+
when a change is detected just before saving. It replaces the editor text
|
|
505
|
+
without writing to disk; Undo can restore local edits. If reading fails, the
|
|
506
|
+
local buffer stays intact.
|
|
503
507
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
504
508
|
with the last successful save.
|
|
505
509
|
|
|
@@ -579,9 +583,11 @@ Use left Alt for application shortcuts; AltGr remains available for characters
|
|
|
579
583
|
on international keyboards. Shortcut digits and symbols refer to the character
|
|
580
584
|
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
581
585
|
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
582
|
-
autocomplete refresh.
|
|
583
|
-
|
|
584
|
-
|
|
586
|
+
autocomplete refresh. Clipboard preferences choose application copy targets
|
|
587
|
+
and paste sources; on a Linux SSH host the ordinary shortcuts default to the
|
|
588
|
+
Linux clipboard. Ctrl-Shift-C copies internally and Ctrl-Shift-V defaults to
|
|
589
|
+
internal paste. SSH does not expose the Windows clipboard to the host. Use
|
|
590
|
+
PuTTY's native paste (`Shift-Insert` or
|
|
585
591
|
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
586
592
|
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
587
593
|
available to the server when customizing PuTTY clipboard settings.
|
|
@@ -646,6 +652,94 @@ Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
|
646
652
|
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
647
653
|
also works from Command Prompt and continues to support PuTTY.
|
|
648
654
|
|
|
655
|
+
### Windows Terminal and WSL clipboard shortcuts
|
|
656
|
+
|
|
657
|
+
There are two main sources in WSL: plsqlwks' internal clipboard and the Windows
|
|
658
|
+
clipboard. Linux desktop access uses Wayland/X11; WSLg can bridge Linux and
|
|
659
|
+
Windows contents, so these are not necessarily three independent clipboards.
|
|
660
|
+
|
|
661
|
+
Open **Alt-O → Preferences → Clipboard** to choose external copy destinations
|
|
662
|
+
and the source of each paste shortcut. Save persists the choices in your
|
|
663
|
+
workspace's `config.ini`; Cancel discards changes. Internal copy is always
|
|
664
|
+
enabled. Capabilities / latest failure shows available readers/writers and the
|
|
665
|
+
latest backend error without displaying clipboard contents.
|
|
666
|
+
|
|
667
|
+
| Shortcut | Default on WSL/Windows |
|
|
668
|
+
| --- | --- |
|
|
669
|
+
| `Ctrl-C` | Copy internally and to Windows |
|
|
670
|
+
| `Ctrl-Shift-C` | Copy internally only |
|
|
671
|
+
| `Ctrl-V` | Paste from Windows |
|
|
672
|
+
| `Ctrl-Shift-V` | Paste internally |
|
|
673
|
+
|
|
674
|
+
`Ctrl-X` cuts using the ordinary copy destinations and remains one immediate
|
|
675
|
+
Undo edit. `Ctrl-C` interrupts a running database operation first. These copy
|
|
676
|
+
shortcuts work for editor selections, result cells/ranges, DBMS_OUTPUT
|
|
677
|
+
selections and schema-browser object names. Existing paste-enabled prompts and
|
|
678
|
+
cell editors honor both paste-source preferences. New workspaces without
|
|
679
|
+
Windows tools default ordinary copy/paste to Linux; explicit settings always
|
|
680
|
+
win, even if the selected backend is unavailable.
|
|
681
|
+
|
|
682
|
+
```ini
|
|
683
|
+
[clipboard]
|
|
684
|
+
copy_to_windows = yes
|
|
685
|
+
copy_to_linux = no
|
|
686
|
+
ctrl_v_source = windows
|
|
687
|
+
ctrl_shift_v_source = internal
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
Paste sources are `windows`, `internal`, or `linux`. Windows paste reads Windows
|
|
691
|
+
exclusively: failure or empty contents causes no insertion and explicit
|
|
692
|
+
feedback. Internal paste performs no OS access and cancels a pending paste for
|
|
693
|
+
that target. Copy updates internal text immediately, then attempts every enabled
|
|
694
|
+
external destination in a background worker. Windows copy tries PowerShell,
|
|
695
|
+
then `clip.exe` on failure, and verifies contents by readback when a reader is
|
|
696
|
+
available. Copy-only Windows access is labelled unverified. Each Linux provider
|
|
697
|
+
is attempted when Linux copying is enabled. A Linux success does not conceal a
|
|
698
|
+
Windows failure.
|
|
699
|
+
|
|
700
|
+
Windows Terminal normally consumes all four shortcuts for its own copy/paste.
|
|
701
|
+
To let plsqlwks receive them, open **Settings → Open JSON file** and add these
|
|
702
|
+
entries to `actions`, keeping the other actions:
|
|
703
|
+
|
|
704
|
+
```json
|
|
705
|
+
{ "command": { "action": "sendInput", "input": "\u0003" }, "id": "User.PlsqlwksCopy" },
|
|
706
|
+
{ "command": { "action": "sendInput", "input": "\u001b[99;6u" }, "id": "User.PlsqlwksInternalCopy" },
|
|
707
|
+
{ "command": { "action": "sendInput", "input": "\u0016" }, "id": "User.PlsqlwksPaste" },
|
|
708
|
+
{ "command": { "action": "sendInput", "input": "\u001b[118;6u" }, "id": "User.PlsqlwksAlternatePaste" }
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Replace the existing copy/paste entries in `keybindings` with
|
|
712
|
+
the entries below, keeping the other keybindings:
|
|
713
|
+
|
|
714
|
+
```json
|
|
715
|
+
{ "id": "User.PlsqlwksCopy", "keys": "ctrl+c" },
|
|
716
|
+
{ "id": "User.PlsqlwksInternalCopy", "keys": "ctrl+shift+c" },
|
|
717
|
+
{ "id": "User.PlsqlwksPaste", "keys": "ctrl+v" },
|
|
718
|
+
{ "id": "User.PlsqlwksAlternatePaste", "keys": "ctrl+shift+v" }
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
This setting applies to every Windows Terminal profile and tab. Restart
|
|
722
|
+
plsqlwks after upgrading and reopen Windows Terminal if it retains old bindings.
|
|
723
|
+
The command menu offers equivalents when a terminal intercepts the shortcuts.
|
|
724
|
+
The optional `tools/putty_keys.ps1` helper also forwards all four shortcuts when
|
|
725
|
+
enabled for the active Windows terminal window.
|
|
726
|
+
|
|
727
|
+
Keyboard navigation, resizing and dialogs remain available while clipboard
|
|
728
|
+
commands run. Windows paste waits behind pending external copies. If you change
|
|
729
|
+
the paste target's text, cursor, selection or active tab before it finishes, the
|
|
730
|
+
pending paste is cancelled; repeated external paste requests for that target
|
|
731
|
+
are ignored. Requests retain the settings in effect when submitted.
|
|
732
|
+
|
|
733
|
+
For native Windows Terminal paste, wait until application copy reports that the
|
|
734
|
+
Windows clipboard has been updated. Native paste reads the Windows clipboard
|
|
735
|
+
independently and receives no internal fallback. Its bracketed paste payload is
|
|
736
|
+
inserted directly without a second clipboard lookup.
|
|
737
|
+
|
|
738
|
+
Windows Terminal's **Copy on select** setting can overwrite the clipboard when
|
|
739
|
+
you select terminal text with the mouse. Turn it off if you want only explicit
|
|
740
|
+
copy commands to change the Windows clipboard.
|
|
741
|
+
See Microsoft's [send input action](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/actions#send-input).
|
|
742
|
+
|
|
649
743
|
## Keys
|
|
650
744
|
|
|
651
745
|
### Global
|
|
@@ -708,8 +802,10 @@ also works from Command Prompt and continues to support PuTTY.
|
|
|
708
802
|
| `Ctrl-U` | Uppercase selected SQL code |
|
|
709
803
|
| `Ctrl-L` | Lowercase selected SQL code |
|
|
710
804
|
| `Ctrl-C` | Copy selected text |
|
|
805
|
+
| `Ctrl-Shift-C` | Copy selected text internally only |
|
|
711
806
|
| `Ctrl-X` | Cut selected text |
|
|
712
807
|
| `Ctrl-V` | Paste clipboard text, expanding each tab to two spaces |
|
|
808
|
+
| `Ctrl-Shift-V` | Paste the alternate source (internal by default) |
|
|
713
809
|
| Terminal paste | Paste text as one edit, expanding each tab to two spaces |
|
|
714
810
|
| `Ctrl-Z` / `Ctrl-Y` | Undo / redo |
|
|
715
811
|
| `Ctrl+=` | Reconnect |
|
|
@@ -749,8 +845,8 @@ recorded as one undoable edit. `Ctrl-N` and `Ctrl-P` repeat the last search with
|
|
|
749
845
|
its case setting, forward or backward with wraparound.
|
|
750
846
|
|
|
751
847
|
Editor paste expands every tab character to two spaces and keeps multiline
|
|
752
|
-
text in one undoable edit. This applies to
|
|
753
|
-
|
|
848
|
+
text in one undoable edit. This applies to both configured paste shortcuts and
|
|
849
|
+
to native terminal paste while the editor is focused;
|
|
754
850
|
clipboard contents themselves are not changed. Native paste requires a
|
|
755
851
|
terminal that supports the standard bracketed-paste protocol, with `Ctrl-V`
|
|
756
852
|
remaining available as the fallback.
|
|
@@ -797,6 +893,7 @@ Read-only mode is a client-side guardrail that rejects statements which the SQL
|
|
|
797
893
|
| `Ctrl-Home` / `Ctrl-End` | Move to the first/last result-grid row |
|
|
798
894
|
| `F8` | Toggle result grid / row-detail output |
|
|
799
895
|
| `Ctrl-C` | Copy one result cell immediately, or choose header handling for a rectangular selection |
|
|
896
|
+
| `Ctrl-Shift-C` | Copy the same cell/range internally only |
|
|
800
897
|
| `F10` | View or edit a mapped text cell in a ROWID-backed result |
|
|
801
898
|
| `Enter` | Edit the selected ROWID-backed result cell when available |
|
|
802
899
|
| `INS` | Prepare a draft insert row for ROWID-backed results |
|
|
@@ -1089,7 +1186,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1089
1186
|
| `PageUp` / `PageDown` | Scroll cell text by page |
|
|
1090
1187
|
| `Home` / `End` | Move to the first/last cell-viewer line |
|
|
1091
1188
|
| `Ctrl-S` (editor) | Save the multiline edit |
|
|
1092
|
-
| `Ctrl-V` / terminal paste (editor) | Paste exact clipboard text as one undoable edit |
|
|
1189
|
+
| `Ctrl-V` / `Ctrl-Shift-V` / terminal paste (editor) | Paste exact clipboard text as one undoable edit |
|
|
1093
1190
|
| `Enter` (editor) | Insert a newline |
|
|
1094
1191
|
| `F10` / `Esc` / `Ctrl-Q` (editor) | Cancel the multiline edit |
|
|
1095
1192
|
|
|
@@ -1098,7 +1195,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1098
1195
|
| Key | Action |
|
|
1099
1196
|
| --- | --- |
|
|
1100
1197
|
| Printable text | Type into prompts or filter picker options |
|
|
1101
|
-
| `Ctrl-V` / terminal paste | Paste single-line text; tabs are preserved and multiline text is rejected |
|
|
1198
|
+
| `Ctrl-V` / `Ctrl-Shift-V` / terminal paste | Paste single-line text; tabs are preserved and multiline text is rejected |
|
|
1102
1199
|
| `Backspace` | Delete before the prompt cursor or picker filter |
|
|
1103
1200
|
| `Enter` | Accept the prompt or selected picker item |
|
|
1104
1201
|
| `Esc` / `Ctrl-Q` | Cancel the prompt or picker |
|
|
@@ -1159,9 +1256,13 @@ for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
|
1159
1256
|
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1160
1257
|
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1161
1258
|
lets you choose a schema, filter table names as you type, select tables, and
|
|
1162
|
-
optionally remap them to another schema
|
|
1259
|
+
optionally remap them to another schema and prefix tables, indexes, constraints
|
|
1260
|
+
and triggers while updating static table references. It automatically includes related
|
|
1163
1261
|
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1164
|
-
required source-schema tables and
|
|
1262
|
+
required source-schema tables, views, SQL types and program units recursively.
|
|
1263
|
+
Unreadable type or program definitions become named destination prerequisites.
|
|
1264
|
+
Types retain their names; prefixed copies in the source schema reuse existing types.
|
|
1265
|
+
Definitions, constraints, indexes,
|
|
1165
1266
|
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1166
1267
|
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1167
1268
|
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|
|
@@ -537,21 +537,40 @@ wording of either presentation is not part of the API.
|
|
|
537
537
|
|
|
538
538
|
`PluginContext.start_table_ddl_export()` is an additive API-v1 capability.
|
|
539
539
|
It starts a host-owned workflow to choose a source schema, filter and select
|
|
540
|
-
tables, and choose a target schema.
|
|
540
|
+
tables, and choose a target schema and optional table prefix. The prefix renames
|
|
541
|
+
included source-schema tables, indexes, constraints and triggers, and updates
|
|
542
|
+
resolved static references, including foreign keys. Blank preserves original
|
|
543
|
+
names; `TEST` and `TEST_` both prepend `TEST_`. Quoted prefixes preserve exact
|
|
544
|
+
case. Views, routines, SQL types and standalone sequences keep their names.
|
|
545
|
+
Sequences and source-schema packages,
|
|
541
546
|
functions, procedures, and views that directly reference the tables are included
|
|
542
547
|
automatically, without a separate sequence picker. It returns immediately while the host
|
|
543
548
|
reads metadata through the initiating tab's database worker. No connection,
|
|
544
549
|
credentials, cursor, or arbitrary SQL capability crosses the plugin boundary.
|
|
545
550
|
|
|
546
|
-
Required source-schema tables and
|
|
551
|
+
Required source-schema tables, views, SQL types and program units are followed
|
|
552
|
+
recursively; tables include
|
|
547
553
|
their constraints, indexes, triggers, and detected sequences. Selection of callers stays
|
|
548
554
|
limited to direct references to the initially checked tables. Definitions are
|
|
549
555
|
ordered by creation dependencies across object types; unresolved prerequisites
|
|
550
556
|
and genuine dependency cycles are reported in the generated script. Discovery
|
|
551
557
|
prefers ALL_* catalogs and supplements them with accessible DBA_* views.
|
|
558
|
+
Parenthesized static function/package calls in complete stored program source and
|
|
559
|
+
trigger bodies supplement recorded dependencies, while local bindings are excluded.
|
|
560
|
+
Required readable functions precede their callers without selecting unrelated
|
|
561
|
+
functions. Existing source compilation errors are reported with line/column positions;
|
|
562
|
+
export does not recompile source objects or create missing definitions.
|
|
552
563
|
Cross-schema definitions use catalog rendering for supported objects and
|
|
553
564
|
DBMS_METADATA fallback for advanced or incomplete metadata. Own-schema
|
|
554
|
-
definitions retain DBMS_METADATA extraction.
|
|
565
|
+
definitions retain DBMS_METADATA extraction. Type specifications and bodies are
|
|
566
|
+
distinct dependency nodes; TYPE extraction omits source OIDs and combined bodies.
|
|
567
|
+
Complete stored type source is preferred to conservative catalog reconstruction
|
|
568
|
+
of ordinary object types and VARRAYs. Declared column types supplement dictionary
|
|
569
|
+
dependencies, and local/public type synonyms resolve to their canonical owners.
|
|
570
|
+
Unavailable or unsupported type/program definitions remain named prerequisites in
|
|
571
|
+
the destination schema. Unsupported table definitions, cancellation and connection
|
|
572
|
+
failures still abort generation. Same-schema prefixed exports reuse existing types
|
|
573
|
+
and bodies and report them as prerequisites.
|
|
555
574
|
|
|
556
575
|
On success the host opens and activates a new unsaved tab containing the generated
|
|
557
576
|
SQL, with keyboard focus in the editor. Cancellation,
|
|
@@ -47,6 +47,26 @@ UI command as force-disconnected, quarantines that worker, and closes the exact
|
|
|
47
47
|
captured client connection on a best-effort control thread. No server-side kill
|
|
48
48
|
or process termination is attempted, and other tab workers are unaffected.
|
|
49
49
|
|
|
50
|
+
System clipboard access uses a separate lazy worker in `ClipboardController`.
|
|
51
|
+
It processes copy/paste requests in FIFO order, runs only provider calls, and
|
|
52
|
+
returns results through a queue. The main loop and all modal input loops poll
|
|
53
|
+
that queue; while a clipboard request is pending their idle timeout is at most
|
|
54
|
+
100 ms. Only the curses thread updates clipboard state, status and text models.
|
|
55
|
+
Copy and cut update internal text immediately and attempt all configured external
|
|
56
|
+
destinations. Requests capture copy targets or the chosen paste source from the
|
|
57
|
+
workspace's immutable clipboard preferences when submitted. Ctrl-Shift-C copies
|
|
58
|
+
internally only. Internal paste cancels the target's pending callback and uses
|
|
59
|
+
internal text directly; Windows paste waits for pending copies, reads Windows
|
|
60
|
+
exclusively, and reports failure without falling back. Windows writes retry
|
|
61
|
+
through clip.exe after PowerShell failure and use readback verification when
|
|
62
|
+
available; Linux successes cannot hide Windows failures.
|
|
63
|
+
External paste callbacks check the originating
|
|
64
|
+
buffer or modal model, revision, cursor, selection and active target before
|
|
65
|
+
applying one undoable edit. Closing a modal drops its pending callback.
|
|
66
|
+
Clipboard children use isolated pipes, noninteractive PowerShell and a two-second
|
|
67
|
+
provider timeout. Application shutdown cancels queued work and terminates the
|
|
68
|
+
active clipboard child without waiting for normal provider completion.
|
|
69
|
+
|
|
50
70
|
## Editor rendering
|
|
51
71
|
|
|
52
72
|
The SQL document remains in memory, with a lazy `ViewportSyntax` cache owned by
|
|
@@ -72,6 +92,10 @@ invalidate the appropriate rows. The root screen and editor window compose via
|
|
|
72
92
|
`noutrefresh()` and one `doupdate()`, restoring the active cursor after composition.
|
|
73
93
|
Recomposing the retained editor also restores it after overlapping dialogs and
|
|
74
94
|
external terminal use. No document-sized curses pad or rendering thread is used.
|
|
95
|
+
Modal backgrounds use the same active-view composition instead of refreshing
|
|
96
|
+
the root alone. Single-line prompts occupy a separate topmost curses window,
|
|
97
|
+
including when the editor fills the screen. Physical redraw invalidation keeps
|
|
98
|
+
the document and syntax cache intact.
|
|
75
99
|
|
|
76
100
|
## Transaction state
|
|
77
101
|
|
|
@@ -173,7 +173,9 @@ and configuration instructions are in the [catalog](PLUGIN_CATALOG.md#sqlplus-la
|
|
|
173
173
|
`table-ddl-export-0.1.1.plwgn` adds **Database -> Export table DDL** through
|
|
174
174
|
`PluginContext.start_table_ddl_export()`. The host supplies schema/table selection
|
|
175
175
|
with filtering as you type, automatic dependent-object and directly referencing
|
|
176
|
-
program-unit/view extraction,
|
|
176
|
+
program-unit/view extraction, recursive required SQL type and program-unit
|
|
177
|
+
extraction, schema remapping, optional prefixes for tables and
|
|
178
|
+
attached indexes/constraints/triggers, progress, and a new unsaved SQL tab.
|
|
177
179
|
No extra dependencies are required. See the
|
|
178
180
|
[catalog guide](PLUGIN_CATALOG.md#table-ddl-export) for installation and details.
|
|
179
181
|
|