Repository: ice9js/ace-jump-sublime
Branch: master
Commit: 99cae467f418
Files: 10
Total size: 27.3 KB
Directory structure:
gitextract_akq0_2fc/
├── .gitignore
├── AceJump.sublime-settings
├── AceJump.tmLanguage
├── Default (Linux).sublime-keymap
├── Default (OSX).sublime-keymap
├── Default (Windows).sublime-keymap
├── LICENSE
├── Main.sublime-menu
├── README.md
└── ace_jump.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Sublime Text files
ace-jump.sublime-project
ace-jump.sublime-workspace
# To do
*.TODO
================================================
FILE: AceJump.sublime-settings
================================================
{
// Characters to be used as labels in order they'll appear
"labels": "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
// Syntax highlighting scope for the labels
"labels_scope": "invalid",
// Toggles case sensitive search in word and character modes.
"search_case_sensitivity": true,
// Saves all the files aceJump tried to parse.
// This setting will reset any linter warnings you might see during jump
// By saving all effected files
"save_files_after_jump": false,
// If turned on, character mode will jump after a character
// it it's the last character on a line.
"jump_behind_last_characters": false,
// View settings that should be respected when switching the syntax
// highlighting mode. In case a plugin you use adds a new
// setting to a view, you probably want to add it to this list.
"view_settings": [
"auto_indent",
"tab_size",
"translate_tabs_to_spaces",
"use_tab_stops",
"trim_automatic_white_space",
"detect_indentation",
"draw_white_space",
"trim_trailing_white_space_on_save",
"always_show_minimap_viewport",
"color_scheme",
"font_face",
"font_options",
"gutter",
"rulers",
"draw_minimap_border",
"highlight_line",
"line_padding_top",
"line_padding_bottom",
"scroll_past_end",
"line_numbers",
"word_wrap",
"wrap_width",
"indent_subsequent_lines",
"draw_centered",
"match_brackets",
"match_brackets_content",
"match_brackets_square",
"match_brackets_braces",
"match_brackets_angle",
]
}
================================================
FILE: AceJump.tmLanguage
================================================
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>AceJump</string>
<key>hidden</key>
<true/>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(.*)</string>
<key>name</key>
<string>text.ace_jump</string>
</dict>
</array>
<key>scopeName</key>
<string>comment</string>
</dict>
</plist>
================================================
FILE: Default (Linux).sublime-keymap
================================================
[
{
"keys": ["ctrl+shift+;"],
"command": "ace_jump_word"
},
{
"keys": ["ctrl+shift+'"],
"command": "ace_jump_char"
},
{
"keys": ["ctrl+shift+."],
"command": "ace_jump_line"
},
{
"keys": ["ctrl+shift+,"],
"command": "ace_jump_within_line"
},
{
"keys": ["alt+;"],
"command": "ace_jump_select"
},
{
"keys": ["alt+'"],
"command": "ace_jump_add_cursor"
},
{
"keys": ["alt+."],
"command": "ace_jump_after"
}
]
================================================
FILE: Default (OSX).sublime-keymap
================================================
[
{
"keys": ["super+shift+;"],
"command": "ace_jump_word"
},
{
"keys": ["super+shift+'"],
"command": "ace_jump_char"
},
{
"keys": ["super+shift+."],
"command": "ace_jump_line"
},
{
"keys": ["super+shift+,"],
"command": "ace_jump_within_line"
},
{
"keys": ["ctrl+;"],
"command": "ace_jump_select"
},
{
"keys": ["ctrl+'"],
"command": "ace_jump_add_cursor"
},
{
"keys": ["ctrl+."],
"command": "ace_jump_after"
}
]
================================================
FILE: Default (Windows).sublime-keymap
================================================
[
{
"keys": ["ctrl+shift+;"],
"command": "ace_jump_word"
},
{
"keys": ["ctrl+shift+'"],
"command": "ace_jump_char"
},
{
"keys": ["ctrl+shift+."],
"command": "ace_jump_line"
},
{
"keys": ["ctrl+shift+,"],
"command": "ace_jump_within_line"
},
{
"keys": ["alt+;"],
"command": "ace_jump_select"
},
{
"keys": ["alt+'"],
"command": "ace_jump_add_cursor"
},
{
"keys": ["alt+."],
"command": "ace_jump_after"
}
]
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2015 Kuba Birecki
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: Main.sublime-menu
================================================
[
{
"id": "preferences",
"children": [
{
"id": "package-settings",
"children": [
{
"caption": "AceJump",
"children": [
{
"caption": "README",
"command": "open_file",
"args": {
"file": "${packages}/AceJump/README.md"
}
},
{
"caption": "-"
},
{
"caption": "Settings - Default",
"command": "open_file",
"args": {
"file": "${packages}/AceJump/AceJump.sublime-settings"
}
},
{
"caption": "Settings - User",
"command": "open_file",
"args": {
"file": "${packages}/User/AceJump.sublime-settings"
}
},
{
"caption": "-"
},
{
"caption": "Key Bindings - Default",
"command": "open_file",
"args": {
"file": "${packages}/AceJump/Default (OSX).sublime-keymap",
"platform": "OSX"
}
},
{
"caption": "Key Bindings - Default",
"command": "open_file",
"args": {
"file": "${packages}/AceJump/Default (Linux).sublime-keymap",
"platform": "Linux"
}
},
{
"caption": "Key Bindings - Default",
"command": "open_file",
"args": {
"file": "${packages}/AceJump/Default (Windows).sublime-keymap",
"platform": "Windows"
}
},
{
"caption": "Key Bindings - User",
"command": "open_file",
"args": {
"file": "${packages}/User/Default (OSX).sublime-keymap",
"platform": "OSX"
}
},
{
"caption": "Key Bindings - User",
"command": "open_file",
"args": {
"file": "${packages}/User/Default (Linux).sublime-keymap",
"platform": "Linux"
}
},
{
"caption": "Key Bindings - User",
"command": "open_file",
"args": {
"file": "${packages}/User/Default (Windows).sublime-keymap",
"platform": "Windows"
}
},
{
"caption": "-"
}
]
}
]
}
]
}
]
================================================
FILE: README.md
================================================
# AceJump
A plugin for Sublime Text 3 heavily inspired by AceJump for emacs.
AceJump allows you to move the cursor to any character to any place currently on screen.
To clarify, you can jump between characters in all visible portions of currently open documents in any panes.
Like it's emacs counterpart, AceJump for sublime features word (on the image below), character and line modes which make jumping even easier.

