Commit Graph

187 Commits

Author SHA1 Message Date
d42ed7e460 Merge pull request 'develop' (#3) from develop into master
Reviewed-on: #3
2026-03-23 04:51:22 +00:00
2758d6b62b Fix multi-select word movement for snake_case and add Ctrl+scroll zoom
- Implement snake_case-aware word movement treating underscores as part of words
- Fix selection edge detection to only move word markers when caret is at appropriate boundary
- Add INSERT state guards to line_up/down commands to prevent movement in non-insert modes
- Add Ctrl+scroll zoom in/out functionality for text size
2026-03-22 23:47:27 -05:00
9f1c3cc452 Made explicit that LSP Manager should pre-launch when autoload true/unset 2026-03-22 17:37:49 -05:00
7c4c9ecf88 Refactor file loading to detect external modifications and add reload capability
- Extract _load_data() method from load_path() for reuse in reload()
- Add is_extters externally_modified() to track file state changes (mtime/size)
- Replace load_bytes() with load_contents() for better error handling
- Add reload() method to re-read file from disk
- Fix file_state_watcher by properly detecting external changes
2026-03-22 00:35:51 -05:00
0b231ac749 feat: Complete plugin lifecycle management with lazy loading and runtime reload
Major changes:
- Add unload() method to all plugins for proper cleanup (unregister commands/providers/LSP clients, destroy widgets, clear state)
- Implement lazy widget loading via "show" signal across all containers
- Add autoload: false manifest option for manual/conditional plugin loading
- Add Plugins UI with runtime load/unload toggle via Ctrl+Shift+p
- Implement controller unregistration system with proper signal disconnection
- Add new events: UnregisterCommandEvent, GetFilesEvent, GetSourceViewsEvent, TogglePluginsUiEvent
- Fix signal leaks by tracking and disconnecting handlers in widgets (search/replace, LSP manager, tabs, telescope, markdown preview)
- Add Save/Save As to tabs context menu
- Improve search/replace behavior (selection handling, focus management)
- Add telescope file initialization from existing loaded files
- Refactor plugin reload watcher to dynamically add/remove plugins on filesystem changes
- Add new plugins: file_history, extend_source_view_menu, godot_lsp_client
- Fix bug in prettify_json (undefined variable reference
2026-03-21 13:26:12 -05:00
0fc440e7ce Add dynamic EventNamespace for event type access and refactor LSP manager initialization
- Create EventNamespace class to enable Code_Event_Types.RegisterLspClientEvent access
- Move set_event_hub call from plugin to lsp_manager._do_bind_mapping
- Update event type references to use Code_Event_Types namespace
2026-03-15 23:40:40 -05:00
080ba41cf1 Remove custom LSP manager plugins and add new language server clients
- Delete old lsp_manager plugin (custom websocket-based LSP client implementation)
- Delete java_lsp_client plugin
- Delete python_lsp_client plugin
- Remove unused LSP DTO files in src/libs/dto/code/lsp/
- Add new language_server_clients plugin directory
- Improve event_factory with register_events method
- Add PYTHONDONTWRITEBYTECODE to user config
- Update events init.py docstring
2026-03-15 20:45:58 -05:00
d1643091c3 refactor: remove LSPServerEventsMixin and clean up websocket tests
- Delete unused websocket library test files
- Remove LSPServerEventsMixin and inline its methods into response handlers
- Clean up unused imports (ThreadPoolExecutor, ABC, LSP message structs)
2026-03-15 03:35:18 -05:00
a4ef662da7 refactor(lsp-manager): replace handler architecture with response registry and modular providers
* Remove legacy handlers system (BaseHandler, DefaultHandler, JavaHandler, PythonHandler, HandlerRegistry)
* Introduce response_handlers module with ResponseRegistry for LSP response routing
* Replace HandlerRegistry usage in LSPManager with ResponseRegistry
* Convert LSPManagerUI client lifecycle to GObject signals
* Remove GLib.idle_add usage in LSP client event dispatch
* Move completion request logic into LSPServerEventsMixin
* Replace provider.py and provider_response_cache.py with modular provider/ package
* Simplify plugin wiring via response_registry.set_event_hub()

This refactor decouples response handling, simplifies event flow, and prepares
the LSP manager for easier language-specific extensions.
2026-03-15 01:50:23 -05:00
6cb66985aa refactor(lsp): replace controller layer with client module and LSPManager orchestration
* Rename legacy controller subsystem (LSPController, websocket controller, controller events, and base classes)
    into clarified client module for LSP communication
* Structure around LSPManager and LSPManagerClient to handle orchestration and client lifecycle
* Update plugin integration to use LSPManager instead of LSPController
* Simplify architecture by reducing controller indirection
2026-03-12 00:04:08 -05:00
52db0b8a31 refactor(lsp): restructure lsp plugin controller architecture and simplify provider cache
- Replace LSPManager usage with LSPController integration
- Move UI access through lsp_controller.lsp_manager_ui
- Remove legacy ProviderResponseCache client management
- Simplify completion filtering and matcher handling
- Improve typing annotations and modernize union syntax
- Clean up unused imports and dead code
- Fix completion item parsing for insertText/textEdit fallbacks
- Add async-safe scrolling via GLib.idle_add
2026-03-11 23:15:19 -05:00
3dfb198aa5 feat(lsp): support Java class file contents and improve definition navigation handling
- Add `_lsp_java_class_file_contents` request to fetch contents of compiled Java classes via LSP (`java/classFileContents`).
- Handle `java/classFileContents` responses by opening a new buffer with Java syntax highlighting and inserting the returned source.
- Update definition handling to pass URI and range, enabling precise cursor placement after navigation.
- Detect `jdt://` URIs in `textDocument/definition` responses and request class file contents instead of direct navigation.
- Move goto navigation logic into `LSPServerEventsMixin`, using event system to access the active view and position the cursor.
- Expose `emit` and `emit_to` to the response cache for event dispatching.
- Restrict completion activation to `USER_REQUESTED`.
- Add TODO note about mapping language IDs to dedicated response handlers.
2026-03-08 17:54:21 -05:00
449e3c7eb9 Fix on load scroll pointer into view 2026-03-08 15:11:06 -05:00
9987a1a21e refactor(code): move temp cut buffer feature and clean up related code
- Moved cut_to_temp_buffer and paste_temp_buffer commands to plugin
- Remove temporary cut buffer logic from SourceView
- Remove related keybindings (Ctrl+K / Ctrl+U)
- Fix word-end detection in ProviderResponseCacheBase to avoid extending past line end
- Improve completion controller to support RequestCompletionEvent with optional provider filtering
- Add GetActiveViewEvent handling in SourceViewsController
- Ensure view scrolls to cursor after buffer switch via GLib.idle_add
- Emit focus-in-event after DnD file load to restore focus behavior
- Prevent "buffer" pseudo-path from interfering with loaded file filtering
- Remove obsolete AGENTS.md from LSP manager plugin
2026-03-08 14:57:19 -05:00
220a8c2743 Moved plugins and add loaded file filtering
- Moved prettify_json and lsp_completer plugins to sub categories
- Add filter_out_loaded_files to prevent opening already-loaded files
- Refactor code events into single events module
- Fix signal blocking during file load operations
- Include READONLY state in source view lifecycle handling
2026-03-08 00:46:21 -06:00
22abc02d25 Created more events to use; restructured plugin listing 2026-03-01 15:11:34 -06:00
8ee2106f50 Refactor plugin event API: rename message* to emit* and requests_ui_element to request_ui_element 2026-02-28 19:48:04 -06:00
1447a68fb0 Refactor controller architecture and multi-insert state
- Rename ControllerContext to ControllerMessageBus for clarity
- Switch ControllerBase to use SingletonRaised
- Replace MarkEventsMixin with MarkerManager for multi-cursor editing
- Add populate_popup event support for source view context menus
- Remove unused swap file events
- Moved JSON prettify feature to plugin
- Fix event name: "removed_file" -> "remove_file"
2026-02-28 01:10:28 -06:00
b724d41f6c Remove tabs UI from code editor and move to plugin. Enhance plugin system.
- Remove tabs controller, tab widget, and tabs widget files and move to plugin
- Delete plugins/README.txt
- Add register_controller method to controller system for plugin use
- Add error handling for plugin crashes via futures callback
2026-02-26 21:09:14 -06:00
597ac2b06a Fixed multi file ipc load speeds 2026-02-26 02:00:36 -06:00
2e84ad9fc1 Moved code preview; fixrf plugin code context 2026-02-26 01:11:56 -06:00
a2b8232d5e refactor: remove InfoBarWidget in favor of plugin-based one
- Replace direct InfoBarWidget with set_info_labels command that emits
  events to plugins
- Replace mini view widget in favor of plugin-based one
- Add widget registry exposure for code-container and editors-container
- Fix DND mixin exec_with_args call (tuple args issue)
- Add break statements in tabs_widget loops for efficiency
- Add _update_transparency call to BaseContainer
2026-02-25 23:26:12 -06:00
0b3579d485 Fixed main thread closure issue caused by async.run 2026-02-25 01:04:09 -06:00
ec571ffa90 Added ability to toggle view visibility. 2026-02-25 00:43:37 -06:00
3b205e28e6 Refactor source view states to use base class and fix open-files start path
- Add SourceViewsBaseState inheritance to Command, Insert, MultiInsert, and ReadOnly states
- Extract common focus_in_event logic to base class
- Fix open-files command to use current file's directory as file picker start path
- Extract modifier key state logic into reusable get_modkeys_states() method
- Pass modifier keys to command exec_with_args in key_press_event
- Add type hints to key_mapper methods
2026-02-24 23:32:29 -06:00
24bf1e471b refactor(command-system): standardize command execution with *args/**kwargs
- Refactor exec_with_args to use *args/**kwargs instead of tuple arguments
- Add *args/**kwargs to all command execute functions for consistency
- Support multiple key bindings per command in registration
- Add character-based key binding support via get_char() in KeyMapper
- Make execute_plugin async and use asyncio.run for plugin execution
- Use MIME type from Gio content_type instead of language for ftype
2026-02-24 22:30:07 -06:00
824dd93696 Add file deletion detection, WebKit improvements, and bug fixes
- Add FileExternallyDeletedEvent with UI indicator in tabs for deleted files
- Set minimum height (300px) for editors container
- Add Developer Tools to WebKit context menu
- Fix DnD URI handling when uris list is empty
- Fix buffer replacement using freeze_notify and proper bounds handling
- Move webkit_ui_settings to new path
- Remove <change_me> placeholders from APP_NAME and user config
2026-02-23 00:48:09 -06:00
7c7e88aaed Code cleanp scan through 2026-02-22 21:55:31 -06:00
67300bc180 Add debounced text change handling and modified file indicator for tabs
- Debounce word completer refresh with 1500ms timeout to reduce overhead
- Add visual indicator (file-changed class) for modified files in tabs
- Refactor buffer switching into signal_mapper for DRY code
- Fix handler ID indices after adding _after_changed signal
- Move set_modified(False) after successful file write in save()
2026-02-22 18:20:29 -06:00
55d2d99d68 refactor: use Pango for font scaling instead of CSS classes
- Replace CSS-based zoom (px1-px99 classes) with Pango.FontDescription
- Fix bug in multi-insert: insert at start_itr instead of end_itr
- Add Pango-based font setup for mini-view widget
- Revamp stylesheet with Light Blue-Grey Glass theme
2026-02-21 00:38:31 -06:00
eb9e124df5 Refactor code completion, container layouts, and webkit settings
- Renamed alt_provider.py file under words completer
- Improve word completion matching logic with character validation
- Change container orientations (header→vertical, left/right→horizontal)
- Add separators to all container edges
- Refactor webkit UI loading into separate load_url/load_context_base_path methods
- Add comprehensive webkit browser-like settings
2026-02-20 00:15:53 -06:00
6714053776 Moved plugins and refactor command system
- Moved plugins to apropriate sub folders
- Refactor command system with new add_command method and rename GetCommandSystemEvent to GetNewCommandSystemEvent
- Add RegisterCommandEvent for dynamic command registration
- Change footer container orientation to VERTICAL
- Add search-highlight tag to source buffer
- Add file change detection (deleted, externally modified) in source_file
- Add JSON prettify option to source view popup menu
- Enable hexpand on VTE widget
- Update plugins_controller_mixin to use widget_registry
2026-02-18 23:47:19 -06:00
69c8418a72 Load files from IPC to code view; fixed tabs close all; corrected app.py logging 2026-02-17 01:52:29 -06:00
d4dc972c6d Aded context menu to tabs widget; registered other widgets to registery 2026-02-16 23:52:03 -06:00
6c42ff7c7d Made words completer run async on load and update; swapped out tabs to use Gtk.Notebook 2026-02-16 17:11:30 -06:00
b922415f98 Moved completers to new dir; improved completers and added word completion 2026-02-16 01:39:23 -06:00
5273c58ed6 Major completion provider overhaul; pluigin load and pattern improvements; css overhaul/cleanup; source view state modes added 2026-02-14 16:15:54 -06:00
4ce4d85842 removed endpoint_registery; relocated builder_wrapper to be widget_registery under libs/ 2026-01-19 13:57:44 -06:00
c6b10ceb17 defaulting to buffer if language not detected 2026-01-19 00:29:10 -06:00
a036dc428b Wiring plugins to controller messages; importing plugin controller to code base; fixed VTE widget adding to bash history 2026-01-18 22:39:52 -06:00
b8ce6e160a Pligins refactor with new context and controller integration 2026-01-18 20:36:17 -06:00
e2f29207ba Preliminary controller layout work for plugin integration; controller base message refactor naming 2026-01-18 13:53:29 -06:00
99f1bffefb Restructuring controller to broaden usability; changed events logic to support that 2026-01-18 00:52:54 -06:00
f7d944f7a9 Created libs.code package and moved pertinant DTOs to it as well as widget.code that can go there too 2026-01-13 11:23:26 -06:00
4469e8189f Improved folder structure for commamd system and controllers 2026-01-13 00:43:51 -06:00
a507469bf8 Added controller manager registery guard; localized event type access for code to event factory 2026-01-12 23:59:13 -06:00
a07123d165 fix singleton typeing and __init__ 2026-01-12 23:34:34 -06:00
00c72a7117 Fixed code view close_file command 2026-01-12 00:15:43 -06:00
f8d73ad74a Fixed code view expansion issues; fixed pre/post code view key mappings not sinking Gtk signals properly 2026-01-12 00:07:44 -06:00
04e0c3caf6 Moved to using event_factory and referencing types from it 2026-01-11 22:44:03 -06:00