Remove temp cut buffer commands and cleanup related SourceView code

- Moved cut_to_temp_buffer and paste_temp_buffer commands to plugin
- Remove temp buffer state and timeout logic from SourceView
- Remove associated keybindings (Ctrl+K / Ctrl+U)
- Ignore "buffer" pseudo-path when filtering loaded files
- Ensure view receives focus after DnD file load
This commit is contained in:
2026-03-08 14:51:11 -05:00
parent 99dc917de3
commit 7ee484f0c0
13 changed files with 165 additions and 96 deletions

View File

@@ -1,41 +0,0 @@
# Python imports
# Lib imports
import gi
gi.require_version('GtkSource', '4')
from gi.repository import GtkSource
# Application imports
def execute(
view: GtkSource.View,
*args,
**kwargs
):
logger.debug("Command: Cut to Temp Buffer")
view.clear_temp_cut_buffer_delayed()
buffer = view.get_buffer()
itr = buffer.get_iter_at_mark( buffer.get_insert() )
start_itr = itr.copy()
end_itr = itr.copy()
start_line = itr.get_line() + 1
start_char = itr.get_line_offset()
if not start_itr.starts_line():
start_itr.backward_visible_line()
start_itr.forward_line()
if not end_itr.ends_line():
end_itr.forward_line()
line_str = buffer.get_slice(start_itr, end_itr, True)
view._cut_buffer += f"{line_str}"
buffer.delete(start_itr, end_itr)
view.set_temp_cut_buffer_delayed()

View File

@@ -7,6 +7,7 @@ gi.require_version('GtkSource', '4')
from gi.repository import GtkSource
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import Gio
# Application imports
@@ -21,9 +22,9 @@ def execute(
**kwargs
):
logger.debug("Command: DnD Load File To Buffer")
file = view.command.new_file(view)
file = view.command.new_file(view)
gfile = Gio.File.new_for_uri(uri)
gfile = Gio.File.new_for_uri(uri)
view.command.exec_with_args(
"load_file",
view, gfile, file
@@ -32,3 +33,4 @@ def execute(
view.set_buffer(file.buffer)
update_info_bar_if_focused(view.command, view)
view.emit("focus-in-event", Gdk.Event())

View File

@@ -1,30 +0,0 @@
# Python imports
# Lib imports
import gi
gi.require_version('GtkSource', '4')
from gi.repository import GLib
from gi.repository import GtkSource
# Application imports
def execute(
view: GtkSource.View,
*args,
**kwargs
):
logger.debug("Command: Paste Temp Buffer")
view.clear_temp_cut_buffer_delayed()
buffer = view.get_buffer()
itr = buffer.get_iter_at_mark( buffer.get_insert() )
insert_itr = itr.copy()
buffer.insert(insert_itr, view._cut_buffer, -1)
view.set_temp_cut_buffer_delayed()

View File

@@ -33,7 +33,8 @@ class FilesController(ControllerBase, list):
def filter_loaded(self, event: Code_Event_Types.FilterOutLoadedFilesEvent):
loaded_paths = {file.fpath for file in self}
loaded_paths = {file.fpath for file in self if not file.fpath == "buffer"}
files = [
uri for uri in event.uris if not any(path in uri for path in loaded_paths)
]

View File

@@ -6,7 +6,6 @@ gi.require_version('Gtk', '3.0')
gi.require_version('GtkSource', '4')
from gi.repository import Gtk
from gi.repository import GLib
from gi.repository import GtkSource
# Application imports
@@ -22,9 +21,6 @@ class SourceView(GtkSource.View, SourceViewDnDMixin):
self.state = state
self._cut_temp_timeout_id = None
self._cut_buffer = ""
self.sibling_right = None
self.sibling_left = None
@@ -74,15 +70,3 @@ class SourceView(GtkSource.View, SourceViewDnDMixin):
)
self._set_up_dnd()
def clear_temp_cut_buffer_delayed(self):
if self._cut_temp_timeout_id:
GLib.source_remove(self._cut_temp_timeout_id)
def set_temp_cut_buffer_delayed(self):
def clear_temp_buffer():
self._cut_buffer = ""
self._cut_temp_timeout_id = None
return False
self._cut_temp_timeout_id = GLib.timeout_add(15000, clear_temp_buffer)