Skip to content

Commit

Permalink
add a respect_cursor_position option
Browse files Browse the repository at this point in the history
  • Loading branch information
philippotto committed Sep 12, 2014
1 parent c0e5f14 commit b110e4b
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 1 deletion.
14 changes: 14 additions & 0 deletions Main.sublime-menu
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@
"platform": "Linux"
},
"caption": "Key Bindings – User"
},
{
"command": "open_file",
"args": {
"file": "${packages}/Jump Along Indent/jump_along_indent.sublime-settings"
},
"caption": "Settings - Default"
},
{
"command": "open_file",
"args": {
"file": "${packages}/User/jump_along_indent.sublime-settings"
},
"caption": "Settings - User"
}
]
}
Expand Down
6 changes: 5 additions & 1 deletion file_scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ def adapt_indent(self, indent_str):
return indent

def search_str(self):
if re.match(r"^\s*$", self.str_to_left()) and re.match(r"^\s+\S+", self.str_to_right()):
settings = sublime.load_settings("jump_along_indent.sublime-settings")
respect_cursor_position = settings.get("respect_cursor_position")
between_leading_spaces = re.match(r"^\s*$", self.str_to_left()) and re.match(r"^\s+\S+", self.str_to_right())

if respect_cursor_position and between_leading_spaces:
indent = self.adapt_indent(self.str_to_left())
search_str = "^ {0," + str(indent) + "}\S+"
else:
Expand Down
8 changes: 8 additions & 0 deletions jump_along_indent.sublime-settings
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
// By default, "Jump Along Indent" will take the indent before the cursor
// into account.
// If you want that the cursor position within the line doesn't play a role
// and instead always the full indent of the current line is relevant, set
// respect_cursor_position to false.
"respect_cursor_position" : true
}
32 changes: 32 additions & 0 deletions tests/test_jump_next_indent.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from helper import TestHelper
import sublime

class TestJumpNextIndent(TestHelper):
def command(self):
Expand Down Expand Up @@ -115,3 +116,34 @@ def test_subtract_selection(self):
ending_selection = [111, 85]

self.check_command(lines, starting_selection, ending_selection, extend_selection = True)

def test_respect_cursor_position(self):

lines = [
' Lorem ipsum dolor sit amet',
'Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet'
]

starting_selection = [0, 0]
ending_selection = [29, 29]

self.check_command(lines, starting_selection, ending_selection)

def test_disrespect_cursor_position(self):

settings = sublime.load_settings("jump_along_indent.sublime-settings")
settings.set("respect_cursor_position", False)

lines = [
' Lorem ipsum dolor sit amet',
'Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet'
]

starting_selection = [0, 0]
ending_selection = [56, 56]

self.check_command(lines, starting_selection, ending_selection)

settings.set("respect_cursor_position", True)
31 changes: 31 additions & 0 deletions tests/test_jump_prev_indent.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from helper import TestHelper
import sublime

class TestJumpPrevIndent(TestHelper):
def command(self):
Expand Down Expand Up @@ -114,3 +115,33 @@ def test_subtract_selection(self):

self.check_command(lines, starting_selection, ending_selection, extend_selection = True)

def test_respect_cursor_position(self):

lines = [
'Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet'
]

starting_selection = [27, 27]
ending_selection = [0, 0]

self.check_command(lines, starting_selection, ending_selection)

def test_disrespect_cursor_position(self):

settings = sublime.load_settings("jump_along_indent.sublime-settings")
settings.set("respect_cursor_position", False)

lines = [
'Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet',
' Lorem ipsum dolor sit amet'
]

starting_selection = [56, 56]
ending_selection = [27, 27]

self.check_command(lines, starting_selection, ending_selection)

settings.set("respect_cursor_position", True)

0 comments on commit b110e4b

Please sign in to comment.