plsqlwks 0.2.2__tar.gz → 0.2.4__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.4}/PKG-INFO +201 -24
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/README.md +198 -23
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/API.md +143 -4
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/ARCHITECTURE.md +51 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/PLUGINS.md +29 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/PLUGIN_CATALOG.md +247 -21
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/__init__.py +1 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/loader.py +2 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/models.py +24 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/settings.py +30 -1
- plsqlwks-0.2.4/plsqlwks/db/ddl_remap.py +452 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/metadata.py +132 -9
- plsqlwks-0.2.4/plsqlwks/db/schema_compare.py +385 -0
- plsqlwks-0.2.4/plsqlwks/db/schema_diagram.py +118 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/session.py +7 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/table_export.py +259 -15
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/table_export_catalog.py +313 -30
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/plugins/__init__.py +10 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/plugins/api.py +56 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/__init__.py +5 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/app.py +70 -7
- plsqlwks-0.2.4/plsqlwks/ui/browser.py +220 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/catalog.py +255 -28
- plsqlwks-0.2.4/plsqlwks/ui/clipboard.py +547 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/commands.py +15 -10
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/constants.py +27 -11
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/dialogs.py +155 -38
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/documents.py +24 -3
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/editor_controller.py +62 -15
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/input_controller.py +12 -2
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/keys.py +16 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/plugin_host.py +36 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/renderer.py +13 -1
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/result_controller.py +43 -30
- plsqlwks-0.2.4/plsqlwks/ui/schema_compare.py +375 -0
- plsqlwks-0.2.4/plsqlwks/ui/schema_diagram.py +254 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/state.py +5 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/table_export.py +19 -3
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/viewport.py +6 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks.egg-info/SOURCES.txt +14 -0
- plsqlwks-0.2.4/plugins/er-diagram/install.plw +7 -0
- plsqlwks-0.2.4/plugins/er-diagram/payload/plugin.py +36 -0
- plsqlwks-0.2.4/plugins/er-diagram/payload/writer.py +252 -0
- plsqlwks-0.2.4/plugins/packages/er-diagram-0.1.3.plwgn +0 -0
- plsqlwks-0.2.4/plugins/packages/schema-compare-0.1.0.plwgn +0 -0
- plsqlwks-0.2.4/plugins/schema-compare/install.plw +7 -0
- plsqlwks-0.2.4/plugins/schema-compare/payload/plugin.py +22 -0
- plsqlwks-0.2.4/plugins/schema-compare/payload/writer.py +172 -0
- plsqlwks-0.2.4/plugins/table-ddl-export/payload/__init__.py +0 -0
- plsqlwks-0.2.4/plugins/xlsx-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/pyproject.toml +3 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/tests/fixtures/ui_exports.txt +5 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/tools/putty_keys.ps1 +26 -5
- plsqlwks-0.2.2/plsqlwks/db/ddl_remap.py +0 -132
- plsqlwks-0.2.2/plsqlwks/ui/browser.py +0 -124
- plsqlwks-0.2.2/plsqlwks/ui/clipboard.py +0 -128
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/COMPATIBILITY.md +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/QUICKSTART.html +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/doc/QUICKSTART.md +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/license.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/__main__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/cli.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/paths.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/config/session.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/dependencies.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/editing.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/execution.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/explain.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/health.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/identifiers.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/models.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/sql_analysis.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/timestamps.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/db/transactions.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/plugins/loader.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/plugins/management.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/sqlbinds.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/sqlsplit.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/application_controller.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/buffer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/code_generation.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/command_dispatcher.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/completion.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/db_operations.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/db_session.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/db_worker.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/dependency_walker.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/display.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/errors.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/help.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/key_reader.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/menu.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/output_selection.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/ports.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/query_controller.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/result_export.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/result_presenter.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/results.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/sql.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/sqlplus.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/ui/syntax.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plsqlwks/workspace.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv-export/payload/writer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv2oratab/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv2oratab/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv2oratab/payload/csv2oratab.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/csv2oratab/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/dependencies-walker/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/dependencies-walker/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/dependencies-walker/payload/plugin.py +0 -0
- {plsqlwks-0.2.2/plugins/html-export → plsqlwks-0.2.4/plugins/er-diagram}/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/html-export/install.plw +0 -0
- {plsqlwks-0.2.2/plugins/sqlplus → plsqlwks-0.2.4/plugins/html-export}/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/html-export/payload/html_exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/html-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/html-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/html-export/payload/writer.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/csv-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/csv2oratab-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/dependencies-walker-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/html-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/sqlplus-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/table-ddl-export-0.1.1.plwgn +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/packages/xlsx-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.2/plugins/table-ddl-export → plsqlwks-0.2.4/plugins/schema-compare}/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/sqlplus/install.plw +0 -0
- {plsqlwks-0.2.2/plugins/xlsx-export → plsqlwks-0.2.4/plugins/sqlplus}/payload/__init__.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/sqlplus/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/table-ddl-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/table-ddl-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/xlsx-export/install.plw +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/xlsx-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/xlsx-export/payload/support.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/plugins/xlsx-export/payload/xlsx_exporting.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/pytest.ini +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/rchar.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/requirements.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/setup.cfg +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/tests/conftest.py +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/tests/fixtures/config_exports.txt +0 -0
- {plsqlwks-0.2.2 → plsqlwks-0.2.4}/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.4
|
|
4
4
|
Summary: An ncurses SQL and PL/SQL workspace for Oracle databases.
|
|
5
5
|
Author: unu2000
|
|
6
6
|
License-Expression: LicenseRef-plsqlwks-Donationware
|
|
@@ -19,6 +19,8 @@ Requires-Python: >=3.10
|
|
|
19
19
|
Description-Content-Type: text/markdown
|
|
20
20
|
License-File: license.txt
|
|
21
21
|
Requires-Dist: oracledb>=2.0
|
|
22
|
+
Provides-Extra: er-diagram
|
|
23
|
+
Requires-Dist: CairoSVG>=2.9.1; extra == "er-diagram"
|
|
22
24
|
Provides-Extra: csv2oratab
|
|
23
25
|
Requires-Dist: cryptography>=42; extra == "csv2oratab"
|
|
24
26
|
Provides-Extra: xlsx
|
|
@@ -533,7 +535,11 @@ After a successful quit, plsqlwks records the open file-backed tabs, active tab,
|
|
|
533
535
|
Worksheet and configuration saves replace their destination atomically while
|
|
534
536
|
preserving an existing file's POSIX permission bits. A
|
|
535
537
|
file-backed worksheet also detects when its file was changed or deleted outside
|
|
536
|
-
plsqlwks and asks whether to overwrite it,
|
|
538
|
+
plsqlwks and asks whether to overwrite it, reload the disk version, save under
|
|
539
|
+
another name, or cancel. Reload is available while the file exists, including
|
|
540
|
+
when a change is detected just before saving. It replaces the editor text
|
|
541
|
+
without writing to disk; Undo can restore local edits. If reading fails, the
|
|
542
|
+
local buffer stays intact.
|
|
537
543
|
Undo and redo update the unsaved-change marker by comparing the current content
|
|
538
544
|
with the last successful save.
|
|
539
545
|
|
|
@@ -613,9 +619,11 @@ Use left Alt for application shortcuts; AltGr remains available for characters
|
|
|
613
619
|
on international keyboards. Shortcut digits and symbols refer to the character
|
|
614
620
|
on the active Windows layout: for example, Czech top-row digits need Shift,
|
|
615
621
|
so Alt-1 is typed with Alt-Shift-1. Use the layout's `+` or `=` character for
|
|
616
|
-
autocomplete refresh.
|
|
617
|
-
|
|
618
|
-
|
|
622
|
+
autocomplete refresh. Ctrl-C/Ctrl-P copy/paste internally, Ctrl-Shift-C/Ctrl-Shift-P
|
|
623
|
+
use the Windows system clipboard, and Alt-Shift-C/Alt-Shift-P use the Linux
|
|
624
|
+
clipboard. Ctrl-V and Ctrl-Shift-V retain their configured paste sources;
|
|
625
|
+
Ctrl-Shift-V defaults to internal paste. SSH does not expose the Windows clipboard to the host. Use
|
|
626
|
+
PuTTY's native paste (`Shift-Insert` or
|
|
619
627
|
right-click) to insert Windows clipboard text as bracketed paste, and PuTTY
|
|
620
628
|
mouse selection to copy to Windows. Leave plsqlwks' Ctrl-letter shortcuts
|
|
621
629
|
available to the server when customizing PuTTY clipboard settings.
|
|
@@ -680,6 +688,104 @@ Run `tools\windows_keys.cmd -SelfTest` to check the helper without enabling it.
|
|
|
680
688
|
The original `powershell.exe -NoProfile -File .\tools\putty_keys.ps1` command
|
|
681
689
|
also works from Command Prompt and continues to support PuTTY.
|
|
682
690
|
|
|
691
|
+
### Windows Terminal and WSL clipboard shortcuts
|
|
692
|
+
|
|
693
|
+
PLSQLWKS provides three clipboard methods: System (Windows), WSL/Linux
|
|
694
|
+
(Wayland/X11), and Internal. WSLg can bridge Windows and Linux contents, so the
|
|
695
|
+
two external methods may access shared contents.
|
|
696
|
+
|
|
697
|
+
| Clipboard | Copy | Paste |
|
|
698
|
+
| --- | --- | --- |
|
|
699
|
+
| System (Windows) | `Ctrl-Shift-C` | `Ctrl-Shift-P` |
|
|
700
|
+
| WSL/Linux | `Alt-Shift-C` | `Alt-Shift-P` |
|
|
701
|
+
| Internal | `Ctrl-C` | `Ctrl-P` |
|
|
702
|
+
|
|
703
|
+
Each fixed shortcut uses only its assigned target. Copying externally leaves
|
|
704
|
+
the internal clipboard unchanged. `Ctrl-C` interrupts a running database
|
|
705
|
+
operation first; otherwise it copies internally. `Ctrl-Alt-C` still commits or
|
|
706
|
+
applies the active insert draft, and `Ctrl-Alt-R` rolls back.
|
|
707
|
+
The copy shortcuts work for editor selections, result cells/ranges,
|
|
708
|
+
DBMS_OUTPUT selections and schema-browser object names. Paste works in the
|
|
709
|
+
worksheet, paste-enabled prompts and editable cell text dialogs.
|
|
710
|
+
|
|
711
|
+
Open **Alt-O → Preferences → Clipboard** to inspect the fixed shortcuts and
|
|
712
|
+
backend capabilities, configure legacy copy/cut destinations and choose the
|
|
713
|
+
sources for `Ctrl-V` and `Ctrl-Shift-V`. Save persists settings in your workspace
|
|
714
|
+
`config.ini`; Cancel discards changes. The new C/P shortcuts ignore these
|
|
715
|
+
settings. `Ctrl-X` and legacy copy commands retain configured destinations and
|
|
716
|
+
an internal copy; cut remains one immediate Undo edit. New workspaces without
|
|
717
|
+
Windows tools default legacy copy/paste to Linux.
|
|
718
|
+
|
|
719
|
+
```ini
|
|
720
|
+
[clipboard]
|
|
721
|
+
copy_to_windows = yes
|
|
722
|
+
copy_to_linux = no
|
|
723
|
+
ctrl_v_source = windows
|
|
724
|
+
ctrl_shift_v_source = internal
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
Paste sources are `windows`, `internal`, or `linux`. Windows paste reads Windows
|
|
728
|
+
exclusively: failure or empty contents causes no insertion and explicit
|
|
729
|
+
feedback. Internal paste performs no OS access and cancels a pending paste for
|
|
730
|
+
that target. The fixed copy shortcuts update only their selected clipboard;
|
|
731
|
+
legacy copy/cut updates internal text immediately and then attempts configured
|
|
732
|
+
external destinations in a background worker. Windows copy tries PowerShell,
|
|
733
|
+
then `clip.exe` on failure, and verifies contents by readback when a reader is
|
|
734
|
+
available. Copy-only Windows access is labelled unverified. Each Linux provider
|
|
735
|
+
is attempted when Linux copying is enabled. A Linux success does not conceal a
|
|
736
|
+
Windows failure.
|
|
737
|
+
|
|
738
|
+
If Windows Terminal consumes a shortcut, forward it to PLSQLWKS.
|
|
739
|
+
To configure explicit forwarding, open **Settings → Open JSON file** and add these
|
|
740
|
+
entries to `actions`, keeping the other actions:
|
|
741
|
+
|
|
742
|
+
```json
|
|
743
|
+
{ "command": { "action": "sendInput", "input": "\u0003" }, "id": "User.PlsqlwksInternalCopy" },
|
|
744
|
+
{ "command": { "action": "sendInput", "input": "\u0010" }, "id": "User.PlsqlwksInternalPaste" },
|
|
745
|
+
{ "command": { "action": "sendInput", "input": "\u001b[99;6u" }, "id": "User.PlsqlwksSystemCopy" },
|
|
746
|
+
{ "command": { "action": "sendInput", "input": "\u001b[112;6u" }, "id": "User.PlsqlwksSystemPaste" },
|
|
747
|
+
{ "command": { "action": "sendInput", "input": "\u001b[99;4u" }, "id": "User.PlsqlwksWslCopy" },
|
|
748
|
+
{ "command": { "action": "sendInput", "input": "\u001b[112;4u" }, "id": "User.PlsqlwksWslPaste" },
|
|
749
|
+
{ "command": { "action": "sendInput", "input": "\u0016" }, "id": "User.PlsqlwksPaste" },
|
|
750
|
+
{ "command": { "action": "sendInput", "input": "\u001b[118;6u" }, "id": "User.PlsqlwksAlternatePaste" }
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
Replace the existing copy/paste entries in `keybindings` with
|
|
754
|
+
the entries below, keeping the other keybindings:
|
|
755
|
+
|
|
756
|
+
```json
|
|
757
|
+
{ "id": "User.PlsqlwksInternalCopy", "keys": "ctrl+c" },
|
|
758
|
+
{ "id": "User.PlsqlwksInternalPaste", "keys": "ctrl+p" },
|
|
759
|
+
{ "id": "User.PlsqlwksSystemCopy", "keys": "ctrl+shift+c" },
|
|
760
|
+
{ "id": "User.PlsqlwksSystemPaste", "keys": "ctrl+shift+p" },
|
|
761
|
+
{ "id": "User.PlsqlwksWslCopy", "keys": "alt+shift+c" },
|
|
762
|
+
{ "id": "User.PlsqlwksWslPaste", "keys": "alt+shift+p" },
|
|
763
|
+
{ "id": "User.PlsqlwksPaste", "keys": "ctrl+v" },
|
|
764
|
+
{ "id": "User.PlsqlwksAlternatePaste", "keys": "ctrl+shift+v" }
|
|
765
|
+
```
|
|
766
|
+
|
|
767
|
+
This setting applies to every Windows Terminal profile and tab. Restart
|
|
768
|
+
plsqlwks after upgrading and reopen Windows Terminal if it retains old bindings.
|
|
769
|
+
The command menu offers equivalents when a terminal intercepts the shortcuts.
|
|
770
|
+
The optional `tools/putty_keys.ps1` helper also forwards these shortcuts when
|
|
771
|
+
enabled for the active Windows terminal window.
|
|
772
|
+
|
|
773
|
+
Keyboard navigation, resizing and dialogs remain available while clipboard
|
|
774
|
+
commands run. Windows paste waits behind pending external copies. If you change
|
|
775
|
+
the paste target's text, cursor, selection or active tab before it finishes, the
|
|
776
|
+
pending paste is cancelled; repeated external paste requests for that target
|
|
777
|
+
are ignored. Requests retain the settings in effect when submitted.
|
|
778
|
+
|
|
779
|
+
For native Windows Terminal paste, wait until application copy reports that the
|
|
780
|
+
Windows clipboard has been updated. Native paste reads the Windows clipboard
|
|
781
|
+
independently and receives no internal fallback. Its bracketed paste payload is
|
|
782
|
+
inserted directly without a second clipboard lookup.
|
|
783
|
+
|
|
784
|
+
Windows Terminal's **Copy on select** setting can overwrite the clipboard when
|
|
785
|
+
you select terminal text with the mouse. Turn it off if you want only explicit
|
|
786
|
+
copy commands to change the Windows clipboard.
|
|
787
|
+
See Microsoft's [send input action](https://learn.microsoft.com/en-us/windows/terminal/customize-settings/actions#send-input).
|
|
788
|
+
|
|
683
789
|
## Keys
|
|
684
790
|
|
|
685
791
|
### Global
|
|
@@ -738,12 +844,16 @@ also works from Command Prompt and continues to support PuTTY.
|
|
|
738
844
|
| `Ctrl-F` | Open literal Find/Replace with the `Find next` action |
|
|
739
845
|
| `Alt-O` -> **Editor** -> **Replace text** | Open Find/Replace at the replacement field |
|
|
740
846
|
| `Ctrl-G` | Go to line |
|
|
741
|
-
| `Ctrl-N`
|
|
847
|
+
| `Ctrl-N` | Move to the next search occurrence |
|
|
848
|
+
| `Alt-O → Editor → Previous search match` | Move to the previous search occurrence |
|
|
742
849
|
| `Ctrl-U` | Uppercase selected SQL code |
|
|
743
850
|
| `Ctrl-L` | Lowercase selected SQL code |
|
|
744
|
-
| `Ctrl-C` | Copy
|
|
851
|
+
| `Ctrl-C` / `Ctrl-P` | Copy/paste internally |
|
|
852
|
+
| `Ctrl-Shift-C` / `Ctrl-Shift-P` | Copy/paste the System (Windows) clipboard |
|
|
853
|
+
| `Alt-Shift-C` / `Alt-Shift-P` | Copy/paste the WSL/Linux clipboard |
|
|
745
854
|
| `Ctrl-X` | Cut selected text |
|
|
746
855
|
| `Ctrl-V` | Paste clipboard text, expanding each tab to two spaces |
|
|
856
|
+
| `Ctrl-Shift-V` | Paste the alternate source (internal by default) |
|
|
747
857
|
| Terminal paste | Paste text as one edit, expanding each tab to two spaces |
|
|
748
858
|
| `Ctrl-Z` / `Ctrl-Y` | Undo / redo |
|
|
749
859
|
| `Ctrl+=` | Reconnect |
|
|
@@ -779,12 +889,13 @@ The dialog provides `Find next`, `Replace`, `Replace all`, and `Cancel` actions.
|
|
|
779
889
|
and lowercase letters. `Replace` changes the selected matching occurrence, or
|
|
780
890
|
the next match from the cursor, and then selects the following match. `Replace
|
|
781
891
|
all` changes every match in the current buffer. Either replacement operation is
|
|
782
|
-
recorded as one undoable edit. `Ctrl-N`
|
|
783
|
-
|
|
892
|
+
recorded as one undoable edit. `Ctrl-N` repeats the last search forward;
|
|
893
|
+
**Alt-O → Editor → Previous search match** repeats it backward. Both retain the
|
|
894
|
+
case setting and wrap around.
|
|
784
895
|
|
|
785
896
|
Editor paste expands every tab character to two spaces and keeps multiline
|
|
786
|
-
text in one undoable edit. This applies to
|
|
787
|
-
|
|
897
|
+
text in one undoable edit. This applies to all fixed and configured paste shortcuts and
|
|
898
|
+
to native terminal paste while the editor is focused;
|
|
788
899
|
clipboard contents themselves are not changed. Native paste requires a
|
|
789
900
|
terminal that supports the standard bracketed-paste protocol, with `Ctrl-V`
|
|
790
901
|
remaining available as the fallback.
|
|
@@ -830,7 +941,9 @@ Read-only mode is a client-side guardrail that rejects statements which the SQL
|
|
|
830
941
|
| `Home` / `End` | Move to the first/last result-grid column |
|
|
831
942
|
| `Ctrl-Home` / `Ctrl-End` | Move to the first/last result-grid row |
|
|
832
943
|
| `F8` | Toggle result grid / row-detail output |
|
|
833
|
-
| `Ctrl-C` | Copy
|
|
944
|
+
| `Ctrl-C` | Copy a cell/range internally; ranges offer header handling |
|
|
945
|
+
| `Ctrl-Shift-C` | Copy the same cell/range to System (Windows) |
|
|
946
|
+
| `Alt-Shift-C` | Copy the same cell/range to WSL/Linux |
|
|
834
947
|
| `F10` | View or edit a mapped text cell in a ROWID-backed result |
|
|
835
948
|
| `Enter` | Edit the selected ROWID-backed result cell when available |
|
|
836
949
|
| `INS` | Prepare a draft insert row for ROWID-backed results |
|
|
@@ -919,8 +1032,9 @@ move within a displayed line; Ctrl+Home/End move to the output boundaries.
|
|
|
919
1032
|
|
|
920
1033
|
Copying preserves the stored text, whitespace, blank lines, and statement
|
|
921
1034
|
headings, without screen wrapping or padding. The existing system clipboard
|
|
922
|
-
|
|
923
|
-
|
|
1035
|
+
backends are reused: Ctrl+C copies internally, Ctrl+Shift+C copies to Windows,
|
|
1036
|
+
and Alt+Shift+C copies to WSL/Linux. Fixed external shortcuts do not fall back
|
|
1037
|
+
to another clipboard. Ctrl+C still cancels a running operation
|
|
924
1038
|
before performing a copy. Selection belongs to its file tab, survives appended
|
|
925
1039
|
output and resizing, and resets when execution replaces the output.
|
|
926
1040
|
|
|
@@ -1098,9 +1212,39 @@ validate this opt-in mode with the applications in use.
|
|
|
1098
1212
|
|
|
1099
1213
|
### Schema Browser
|
|
1100
1214
|
|
|
1101
|
-
The `F9` schema browser groups tables, views, procedures, functions,
|
|
1102
|
-
|
|
1103
|
-
Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load DDL`, or `Copy object name`. `Insert SELECT` adds a `select *` statement for the SQL-safe, unqualified object name to the current buffer and focuses the editor; it does not execute the query. `Copy object name` places that SQL-ready, unqualified identifier on the clipboard. For other object types, `Enter` offers `Load DDL` (the default) and `Copy object name`.
|
|
1215
|
+
The `F9` schema browser groups tables, views, procedures, functions, package specifications, package bodies, triggers, sequences, indexes, and private synonyms from the current schema. Type while the browser is focused to filter object names with a case-insensitive substring match; groups without matches are hidden and matching groups expand automatically without changing their saved expansion state. Exact quoted and mixed-case names are preserved when columns, routines or definitions are loaded, with Oracle-safe quoting applied to metadata requests.
|
|
1216
|
+
|
|
1217
|
+
Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load DDL`, or `Copy object name`. `Insert SELECT` adds a `select *` statement for the SQL-safe, unqualified object name to the current buffer and focuses the editor; it does not execute the query. `Copy object name` places that SQL-ready, unqualified identifier on the clipboard. For standalone procedures, functions and other object types, `Enter` offers `Load DDL` (the default) and `Copy object name`.
|
|
1218
|
+
|
|
1219
|
+
Package specifications and bodies show their own compilation status immediately
|
|
1220
|
+
before the package name: `C` means compiled, `I` means invalid compilation and
|
|
1221
|
+
`?` means status unavailable. A compiled specification can have an invalid body.
|
|
1222
|
+
Press `Enter` on either part to load the specification, body or both, or copy
|
|
1223
|
+
the package name. The selected part is the default; unavailable parts are
|
|
1224
|
+
omitted. Each loading mode has its own tab, and loading both puts the
|
|
1225
|
+
specification before the body in one SQL buffer.
|
|
1226
|
+
|
|
1227
|
+
Press `Space` on either package part to expand its public procedures and
|
|
1228
|
+
functions, including while filtering. The browser loads signatures in the
|
|
1229
|
+
background and shares the cache between the two package sections. `P` marks a
|
|
1230
|
+
procedure and `F` a function; overloads have separate signature rows. Private
|
|
1231
|
+
body routines are excluded because a worksheet cannot call them.
|
|
1232
|
+
Press `Enter` on a routine to insert a default PL/SQL call block at the current
|
|
1233
|
+
cursor, replacing selected text as one undoable edit, and focus the editor.
|
|
1234
|
+
The block declares typed variables for every parameter, including parameters
|
|
1235
|
+
with defaults and OUT/IN OUT parameters, and a result variable for functions.
|
|
1236
|
+
Edit the input values before running it. Insertion does not execute or compile
|
|
1237
|
+
the call. Unsupported or incomplete signatures report a reason and leave the
|
|
1238
|
+
buffer unchanged.
|
|
1239
|
+
|
|
1240
|
+
Press `Space` on a table or view to expand or collapse its column subtree,
|
|
1241
|
+
including while filtering. Column names appear in database order and are loaded
|
|
1242
|
+
in the background on first expansion, then cached. Columns are informational
|
|
1243
|
+
leaf rows; object actions apply to their parent table or view. `Ctrl-F` opens an
|
|
1244
|
+
object-name filter prompt that accepts spaces. Filtering matches object names
|
|
1245
|
+
and shows all children beneath expanded matching objects. `Ctrl-R` refreshes
|
|
1246
|
+
objects and package statuses, clears cached columns and routines, and collapses
|
|
1247
|
+
object branches, retaining the filter and group expansion state.
|
|
1104
1248
|
|
|
1105
1249
|
| Key | Action |
|
|
1106
1250
|
| --- | --- |
|
|
@@ -1109,9 +1253,10 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1109
1253
|
| `Esc` | Clear a nonempty filter, or return to the editor when the filter is empty |
|
|
1110
1254
|
| `Up` / `Down` | Move through browser entries |
|
|
1111
1255
|
| `PageUp` / `PageDown` | Move through browser entries by page |
|
|
1112
|
-
| `Enter` | Expand a group
|
|
1113
|
-
| `Space` | Expand/collapse
|
|
1114
|
-
| `Ctrl-
|
|
1256
|
+
| `Enter` | Expand a group, choose an object action, or insert a package routine call |
|
|
1257
|
+
| `Space` | Expand/collapse table/view columns or package routines; on groups, expand/collapse with an empty filter or add a space to an active filter |
|
|
1258
|
+
| `Ctrl-F` | Edit the object-name filter, including spaces |
|
|
1259
|
+
| `Ctrl-R` | Refresh database objects/statuses and clear column/routine subtrees and caches |
|
|
1115
1260
|
|
|
1116
1261
|
### Cell Viewer
|
|
1117
1262
|
|
|
@@ -1123,7 +1268,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1123
1268
|
| `PageUp` / `PageDown` | Scroll cell text by page |
|
|
1124
1269
|
| `Home` / `End` | Move to the first/last cell-viewer line |
|
|
1125
1270
|
| `Ctrl-S` (editor) | Save the multiline edit |
|
|
1126
|
-
| `Ctrl-
|
|
1271
|
+
| `Ctrl-P` / `Ctrl-Shift-P` / `Alt-Shift-P` / configured V keys / terminal paste (editor) | Paste exact clipboard text as one undoable edit |
|
|
1127
1272
|
| `Enter` (editor) | Insert a newline |
|
|
1128
1273
|
| `F10` / `Esc` / `Ctrl-Q` (editor) | Cancel the multiline edit |
|
|
1129
1274
|
|
|
@@ -1132,7 +1277,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1132
1277
|
| Key | Action |
|
|
1133
1278
|
| --- | --- |
|
|
1134
1279
|
| 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 |
|
|
1280
|
+
| `Ctrl-V` / `Ctrl-Shift-V` / terminal paste | Paste single-line text; tabs are preserved and multiline text is rejected |
|
|
1136
1281
|
| `Backspace` | Delete before the prompt cursor or picker filter |
|
|
1137
1282
|
| `Enter` | Accept the prompt or selected picker item |
|
|
1138
1283
|
| `Esc` / `Ctrl-Q` | Cancel the prompt or picker |
|
|
@@ -1190,12 +1335,44 @@ for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
|
1190
1335
|
|
|
1191
1336
|
### Table DDL Export
|
|
1192
1337
|
|
|
1338
|
+
### Schema Compare
|
|
1339
|
+
|
|
1340
|
+
Install `plugins/packages/schema-compare-0.1.0.plwgn` and restart the updated
|
|
1341
|
+
host. **Alt-O -> Database -> Compare schema objects** chooses two schemas on
|
|
1342
|
+
the current connection and compares visible object names/types and logical
|
|
1343
|
+
definitions. Browse changed, one-sided, equal and unavailable objects; filter
|
|
1344
|
+
by name/type/status, open unified differences with Enter, and cycle original
|
|
1345
|
+
definitions with Tab. **Ctrl-E** exports all or filtered differences to CSV,
|
|
1346
|
+
HTML or XLSX, including summaries, line numbers and visibility notes. CSV/HTML
|
|
1347
|
+
need no extra; XLSX uses `plsqlwks[xlsx]`. The comparison preserves transactions,
|
|
1348
|
+
sequence state and the original editor/results. See the
|
|
1349
|
+
[catalog guide](doc/PLUGIN_CATALOG.md#schema-compare) for rules and limits.
|
|
1350
|
+
|
|
1351
|
+
### E-R Diagram
|
|
1352
|
+
|
|
1353
|
+
Install `plugins/packages/er-diagram-0.1.3.plwgn` with `plsqlwks plugin install`
|
|
1354
|
+
and restart the updated host. **Alt-O -> Database -> Export E-R Diagram (SVG/PNG/PDF)**
|
|
1355
|
+
opens a **Bright / Dark** theme picker followed by an **SVG / PNG / PDF** format
|
|
1356
|
+
picker. Use arrow keys and Enter; defaults are Bright and SVG. Then filter and
|
|
1357
|
+
check current-schema tables and views and export their columns, keys and
|
|
1358
|
+
foreign-key relationships. Connectors show numbered foreign-key names matching
|
|
1359
|
+
the detailed relationship notes. Relative destinations use the results directory.
|
|
1360
|
+
SVG uses the standard library; PNG/PDF require the optional `er-diagram` extra
|
|
1361
|
+
and the Cairo library. See the catalog for installation instructions.
|
|
1362
|
+
See the [catalog guide](doc/PLUGIN_CATALOG.md#e-r-diagram) for controls and limits.
|
|
1363
|
+
|
|
1364
|
+
### Table DDL Export
|
|
1365
|
+
|
|
1193
1366
|
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1194
1367
|
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1195
1368
|
lets you choose a schema, filter table names as you type, select tables, and
|
|
1196
|
-
optionally remap them to another schema
|
|
1369
|
+
optionally remap them to another schema and prefix tables, indexes, constraints
|
|
1370
|
+
and triggers while updating static table references. It automatically includes related
|
|
1197
1371
|
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1198
|
-
required source-schema tables and
|
|
1372
|
+
required source-schema tables, views, SQL types and program units recursively.
|
|
1373
|
+
Unreadable type or program definitions become named destination prerequisites.
|
|
1374
|
+
Types retain their names; prefixed copies in the source schema reuse existing types.
|
|
1375
|
+
Definitions, constraints, indexes,
|
|
1199
1376
|
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1200
1377
|
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1201
1378
|
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|