plsqlwks 0.2.1__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.1 → plsqlwks-0.2.3}/PKG-INFO +117 -12
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/README.md +116 -11
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/API.md +26 -3
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/ARCHITECTURE.md +54 -2
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/PLUGINS.md +3 -1
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/PLUGIN_CATALOG.md +137 -18
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/QUICKSTART.md +3 -2
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/__init__.py +1 -1
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/loader.py +2 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/models.py +24 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/settings.py +30 -1
- plsqlwks-0.2.3/plsqlwks/db/ddl_remap.py +452 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/metadata.py +4 -2
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/table_export.py +295 -52
- plsqlwks-0.2.3/plsqlwks/db/table_export_catalog.py +771 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/sqlsplit.py +10 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/__init__.py +2 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/app.py +35 -3
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/buffer.py +47 -1
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/catalog.py +22 -7
- plsqlwks-0.2.3/plsqlwks/ui/clipboard.py +513 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/commands.py +4 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/constants.py +11 -7
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/dialogs.py +161 -35
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/documents.py +24 -3
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/editor_controller.py +43 -15
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/input_controller.py +4 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/keys.py +8 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/ports.py +2 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/query_controller.py +3 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/renderer.py +109 -16
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/result_controller.py +31 -29
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/syntax.py +140 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/table_export.py +29 -7
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks.egg-info/SOURCES.txt +1 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/tests/fixtures/ui_exports.txt +2 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/tools/putty_keys.ps1 +6 -0
- plsqlwks-0.2.1/plsqlwks/db/ddl_remap.py +0 -132
- plsqlwks-0.2.1/plsqlwks/ui/clipboard.py +0 -111
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/COMPATIBILITY.md +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/doc/QUICKSTART.html +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/license.txt +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/__main__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/cli.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/paths.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/config/session.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/dependencies.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/editing.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/execution.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/explain.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/health.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/identifiers.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/models.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/session.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/sql_analysis.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/timestamps.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/db/transactions.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/exporting.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/plugins/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/plugins/api.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/plugins/loader.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/plugins/management.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/sqlbinds.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/application_controller.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/browser.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/code_generation.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/command_dispatcher.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/completion.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/db_operations.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/db_session.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/db_worker.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/dependency_walker.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/display.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/errors.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/help.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/key_reader.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/menu.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/output_selection.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/plugin_host.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/result_export.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/result_presenter.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/results.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/sql.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/sqlplus.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/state.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/ui/viewport.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plsqlwks/workspace.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv-export/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv-export/payload/support.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv-export/payload/writer.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv2oratab/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/csv2oratab.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/csv2oratab/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/dependencies-walker/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/dependencies-walker/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/dependencies-walker/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/payload/html_exporting.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/payload/support.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/html-export/payload/writer.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/csv-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/csv2oratab-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/dependencies-walker-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/html-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/sqlplus-0.1.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/table-ddl-export-0.1.1.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/packages/xlsx-export-1.0.0.plwgn +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/sqlplus/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/sqlplus/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/sqlplus/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/table-ddl-export/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/table-ddl-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/table-ddl-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/xlsx-export/install.plw +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/__init__.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/plugin.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/support.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/plugins/xlsx-export/payload/xlsx_exporting.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/pyproject.toml +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/pytest.ini +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/rchar.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/requirements.txt +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/setup.cfg +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/tests/conftest.py +0 -0
- {plsqlwks-0.2.1 → plsqlwks-0.2.3}/tests/fixtures/config_exports.txt +0 -0
- {plsqlwks-0.2.1 → 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,19 +836,25 @@ 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 |
|
|
750
846
|
|
|
751
847
|
Use `/` on a line by itself after PL/SQL objects or anonymous blocks when running a script.
|
|
848
|
+
With no selection, `F11` asks: **To run the whole buffer, press Enter. Esc cancels.**
|
|
849
|
+
Press Enter to continue or Esc/Ctrl+C to cancel before bind prompts and execution.
|
|
850
|
+
Executing selected text does not require this additional confirmation.
|
|
752
851
|
Script execution reports statement progress as `n/total` and stops at the first
|
|
753
852
|
failed statement while preserving earlier results. Scripts are sent directly to
|
|
754
853
|
Oracle, not through SQL*Plus or SQLcl: client commands such as `PROMPT`, `SPOOL`,
|
|
755
854
|
and `SET SERVEROUTPUT`, and `&`/`&&` substitution variables, are rejected before
|
|
756
855
|
bind prompts or execution. Oracle SQL statements such as `SET TRANSACTION`
|
|
757
|
-
remain supported.
|
|
856
|
+
remain supported. A standalone `SET DEFINE OFF` line is accepted locally and
|
|
857
|
+
omitted from database execution. It does not enable substitution variables.
|
|
758
858
|
Execution and explain errors report mapped editor line and column diagnostics.
|
|
759
859
|
The cursor moves only when the buffer still matches the source that was sent to
|
|
760
860
|
Oracle; if it changed while the operation ran, the result warns about the stale
|
|
@@ -779,8 +879,8 @@ recorded as one undoable edit. `Ctrl-N` and `Ctrl-P` repeat the last search with
|
|
|
779
879
|
its case setting, forward or backward with wraparound.
|
|
780
880
|
|
|
781
881
|
Editor paste expands every tab character to two spaces and keeps multiline
|
|
782
|
-
text in one undoable edit. This applies to
|
|
783
|
-
|
|
882
|
+
text in one undoable edit. This applies to both configured paste shortcuts and
|
|
883
|
+
to native terminal paste while the editor is focused;
|
|
784
884
|
clipboard contents themselves are not changed. Native paste requires a
|
|
785
885
|
terminal that supports the standard bracketed-paste protocol, with `Ctrl-V`
|
|
786
886
|
remaining available as the fallback.
|
|
@@ -827,6 +927,7 @@ Read-only mode is a client-side guardrail that rejects statements which the SQL
|
|
|
827
927
|
| `Ctrl-Home` / `Ctrl-End` | Move to the first/last result-grid row |
|
|
828
928
|
| `F8` | Toggle result grid / row-detail output |
|
|
829
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 |
|
|
830
931
|
| `F10` | View or edit a mapped text cell in a ROWID-backed result |
|
|
831
932
|
| `Enter` | Edit the selected ROWID-backed result cell when available |
|
|
832
933
|
| `INS` | Prepare a draft insert row for ROWID-backed results |
|
|
@@ -1119,7 +1220,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1119
1220
|
| `PageUp` / `PageDown` | Scroll cell text by page |
|
|
1120
1221
|
| `Home` / `End` | Move to the first/last cell-viewer line |
|
|
1121
1222
|
| `Ctrl-S` (editor) | Save the multiline edit |
|
|
1122
|
-
| `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 |
|
|
1123
1224
|
| `Enter` (editor) | Insert a newline |
|
|
1124
1225
|
| `F10` / `Esc` / `Ctrl-Q` (editor) | Cancel the multiline edit |
|
|
1125
1226
|
|
|
@@ -1128,7 +1229,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1128
1229
|
| Key | Action |
|
|
1129
1230
|
| --- | --- |
|
|
1130
1231
|
| Printable text | Type into prompts or filter picker options |
|
|
1131
|
-
| `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 |
|
|
1132
1233
|
| `Backspace` | Delete before the prompt cursor or picker filter |
|
|
1133
1234
|
| `Enter` | Accept the prompt or selected picker item |
|
|
1134
1235
|
| `Esc` / `Ctrl-Q` | Cancel the prompt or picker |
|
|
@@ -1189,9 +1290,13 @@ for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
|
1189
1290
|
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1190
1291
|
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1191
1292
|
lets you choose a schema, filter table names as you type, select tables, and
|
|
1192
|
-
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
|
|
1193
1295
|
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1194
|
-
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,
|
|
1195
1300
|
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1196
1301
|
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1197
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,19 +802,25 @@ 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 |
|
|
716
812
|
|
|
717
813
|
Use `/` on a line by itself after PL/SQL objects or anonymous blocks when running a script.
|
|
814
|
+
With no selection, `F11` asks: **To run the whole buffer, press Enter. Esc cancels.**
|
|
815
|
+
Press Enter to continue or Esc/Ctrl+C to cancel before bind prompts and execution.
|
|
816
|
+
Executing selected text does not require this additional confirmation.
|
|
718
817
|
Script execution reports statement progress as `n/total` and stops at the first
|
|
719
818
|
failed statement while preserving earlier results. Scripts are sent directly to
|
|
720
819
|
Oracle, not through SQL*Plus or SQLcl: client commands such as `PROMPT`, `SPOOL`,
|
|
721
820
|
and `SET SERVEROUTPUT`, and `&`/`&&` substitution variables, are rejected before
|
|
722
821
|
bind prompts or execution. Oracle SQL statements such as `SET TRANSACTION`
|
|
723
|
-
remain supported.
|
|
822
|
+
remain supported. A standalone `SET DEFINE OFF` line is accepted locally and
|
|
823
|
+
omitted from database execution. It does not enable substitution variables.
|
|
724
824
|
Execution and explain errors report mapped editor line and column diagnostics.
|
|
725
825
|
The cursor moves only when the buffer still matches the source that was sent to
|
|
726
826
|
Oracle; if it changed while the operation ran, the result warns about the stale
|
|
@@ -745,8 +845,8 @@ recorded as one undoable edit. `Ctrl-N` and `Ctrl-P` repeat the last search with
|
|
|
745
845
|
its case setting, forward or backward with wraparound.
|
|
746
846
|
|
|
747
847
|
Editor paste expands every tab character to two spaces and keeps multiline
|
|
748
|
-
text in one undoable edit. This applies to
|
|
749
|
-
|
|
848
|
+
text in one undoable edit. This applies to both configured paste shortcuts and
|
|
849
|
+
to native terminal paste while the editor is focused;
|
|
750
850
|
clipboard contents themselves are not changed. Native paste requires a
|
|
751
851
|
terminal that supports the standard bracketed-paste protocol, with `Ctrl-V`
|
|
752
852
|
remaining available as the fallback.
|
|
@@ -793,6 +893,7 @@ Read-only mode is a client-side guardrail that rejects statements which the SQL
|
|
|
793
893
|
| `Ctrl-Home` / `Ctrl-End` | Move to the first/last result-grid row |
|
|
794
894
|
| `F8` | Toggle result grid / row-detail output |
|
|
795
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 |
|
|
796
897
|
| `F10` | View or edit a mapped text cell in a ROWID-backed result |
|
|
797
898
|
| `Enter` | Edit the selected ROWID-backed result cell when available |
|
|
798
899
|
| `INS` | Prepare a draft insert row for ROWID-backed results |
|
|
@@ -1085,7 +1186,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1085
1186
|
| `PageUp` / `PageDown` | Scroll cell text by page |
|
|
1086
1187
|
| `Home` / `End` | Move to the first/last cell-viewer line |
|
|
1087
1188
|
| `Ctrl-S` (editor) | Save the multiline edit |
|
|
1088
|
-
| `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 |
|
|
1089
1190
|
| `Enter` (editor) | Insert a newline |
|
|
1090
1191
|
| `F10` / `Esc` / `Ctrl-Q` (editor) | Cancel the multiline edit |
|
|
1091
1192
|
|
|
@@ -1094,7 +1195,7 @@ Press `Enter` on a table or view to choose `Insert SELECT` (the default), `Load
|
|
|
1094
1195
|
| Key | Action |
|
|
1095
1196
|
| --- | --- |
|
|
1096
1197
|
| Printable text | Type into prompts or filter picker options |
|
|
1097
|
-
| `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 |
|
|
1098
1199
|
| `Backspace` | Delete before the prompt cursor or picker filter |
|
|
1099
1200
|
| `Enter` | Accept the prompt or selected picker item |
|
|
1100
1201
|
| `Esc` / `Ctrl-Q` | Cancel the prompt or picker |
|
|
@@ -1155,9 +1256,13 @@ for the exact manifest, source layout, validation, replacement, and trust rules.
|
|
|
1155
1256
|
Install `plugins/packages/table-ddl-export-0.1.1.plwgn` with
|
|
1156
1257
|
`plsqlwks plugin install` and restart. **Alt-O -> Database -> Export table DDL**
|
|
1157
1258
|
lets you choose a schema, filter table names as you type, select tables, and
|
|
1158
|
-
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
|
|
1159
1261
|
sequences and directly referencing packages, functions, procedures, and views, and follows
|
|
1160
|
-
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,
|
|
1161
1266
|
foreign keys and triggers are ordered by creation dependencies in a new
|
|
1162
1267
|
unsaved SQL tab for review. Generation activates that tab and focuses its editor.
|
|
1163
1268
|
See the [selection keys and remapping details](doc/PLUGIN_CATALOG.md#table-ddl-export).
|
|
@@ -537,17 +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
|
-
and genuine dependency cycles are reported in the generated script.
|
|
556
|
+
and genuine dependency cycles are reported in the generated script. Discovery
|
|
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.
|
|
563
|
+
Cross-schema definitions use catalog rendering for supported objects and
|
|
564
|
+
DBMS_METADATA fallback for advanced or incomplete metadata. Own-schema
|
|
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.
|
|
551
574
|
|
|
552
575
|
On success the host opens and activates a new unsaved tab containing the generated
|
|
553
576
|
SQL, with keyboard focus in the editor. Cancellation,
|
|
@@ -47,6 +47,56 @@ 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
|
+
|
|
70
|
+
## Editor rendering
|
|
71
|
+
|
|
72
|
+
The SQL document remains in memory, with a lazy `ViewportSyntax` cache owned by
|
|
73
|
+
each `Buffer`. The cache keeps line-boundary lexer states and code-bracket
|
|
74
|
+
positions for scanned lines, but retains tokens only for the visible rows and
|
|
75
|
+
one screen above and below. Buffer edits, completion, and undo/redo report their
|
|
76
|
+
changed line ranges. Parsing resumes from the first invalid line and reuses the
|
|
77
|
+
unchanged suffix once its incoming lexer state agrees again. Display and cursor
|
|
78
|
+
movement do not join or tokenize the entire document.
|
|
79
|
+
|
|
80
|
+
Cold jumps and edits that change multiline strings or comments may need context
|
|
81
|
+
from earlier lines. Parsing and distant bracket searches run in cooperative
|
|
82
|
+
8 ms batches on the curses thread. Unresolved rows appear immediately in the
|
|
83
|
+
default text style; accurate highlighting follows as context becomes available.
|
|
84
|
+
The event loop polls input and database completions between batches, without
|
|
85
|
+
the normal 200 ms idle delay. The budget is checked between lines and bracket
|
|
86
|
+
positions; an exceptionally long individual line can exceed it.
|
|
87
|
+
|
|
88
|
+
`Renderer` retains a curses window sized to the editor viewport. Small vertical
|
|
89
|
+
scrolls move its existing rows, and row signatures limit painting to exposed or
|
|
90
|
+
changed text, selection, and bracket overlays. Geometry or active-buffer changes
|
|
91
|
+
invalidate the appropriate rows. The root screen and editor window compose via
|
|
92
|
+
`noutrefresh()` and one `doupdate()`, restoring the active cursor after composition.
|
|
93
|
+
Recomposing the retained editor also restores it after overlapping dialogs and
|
|
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.
|
|
99
|
+
|
|
50
100
|
## Transaction state
|
|
51
101
|
|
|
52
102
|
Each worker-owned `OracleWorkspace` is the detailed source of truth. It tracks
|
|
@@ -116,8 +166,10 @@ The Table DDL Export command delegates through `start_table_ddl_export()`.
|
|
|
116
166
|
Its host controller owns the table checklist with incremental substring filtering
|
|
117
167
|
and cancellable worker jobs. Its database service discovers related sequences
|
|
118
168
|
and directly referencing source-schema program units using bound dictionary
|
|
119
|
-
reads, orders included routines by dependency, and
|
|
120
|
-
|
|
169
|
+
reads, orders included routines by dependency, and supplements ALL_* discovery
|
|
170
|
+
with accessible DBA_* views. Cross-schema definitions use conservative catalog
|
|
171
|
+
renderers; own-schema and unsupported definitions use per-handle DBMS_METADATA
|
|
172
|
+
transforms. Generation creates a fresh unsaved tab only for the originating
|
|
121
173
|
editor/session. Identifier-aware remapping preserves literals and comments and
|
|
122
174
|
reports ambiguous references. The plugin itself never receives database or UI
|
|
123
175
|
internals and generated SQL is never automatically executed.
|
|
@@ -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
|
|