Skip to content

Commit

Permalink
v0.9.3 - README, fixex for multiple windows and keybindings
Browse files Browse the repository at this point in the history
  • Loading branch information
qiray committed Jan 15, 2018
1 parent 71af4e1 commit 90fa9f6
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 22 deletions.
10 changes: 9 additions & 1 deletion Default (Linux).sublime-keymap
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
[]
[
{
"keys": ["Ctrl+f1"],
"command": "opened_files",
"args": {
"focus": true,
}
}
]
10 changes: 9 additions & 1 deletion Default (OSX).sublime-keymap
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
[]
[
{
"keys": ["Cmd+f1"],
"command": "opened_files",
"args": {
"focus": true,
}
}
]
10 changes: 9 additions & 1 deletion Default (Windows).sublime-keymap
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
[]
[
{
"keys": ["Ctrl+f1"],
"command": "opened_files",
"args": {
"focus": true,
}
}
]
7 changes: 0 additions & 7 deletions Default.sublime-keymap
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,6 @@
{ "key": "selector", "operator": "equal", "operand": "text.opened_files" },
]
},
{
"keys": ["backspace"],
"command": "opened_files_act", "args": {"act": "fold"},
"context": [
{ "key": "selector", "operator": "equal", "operand": "text.opened_files" },
]
},
{
"keys": ["o"],
"command": "opened_files_open_external",
Expand Down
52 changes: 51 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,53 @@
# Sublime Opened Files

Plugin for Sublime Text to show opened files as a treeview and a listview.
Plugin for Sublime Text to show opened files as a treeview:

![OpenedFiles Screenshot1](https://pp.userapi.com/c841435/v841435631/5db9a/A87MJ2pFnHc.jpg)

or a listview:

![OpenedFiles Screenshot2](https://pp.userapi.com/c841435/v841435631/5dba3/qxGQkAuE2LM.jpg)

It has different settings and also can be shown on right or left side:

![OpenedFiles Screenshot3](https://pp.userapi.com/c841435/v841435631/5dbac/NVDYqwqkLPU.jpg)

## Installation

You can install this plugin by cloning this repo into your SublimeText Packages directory and rename it to `OpenedFiles`.

## Settings

| Setting name | Values | Meaning |
| :--------------- | :----------- | :------ |
| **tree_view** | `true` or `false`| Set `true` to show opened files as a treeview or `false` for a listview |
| **tree_size** | `"full"`, `"medium"` or `"default"`| `full` - always show full path, `medium` - show folders with the same level on the same indents, `default` - don't show folders with only one child folder. This setting works only with ** tree_view = true ** |
| **group_position** | `"left"` or `"right"`| Use right or left side for `Opened files` tab. |

## Commands and Keybindings

This plugin add <kbd>ctrl+F1</kbd> keybinding for opening a new tab with `Opened files` but you can change it to your binding.

It also has some key shortcuts for using in `Opened files` tab:

### Shortcuts
| Shortcut | Command |
| :--------------- | :----------- |
| <kbd>r</kbd> | Refresh view |
| <kbd>o</kbd> | Open selected file with OS default application |
| <kbd>Enter</kbd> | Open selected file or fold/unfold selected directory |
| <kbd>→</kbd> | Expand directory |
| <kbd>←</kbd> | Collapse directory |
| <kbd>↑</kbd> | Go up |
| <kbd>↓</kbd> | Go down |

### Mouse

You can also use mouse to act with `Opened files` plugin. There is only one action - left double click is the same as <kbd>Enter</kbd> pressing.

## Credits

This plugin uses some code, ideas and color scheme basics from [SublimeFileBrowser plugin](https://github.com/aziz/SublimeFileBrowser) and some functions from [FileHistory plugin](https://github.com/FichteFoll/FileHistory)

### License
This plugin uses MIT license. For more information see the LICENSE file.
30 changes: 21 additions & 9 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

VERSION_MAJOR = 0
VERSION_MINOR = 9
VERSION_PATCH = 2
VERSION_PATCH = 3

ST3 = int(sublime.version()) >= 3000

Expand Down Expand Up @@ -56,12 +56,12 @@ def generate_list(view_list):
result.add_filename(name, view.id(), is_file=False if view.file_name() is None else True)
return result

def draw_view(window, edit, view_object):
def draw_view(window, edit, view_object, focus=False):
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
group_position = plugin_settings.get('group_position')
if group_position != 'left' and group_position != 'right':
group_position = 'left'
view = show(window, 'Opened Files', view_id=OpenedFilesCommand.OPENED_FILES_VIEW, other_group=group_position)
view = show(window, 'Opened Files', view_id=OpenedFilesCommand.OPENED_FILES_VIEW, other_group=group_position,focus=focus)
if not view:
OpenedFilesCommand.OPENED_FILES_VIEW = None
return
Expand All @@ -77,7 +77,7 @@ class OpenedFilesCommand(sublime_plugin.TextCommand): #view.run_command('opened_
tree = Tree()
files_list = List()

def run(self, edit):
def run(self, edit, focus=False):
window = self.view.window()
view_list = window.views()

Expand All @@ -95,10 +95,10 @@ def run(self, edit):
plugin_settings = sublime.load_settings('opened_files.sublime-settings')
if plugin_settings.get('tree_view'): #treeview
OpenedFilesCommand.tree = generate_tree(view_list, OpenedFilesCommand.tree)
draw_view(window, edit, OpenedFilesCommand.tree)
draw_view(window, edit, OpenedFilesCommand.tree, focus)
else: #listview
OpenedFilesCommand.files_list = generate_list(view_list)
draw_view(window, edit, OpenedFilesCommand.files_list)
draw_view(window, edit, OpenedFilesCommand.files_list, focus)

class OpenedFilesActCommand(sublime_plugin.TextCommand):
def run(self, edit, act='default'):
Expand Down Expand Up @@ -211,20 +211,23 @@ def is_transient_view(window, view): # from https://github.com/FichteFoll/FileHi

class OpenedFilesListener(sublime_plugin.EventListener):
current_view = None
current_window = None
active_list = {}

def on_activated(self, view): #save last opened documents or dired view
settings = view.settings()
if settings.get("opened_files_type"):
self.current_window = view.window()
if settings.get("opened_files_type") or settings.get('dired_path'):
self.current_view = view
return
if not view.id() in OpenedFilesListener.active_list:
if self.current_window == view.window() and not view.id() in OpenedFilesListener.active_list:
OpenedFilesListener.active_list[view.id()] = True
self.on_new(view)

def on_close(self, view):
w = sublime.active_window()
if is_transient_view(w, view) and not view.id() in OpenedFilesListener.active_list:
if w != self.current_window or is_transient_view(w, view) and not view.id() in OpenedFilesListener.active_list:
return
if view.id() in OpenedFilesListener.active_list:
OpenedFilesListener.active_list[view.id()] = False
Expand All @@ -244,7 +247,7 @@ def on_close(self, view):
def on_new(self, view):
opened_view = get_opened_files_view()
w = sublime.active_window()
if not opened_view or is_transient_view(w, view):
if w != self.current_window or not opened_view or is_transient_view(w, view):
return
active_view = w.active_view()
num_groups = w.num_groups()
Expand All @@ -258,12 +261,21 @@ def on_new(self, view):
update_opened_files_view()

def on_load(self, view):
w = sublime.active_window()
if w != self.current_window:
return
self.on_new(view)

def on_clone(self, view):
w = sublime.active_window()
if w != self.current_window:
return
self.on_new(view)

def on_post_save_async(self, view):
w = sublime.active_window()
if w != self.current_window:
return
self.on_new(view)

def plugin_loaded(): #this function autoruns on plugin loaded
Expand Down
4 changes: 2 additions & 2 deletions show.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ def set_view(view_id, window):
return view


def show(window, path, view_id=None, ignore_existing=False, single_pane=False, other_group=False):
def show(window, path, view_id=None, ignore_existing=False, single_pane=False, other_group=False, focus=False):
"""
Determines the correct view to use, creating one if necessary, and prepares it.
"""
Expand Down Expand Up @@ -117,6 +117,6 @@ def show(window, path, view_id=None, ignore_existing=False, single_pane=False, o
# forcibly shoot on_activated, because when view was created it didnot have any settings
window.show_quick_panel(['a', 'b'], None)
window.run_command('hide_overlay')
if view_id is None:
if view_id is None or focus:
window.focus_view(view)
return view

0 comments on commit 90fa9f6

Please sign in to comment.