After selecting a mode, you type in a character (except in line mode, where you don't have to type in anything) and appropriate labels are displayed. Then all you need to do is press the key from the label and voila!
## Installation
### PackageControl
You can install AceJump from [PackageControl](http://wbond.net/sublime_packages/package_control) by following the steps below:
- Open up the command palette and select ```Package Control: Install Package```
- Wait for the packages index to load and select ```AceJump```
### Manual installation
You can install AceJump manually using git by running the following command within sublime packages directory (Preferences > Browse Packages):
```
$ git clone git@github.com:ice9js/ace-jump-sublime.git AceJump/
```
Or you can just copy the contents of this repository into ```Packages/AceJump```.
## Usage
### Word mode
Goes to a word starting with the given character. This mode works only with alphanumeric characters. If you're interested in jumping to a special character, use character mode instead.
- ```Ctrl/Super + Shift + ;```
- ```<head character>```
- ```<label>```
No need to press enter after selecting a label!

### Character mode
Goes to an occurence of the given character.
- ```Ctrl/Super + Shift + '```
- ```<character>```
- ```<label>```

### Line mode
Labels all non-empty lines and lets you jump to one of them.
- ```Ctrl/Super + Shift + .```
- ```<label>```

### Within Line mode
Labels all words within the line where current cursor locate and lets you jump to one of them.
- ```Ctrl/Super + Shift + ,```
- ```<label>```
### Select mode
After triggering select mode, the next jump will select everything inbetween the current cursor position and the selected label.
When select mode is triggered, the next jump is limited to the current file.
- ```Alt+;``` (```Ctrl+;``` for OS X)
- perform a jump using word, character or line mode

### Multiple cursors mode
After triggering multiple cursors mode, the next jump will add a new cursor to the view instead of moving the existing one.
Again, when this mode is triggered, only jumps in the same file are available.
- ```Alt+'``` (```Ctrl+'``` for OS X)

### Jump-after mode
In this mode, the cursor will jump behind the targeted instance. Unfortunetely,
this mode cannot be paired with select or multiple cursors mode yet.
- ```Alt+.``` (```Ctrl+.``` for OS X)

### Batching
In case there are more places to jump to than labels available, labels will be batched and you can cycle through them by simply pressing enter.

## Customization
In order to access AceJump settings, go to ```Preferences > Package Settings > AceJump > Settings - User```.
### Key bindings
Go to ```Preferences > Package Settings > AceJump > Key Bindings - User```.
You can then override the bindings for any of the following commands:
- ```ace_jump_word```
- ```ace_jump_char```
- ```ace_jump_line```
- ```ace_jump_within_line```
- ```ace_jump_select```
- ```ace_jump_add_cursor```
- ```ace_jump_after```
The commands accept an optional Boolean `current_buffer_only` argument. When present and set to `true`, AceJump only performs on the currently edited buffer.
### Labels
You can override the ```labels``` setting to provide your own set of labels to be used by AceJump.
### Highlighting
You can also set the syntsx scope that's used for highlighting by overriding ```labels_scope```. The default scope is ```invalid```.
### Case sensitivity
Ace jump is case sensitive by default. Case sensitivity can be toggled on and off by altering the ```search_case_sensitivity``` setting.
### Jumping behind the last character in a line
By setting ```jump_behind_last_characters``` to ```true```, AceJump will jump behind a character if it's the last character on a line, without the need to trigger jump after mode. This only works in character mode and is switched off by default.
### Known issues
It has been reported that the _Select mode_, _Multi cursors mode_ and _Jump after_ mode might not work using the specified keybinding.
As a workaround for that follow these steps:
- Start a regular search, e.g. word search (default keybinding: Ctrl+Shift+;).
- **Before** entering any character, activate the advanced mode (e.g. for _Select mode_ use Alt+;).
- Now enter the character to lookup.
- Use the label to go to the corresponding location.
================================================
FILE: ace_jump.py
================================================
import sublime, sublime_plugin
import re, itertools
last_index = 0
hints = []
search_regex = r''
next_search = False
# MODES
# 0: default (jumps in front of the selection)
# 1: select
# 2: add-cursor
# 3: jump-after
mode = 0
ace_jump_active = False
def get_active_views(window, current_buffer_only):
"""Returns all currently visible views"""
views = []
if current_buffer_only:
views.append(window.active_view())
else:
for group in range(window.num_groups()):
views.append(window.active_view_in_group(group))
return views
def set_views_setting(views, setting, values):
"""Sets the values for the setting in all given views"""
for i in range(len(views)):
views[i].settings().set(setting, values[i])
def set_views_settings(views, settings, values):
"""Sets the values for all settings in all given views"""
for i in range(len(settings)):
set_views_setting(views, settings[i], values[i])
def get_views_setting(views, setting):
"""Returns the setting value for all given views"""
settings = []
for view in views:
settings.append(view.settings().get(setting))
return settings
def get_views_settings(views, settings):
"""Gets the settings for every given view"""
values = []
for setting in settings:
values.append(get_views_setting(views, setting))
return values
def set_views_syntax(views, syntax):
"""Sets the syntax highlighting for all given views"""
for i in range(len(views)):
views[i].set_syntax_file(syntax[i])
def set_views_sel(views, selections):
"""Sets the selections for all given views"""
for i in range(len(views)):
for sel in selections[i]:
views[i].sel().add(sel)
def get_views_sel(views):
"""Returns the current selection for each from the given views"""
selections = []
for view in views:
selections.append(view.sel())
return selections
class AceJumpCommand(sublime_plugin.WindowCommand):
"""Base command class for AceJump plugin"""
def run(self, current_buffer_only = False):
global ace_jump_active
ace_jump_active = True
self.char = ""
self.target = ""
self.views = []
self.changed_views = []
self.breakpoints = []
self.all_views = get_active_views(self.window, current_buffer_only)
self.syntax = get_views_setting(self.all_views, "syntax")
self.sel = get_views_sel(self.all_views)
settings = sublime.load_settings("AceJump.sublime-settings")
self.highlight = settings.get("labels_scope", "invalid")
self.labels = settings.get(
"labels",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
)
self.case_sensitivity = settings.get("search_case_sensitivity", True)
self.jump_behind_last = settings.get("jump_behind_last_characters", False)
self.save_files_after_jump = settings.get("save_files_after_jump", False)
self.view_settings = settings.get("view_settings", [])
self.view_values = get_views_settings(
self.all_views,
self.view_settings
)
self.show_prompt(self.prompt(), self.init_value())
def is_enabled(self):
global ace_jump_active
return not ace_jump_active
def show_prompt(self, title, value):
"""Shows a prompt with the given title and value in the window"""
self.window.show_input_panel(
title, value,
self.next_batch, self.on_input, self.submit
)
def next_batch(self, command):
"""Displays the next batch of labels after pressing return"""
self.remove_labels()
self.show_prompt(self.prompt(), self.char)
def on_input(self, command):
"""Fires the necessary actions for the current input"""
if len(command) == 1:
self.char = command
if self.char == "<" or self.char == ">":
# re.escape escapes these 2 characters but it isn't needed for view.find()
self.add_labels(self.regex().format(self.char))
else:
self.add_labels(self.regex().format(re.escape(self.char)))
return
if len(command) == 2:
self.target = command[1]
self.window.run_command("hide_panel", {"cancel": True})
def submit(self):
"""Handles the behavior after closing the prompt"""
global next_search, mode, ace_jump_active
next_search = False
self.remove_labels()
set_views_sel(self.all_views, self.sel)
set_views_syntax(self.all_views, self.syntax)
if self.valid_target(self.target):
self.jump(self.labels.find(self.target))
mode = 0
ace_jump_active = False
"""Saves changed views after jump is complete"""
if self.save_files_after_jump:
for view in self.changed_views:
if not view.is_read_only() and not view.is_dirty():
view.run_command("save")
def add_labels(self, regex):
"""Adds labels to characters matching the regex"""
global last_index, hints
last_index = 0
hints = []
self.views = self.views_to_label()
self.region_type = self.get_region_type()
self.changed_views = []
self.breakpoints = []
changed_buffers = []
for view in self.views[:]:
if view.buffer_id() in changed_buffers:
break
view.run_command("add_ace_jump_labels", {
"regex": regex,
"region_type": self.region_type,
"labels": self.labels,
"highlight": self.highlight,
"case_sensitive": self.case_sensitivity
})
self.breakpoints.append(last_index)
self.changed_views.append(view)
changed_buffers.append(view.buffer_id())
if next_search:
break
self.views.remove(view)
set_views_syntax(self.all_views, list(itertools.repeat(
"Packages/AceJump/AceJump.tmLanguage",
len(self.all_views)
)))
set_views_settings(
self.all_views,
self.view_settings,
self.view_values
)
def remove_labels(self):
"""Removes all previously added labels"""
last_breakpoint = 0
for breakpoint in self.breakpoints:
if breakpoint != last_breakpoint:
view = self.changed_views[self.view_for_index(breakpoint - 1)]
view.run_command("remove_ace_jump_labels")
last_breakpoint = breakpoint
def jump(self, index):
"""Performs the jump action"""
region = hints[index].begin()
view = self.changed_views[self.view_for_index(index)]
self.window.focus_view(view)
view.run_command("perform_ace_jump", {"target": region})
self.after_jump(view)
def views_to_label(self):
"""Returns the views that still have to be labeled"""
if mode != 0:
return [self.window.active_view()]
return self.all_views[:] if len(self.views) == 0 else self.views
def view_for_index(self, index):
"""Returns a view index for the given label index"""
for breakpoint in self.breakpoints:
if index < breakpoint:
return self.breakpoints.index(breakpoint)
def valid_target(self, target):
"""Check if jump target is valid"""
index = self.labels.find(target)
return target != "" and index >= 0 and index < last_index;
def get_region_type(self):
"""Return region type for labeling"""
return "visible_region"
class AceJumpWordCommand(AceJumpCommand):
"""Specialized command for word-mode"""
def prompt(self):
return "Head char"
def init_value(self):
return ""
def regex(self):
return r'\b{}'
def after_jump(self, view):
global mode
if mode == 3:
view.run_command("move", {"by": "word_ends", "forward": True})
mode = 0
class AceJumpCharCommand(AceJumpCommand):
"""Specialized command for char-mode"""
def prompt(self):
return "Char"
def init_value(self):
return ""
def regex(self):
return r'{}'
def after_jump(self, view):
global mode
if mode == 3:
view.run_command("move", {"by": "characters", "forward": True})
mode = 0
def jump(self, index):
global mode
view = self.changed_views[self.view_for_index(index)]
if self.jump_behind_last and "\n" in view.substr(hints[index].end()):
mode = 3
return AceJumpCommand.jump(self, index)
class AceJumpLineCommand(AceJumpCommand):
"""Specialized command for line-mode"""
def prompt(self):
return ""
def init_value(self):
return " "
def regex(self):
return r'(.*)[^\s](.*)\n'
def after_jump(self, view):
global mode
if mode == 3:
view.run_command("move", {"by": "lines", "forward": True})
view.run_command("move", {"by": "characters", "forward": False})
mode = 0
class AceJumpWithinLineCommand(AceJumpCommand):
"""Specialized command for within-line-mode"""
def prompt(self):
return ""
def init_value(self):
return " "
def regex(self):
return r'\b\w'
def after_jump(self, view):
global mode
if mode == 3:
view.run_command("move", {"by": "word_ends", "forward": True})
mode = 0
def get_region_type(self):
return "current_line"
class AceJumpSelectCommand(sublime_plugin.WindowCommand):
"""Command for turning on select mode"""
def run(self):
global mode
mode = 0 if mode == 1 else 1
class AceJumpAddCursorCommand(sublime_plugin.WindowCommand):
"""Command for turning on multiple cursor mode"""
def run(self):
global mode
mode = 0 if mode == 2 else 2
class AceJumpAfterCommand(sublime_plugin.WindowCommand):
"""Modifier-command which lets you jump behind a character, word or line"""
def run(self):
global mode
mode = 0 if mode == 3 else 3
class AddAceJumpLabelsCommand(sublime_plugin.TextCommand):
"""Command for adding labels to the views"""
def run(self, edit, regex, region_type, labels, highlight, case_sensitive):
global hints
characters = self.find(regex, region_type, len(labels), case_sensitive)
self.add_labels(edit, characters, labels)
self.view.add_regions("ace_jump_hints", characters, highlight)
hints = hints + characters
def find(self, regex, region_type, max_labels, case_sensitive):
"""Returns a list with all occurences matching the regex"""
global next_search, last_index
chars = []
region = self.get_target_region(region_type)
next_search = next_search if next_search else region.begin()
last_search = region.end()
while (next_search < last_search and last_index < max_labels):
word = self.view.find(regex, next_search, 0 if case_sensitive else sublime.IGNORECASE)
if not word or word.end() > last_search:
break
last_index += 1
next_search = word.end()
chars.append(sublime.Region(word.begin(), word.begin() + 1))
if last_index < max_labels:
next_search = False
return chars
def add_labels(self, edit, regions, labels):
"""Replaces the given regions with labels"""
for i in range(len(regions)):
self.view.replace(
edit, regions[i], labels[last_index + i - len(regions)]
)
def get_target_region(self, region_type):
return {
'visible_region': lambda view : view.visible_region(),
'current_line': lambda view : view.line(view.sel()[0]),
}.get(region_type)(self.view)
class RemoveAceJumpLabelsCommand(sublime_plugin.TextCommand):
"""Command for removing labels from the views"""
def run(self, edit):
self.view.erase_regions("ace_jump_hints")
self.view.end_edit(edit)
self.view.run_command("undo")
class PerformAceJumpCommand(sublime_plugin.TextCommand):
"""Command performing the jump"""
def run(self, edit, target):
global mode
if mode == 0 or mode == 3:
self.view.sel().clear()
self.view.sel().add(self.target_region(target))
self.view.show(target)
def target_region(self, target):
if mode == 1:
for cursor in self.view.sel():
return sublime.Region(cursor.begin(), target)
return sublime.Region(target)
gitextract_akq0_2fc/ ├── .gitignore ├── AceJump.sublime-settings ├── AceJump.tmLanguage ├── Default (Linux).sublime-keymap ├── Default (OSX).sublime-keymap ├── Default (Windows).sublime-keymap ├── LICENSE ├── Main.sublime-menu ├── README.md └── ace_jump.py
SYMBOL INDEX (60 symbols across 1 files)
FILE: ace_jump.py
function get_active_views (line 19) | def get_active_views(window, current_buffer_only):
function set_views_setting (line 30) | def set_views_setting(views, setting, values):
function set_views_settings (line 36) | def set_views_settings(views, settings, values):
function get_views_setting (line 42) | def get_views_setting(views, setting):
function get_views_settings (line 50) | def get_views_settings(views, settings):
function set_views_syntax (line 58) | def set_views_syntax(views, syntax):
function set_views_sel (line 64) | def set_views_sel(views, selections):
function get_views_sel (line 71) | def get_views_sel(views):
class AceJumpCommand (line 79) | class AceJumpCommand(sublime_plugin.WindowCommand):
method run (line 82) | def run(self, current_buffer_only = False):
method is_enabled (line 114) | def is_enabled(self):
method show_prompt (line 118) | def show_prompt(self, title, value):
method next_batch (line 126) | def next_batch(self, command):
method on_input (line 132) | def on_input(self, command):
method submit (line 149) | def submit(self):
method add_labels (line 170) | def add_labels(self, regex):
method remove_labels (line 215) | def remove_labels(self):
method jump (line 225) | def jump(self, index):
method views_to_label (line 235) | def views_to_label(self):
method view_for_index (line 243) | def view_for_index(self, index):
method valid_target (line 250) | def valid_target(self, target):
method get_region_type (line 257) | def get_region_type(self):
class AceJumpWordCommand (line 262) | class AceJumpWordCommand(AceJumpCommand):
method prompt (line 265) | def prompt(self):
method init_value (line 268) | def init_value(self):
method regex (line 271) | def regex(self):
method after_jump (line 274) | def after_jump(self, view):
class AceJumpCharCommand (line 281) | class AceJumpCharCommand(AceJumpCommand):
method prompt (line 284) | def prompt(self):
method init_value (line 287) | def init_value(self):
method regex (line 290) | def regex(self):
method after_jump (line 293) | def after_jump(self, view):
method jump (line 300) | def jump(self, index):
class AceJumpLineCommand (line 309) | class AceJumpLineCommand(AceJumpCommand):
method prompt (line 312) | def prompt(self):
method init_value (line 315) | def init_value(self):
method regex (line 318) | def regex(self):
method after_jump (line 321) | def after_jump(self, view):
class AceJumpWithinLineCommand (line 329) | class AceJumpWithinLineCommand(AceJumpCommand):
method prompt (line 332) | def prompt(self):
method init_value (line 335) | def init_value(self):
method regex (line 338) | def regex(self):
method after_jump (line 341) | def after_jump(self, view):
method get_region_type (line 348) | def get_region_type(self):
class AceJumpSelectCommand (line 352) | class AceJumpSelectCommand(sublime_plugin.WindowCommand):
method run (line 355) | def run(self):
class AceJumpAddCursorCommand (line 360) | class AceJumpAddCursorCommand(sublime_plugin.WindowCommand):
method run (line 363) | def run(self):
class AceJumpAfterCommand (line 368) | class AceJumpAfterCommand(sublime_plugin.WindowCommand):
method run (line 371) | def run(self):
class AddAceJumpLabelsCommand (line 376) | class AddAceJumpLabelsCommand(sublime_plugin.TextCommand):
method run (line 379) | def run(self, edit, regex, region_type, labels, highlight, case_sensit...
method find (line 388) | def find(self, regex, region_type, max_labels, case_sensitive):
method add_labels (line 414) | def add_labels(self, edit, regions, labels):
method get_target_region (line 422) | def get_target_region(self, region_type):
class RemoveAceJumpLabelsCommand (line 429) | class RemoveAceJumpLabelsCommand(sublime_plugin.TextCommand):
method run (line 432) | def run(self, edit):
class PerformAceJumpCommand (line 437) | class PerformAceJumpCommand(sublime_plugin.TextCommand):
method run (line 440) | def run(self, edit, target):
method target_region (line 448) | def target_region(self, target):
Condensed preview — 10 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (30K chars).
[
{
"path": ".gitignore",
"chars": 89,
"preview": "# Sublime Text files\nace-jump.sublime-project\nace-jump.sublime-workspace\n\n# To do\n*.TODO\n"
},
{
"path": "AceJump.sublime-settings",
"chars": 1725,
"preview": "{\n // Characters to be used as labels in order they'll appear\n \"labels\": \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN"
},
{
"path": "AceJump.tmLanguage",
"chars": 500,
"preview": "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1"
},
{
"path": "Default (Linux).sublime-keymap",
"chars": 572,
"preview": "[\n {\n \"keys\": [\"ctrl+shift+;\"],\n \"command\": \"ace_jump_word\"\n },\n {\n \"keys\": [\"ctrl+shift+'"
},
{
"path": "Default (OSX).sublime-keymap",
"chars": 579,
"preview": "[\n {\n \"keys\": [\"super+shift+;\"],\n \"command\": \"ace_jump_word\"\n },\n {\n \"keys\": [\"super+shift"
},
{
"path": "Default (Windows).sublime-keymap",
"chars": 572,
"preview": "[\n {\n \"keys\": [\"ctrl+shift+;\"],\n \"command\": \"ace_jump_word\"\n },\n {\n \"keys\": [\"ctrl+shift+'"
},
{
"path": "LICENSE",
"chars": 1080,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2015 Kuba Birecki\n\nPermission is hereby granted, free of charge, to any person obta"
},
{
"path": "Main.sublime-menu",
"chars": 4164,
"preview": "[\n {\n \"id\": \"preferences\",\n \"children\": [\n {\n \"id\": \"package-settings\",\n "
},
{
"path": "README.md",
"chars": 5748,
"preview": "# AceJump\n\nA plugin for Sublime Text 3 heavily inspired by AceJump for emacs.\n\nAceJump allows you to move the cursor to "
},
{
"path": "ace_jump.py",
"chars": 12955,
"preview": "import sublime, sublime_plugin\nimport re, itertools\n\nlast_index = 0\nhints = []\nsearch_regex = r''\n\nnext_search = False\n\n"
}
]
About this extraction
This page contains the full source code of the ice9js/ace-jump-sublime GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10 files (27.3 KB), approximately 6.3k tokens, and a symbol index with 60 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.