Skip to content

Commit

Permalink
feat: Close files from "open editors" list
Browse files Browse the repository at this point in the history
  • Loading branch information
tomlin7 committed Mar 18, 2024
1 parent 96bc849 commit d24679a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,11 @@ def clear(self):
for node in self.nodes.values():
node.destroy()
self.nodes = {}
self.refresh()

def openfile(self, path) -> None:
self.base.editorsmanager.set_active_editor_by_path(path)
self.base.editorsmanager.tabs.switch_tabs(path)

def closefile(self, path) -> None:
self.base.editorsmanager.close_editor_by_path(path)

e = self.base.editorsmanager.close_editor_by_path(path)
self.base.editorsmanager.tabs.close_tab_helper(e)
8 changes: 6 additions & 2 deletions biscuit/core/layout/base/content/editors/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ def delete_all_editors(self) -> None:
self.editorsbar.clear()
self.tabs.clear_all_tabs()
self.active_editors.clear()
self.base.explorer.open_editors.clear()
self.refresh()

def reopen_active_editor(self) -> None:
Expand Down Expand Up @@ -130,21 +131,24 @@ def open_game(self, name: str) -> None:
def close_editor(self, editor: Editor) -> None:
"removes an editor, keeping it in cache."
self.active_editors.remove(editor)
editor.grid_forget()

if editor.content and editor.content.editable:
self.base.language_server_manager.tab_closed(editor.content.text)

# not keeping diff/games in cache
if not editor.diff and editor.content:
self.closed_editors[editor.path] = editor
self.closed_editors[editor.path] = editor
else:
editor.destroy()
self.base.explorer.open_editors.remove_item(editor)
self.refresh()

def close_editor_by_path(self, path: str) -> None:
"removes an editor by path, keeping it in cache."
self.close_editor(self.get_editor(path))
e = self.get_editor(path)
self.close_editor(e)
return e

def get_editor(self, path: str) -> Editor:
"Get editor by path"
Expand Down
13 changes: 10 additions & 3 deletions biscuit/core/layout/base/content/editors/tabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,14 @@ def close_active_tab(self) -> None:
self.close_tab(self.active_tab)

def close_tab(self, tab: Tab) -> None:
tab.editor.grid_forget()
tab.destroy()

try:
i = self.tabs.index(tab)
except ValueError:
# most probably in case of diff editors, not handled
return

self.tabs.remove(tab)
tab.destroy()
self.master.master.close_editor(tab.editor)

if self.tabs:
Expand All @@ -53,6 +51,15 @@ def close_tab(self, tab: Tab) -> None:
self.active_tab = None
self.master.master.refresh()

def close_tab_helper(self, editor: str) -> None:
for tab in self.tabs:
if tab.editor == editor:
try:
self.tabs.remove(tab)
tab.destroy()
except ValueError:
return

def delete_tab(self, editor):
for tab in self.tabs:
if tab.editor == editor:
Expand Down

0 comments on commit d24679a

Please sign in to comment.