git_spelunk 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/git_spelunk/offset.rb +1 -1
- data/lib/git_spelunk/ui/pager.rb +30 -15
- data/lib/git_spelunk/ui.rb +7 -5
- metadata +6 -5
data/lib/git_spelunk/offset.rb
CHANGED
|
@@ -49,7 +49,7 @@ module GitSpelunk
|
|
|
49
49
|
def diff_chunks(diffs)
|
|
50
50
|
return nil if diffs.empty?
|
|
51
51
|
# split it into chunks: [["@@ -10,13 +10,18 @@", diffs], ["@@ -20,13 +20,18 @@", diffs, diff]]
|
|
52
|
-
multiple_chunks = diffs[0].diff.split(/(
|
|
52
|
+
multiple_chunks = diffs[0].diff.split(/(@@ \-\d+,\d+ \+\d+,\d+ @@.*?\n)/)
|
|
53
53
|
# Discard file name line
|
|
54
54
|
multiple_chunks[1..multiple_chunks.length].each_slice(2).to_a
|
|
55
55
|
end
|
data/lib/git_spelunk/ui/pager.rb
CHANGED
|
@@ -57,25 +57,34 @@ module GitSpelunk
|
|
|
57
57
|
|
|
58
58
|
attr_accessor :top
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
search_data[initial_position..-1].each_with_index do |d, i|
|
|
67
|
-
if d =~ /#{term}/
|
|
68
|
-
go_to(initial_position + i + 1)
|
|
69
|
-
return
|
|
60
|
+
#returns position in data set, not cursor position
|
|
61
|
+
def find_next_index(term, start, reverse)
|
|
62
|
+
i = start
|
|
63
|
+
while i < data.size && i >= 0
|
|
64
|
+
if data[i][1] =~ /#{term}/
|
|
65
|
+
return i
|
|
70
66
|
end
|
|
67
|
+
i += reverse ? -1 : 1
|
|
71
68
|
end
|
|
69
|
+
nil
|
|
70
|
+
end
|
|
72
71
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
72
|
+
def search(term, skip_current_line, reverse)
|
|
73
|
+
if term
|
|
74
|
+
@search_term = term
|
|
75
|
+
else
|
|
76
|
+
term = @search_term # nil indicates 'use-last-term'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
search_from = @cursor - 1
|
|
80
|
+
if skip_current_line
|
|
81
|
+
search_from += reverse ? -1 : 1
|
|
78
82
|
end
|
|
83
|
+
|
|
84
|
+
p = find_next_index(term, search_from, reverse) ||
|
|
85
|
+
find_next_index(term, reverse ? data.size - 1 : 0, reverse)
|
|
86
|
+
|
|
87
|
+
go_to(p + 1) if p
|
|
79
88
|
end
|
|
80
89
|
|
|
81
90
|
def bufbottom
|
|
@@ -121,6 +130,12 @@ module GitSpelunk
|
|
|
121
130
|
end
|
|
122
131
|
|
|
123
132
|
def go_to(l)
|
|
133
|
+
if l > @data.size
|
|
134
|
+
l = @data.size
|
|
135
|
+
elsif l < 1
|
|
136
|
+
l = 1
|
|
137
|
+
end
|
|
138
|
+
|
|
124
139
|
previous_offset = @cursor - @top
|
|
125
140
|
@cursor = l
|
|
126
141
|
@top = @cursor - previous_offset
|
data/lib/git_spelunk/ui.rb
CHANGED
|
@@ -139,19 +139,21 @@ module GitSpelunk
|
|
|
139
139
|
system("git -p --git-dir='#{@file_context.repo.path}' show #{sha} | less")
|
|
140
140
|
Curses.stdscr.refresh
|
|
141
141
|
[@pager, @repo, @status].each(&:draw)
|
|
142
|
-
when '/'
|
|
142
|
+
when '/', '?'
|
|
143
143
|
@heartbeat = nil
|
|
144
|
-
@status.command_buffer =
|
|
144
|
+
@status.command_buffer = key
|
|
145
145
|
@status.draw
|
|
146
146
|
|
|
147
147
|
line = getline
|
|
148
148
|
if line
|
|
149
|
-
@
|
|
150
|
-
@pager.search(@search_string, false)
|
|
149
|
+
@pager.search(line, false, key == '?')
|
|
151
150
|
end
|
|
152
151
|
@status.exit_command_mode!
|
|
153
152
|
when 'n'
|
|
154
|
-
@pager.search(
|
|
153
|
+
@pager.search(nil, true, false)
|
|
154
|
+
after_navigation
|
|
155
|
+
when 'N'
|
|
156
|
+
@pager.search(nil, true, true)
|
|
155
157
|
after_navigation
|
|
156
158
|
when 'q'
|
|
157
159
|
exit
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: git_spelunk
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2013-11-
|
|
13
|
+
date: 2013-11-17 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: grit
|
|
@@ -28,7 +28,8 @@ dependencies:
|
|
|
28
28
|
- - ! '>='
|
|
29
29
|
- !ruby/object:Gem::Version
|
|
30
30
|
version: '0'
|
|
31
|
-
description:
|
|
31
|
+
description: git-spelunk is a terminal based exploration tool for git blame and history,
|
|
32
|
+
based on the notion of moving in history based on file context
|
|
32
33
|
email:
|
|
33
34
|
- ben@zendesk.com
|
|
34
35
|
- saroj@zendesk.com
|
|
@@ -47,7 +48,7 @@ files:
|
|
|
47
48
|
- lib/git_spelunk/ui.rb
|
|
48
49
|
- lib/git_spelunk.rb
|
|
49
50
|
- bin/git-spelunk
|
|
50
|
-
homepage:
|
|
51
|
+
homepage: https://github.com/osheroff/git-spelunk
|
|
51
52
|
licenses: []
|
|
52
53
|
post_install_message:
|
|
53
54
|
rdoc_options: []
|
|
@@ -70,6 +71,6 @@ rubyforge_project:
|
|
|
70
71
|
rubygems_version: 1.8.25
|
|
71
72
|
signing_key:
|
|
72
73
|
specification_version: 3
|
|
73
|
-
summary:
|
|
74
|
+
summary: A git tool for exploring history and blame
|
|
74
75
|
test_files: []
|
|
75
76
|
has_rdoc:
|