vice-editor 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 653e5d0a2a2e7aeb03bb3afe07a67c4396fa948975770a9656b8cd6bf65f0c4c
4
- data.tar.gz: 48fa594f664bb81a51e131ac5e4683d5133c819605dabcf7cbbe1e9dc20cca65
3
+ metadata.gz: 8ea87ed282ee2df96d0a3f32c74f18a55b90a87d991d47327c30559b9deed763
4
+ data.tar.gz: 355574c2017cbf634fb8f7b98d8c02a87c95be41403c60992a0c4b4fce10bff1
5
5
  SHA512:
6
- metadata.gz: f27ffff49999814fb674ae93995ca40c3aad785f74aeaa51a0f8cd104e70933f4e5d174b3e0841c5e5318aff113a569bceaa3c97e59aa5d5b2db90b22fa78758
7
- data.tar.gz: 317f800f89486660ed2c7267ddccaaeab4fd77586a991646a0f0534836043d03c58d67c78c3cdb8e78919f080d484c9c6a910313565180dbdc6defc8a6e30ac1
6
+ metadata.gz: b03be081c958647a1251d9054db4a6e2cfa8314e67a9a6709049cb0b7f55c8d74349be728458c58088aabb11e37296dec71949c0a0858c0a6f8a39f86430f6db
7
+ data.tar.gz: 7a8ee61a59e5c8809e8ce69c05026b42d0b7ba04a83bb34c62a787b9e72ab5fc2ca5262a90c831d0f462134b68e475c6263e9dc31739249a3ee0cf2e3c78a4ae
data/README.md CHANGED
@@ -7,7 +7,12 @@ vice (**vi**sual **c**ode **e**ditor) is a small vi-like editor. It is currently
7
7
  ## Installation
8
8
  Simply running `gem install vice-editor` should be sufficient to install vice. You can then execute `vice` to start the editor.
9
9
 
10
+ ## Configuration
11
+ vice can be configured by creating a file at `~/.vicerc`. Your `.vicerc` should be a YAML file containing keys and fitting values as found in [constants.rb](https://github.com/knarka/vice/blob/master/lib/vice/constants.rb#L2). For an example, please look at [the example .vicerc files](https://github.com/knarka/vice/blob/master/extras) in this repository.
12
+
10
13
  ## Development
11
14
  Running: `rake`.
15
+
12
16
  Tests: `rake test`.
17
+
13
18
  Style: `rake style`.
@@ -22,10 +22,10 @@ module Vice
22
22
 
23
23
  @current_buffer = 0
24
24
  if filenames.nil? || filenames.empty?
25
- @buffers.push Buffer.new nil
25
+ @buffers.push Buffer.new(self, nil)
26
26
  else
27
27
  filenames.each do |f|
28
- @buffers.push Buffer.new(f)
28
+ @buffers.push Buffer.new(self, f)
29
29
  next_buffer
30
30
  end
31
31
  end
@@ -35,9 +35,28 @@ module Vice
35
35
  defaults = DEFAULTS.clone
36
36
 
37
37
  configfile = "#{Dir.home}/.vicerc"
38
+
39
+ unless File.file? configfile
40
+ @config = defaults
41
+ return
42
+ end
43
+
38
44
  user_defined = File.open(configfile) { |f| YAML.safe_load(f.read) } if File.file? configfile
39
45
 
40
- @config = user_defined.nil? ? defaults : defaults.merge(user_defined)
46
+ # merge the hashes, to up to two levels of depth.
47
+ # positive side-effect: our keys are symbols now
48
+ @config = {}
49
+ defaults.each do |dk, dv|
50
+ uv = user_defined[dk.to_s]
51
+ @config[dk] = if uv.nil?
52
+ dv
53
+ elsif uv.is_a? Hash
54
+ uv = Hash[uv.map { |k, v| [k, v.to_sym] }]
55
+ dv.merge(uv)
56
+ else
57
+ uv
58
+ end
59
+ end
41
60
  end
42
61
 
43
62
  def start
@@ -82,7 +82,7 @@ class Vice::Blitter
82
82
 
83
83
  (0..buffer.cursor.col - 1).each do |i|
84
84
  visual_cursor.col += if buffer.currentline[i] == "\t"
85
- vice.config['tab_width']
85
+ vice.config[:tab_width]
86
86
  else
87
87
  1
88
88
  end
@@ -112,7 +112,7 @@ class Vice::Blitter
112
112
  i = r - 1 + buffer.v_scroll
113
113
  window.setpos r, 0
114
114
  if i < buffer.lines
115
- line = pad buffer.getline(i).gsub(/(\t)/, ' ' * vice.config['tab_width'])
115
+ line = pad buffer.getline(i).gsub(/(\t)/, ' ' * vice.config[:tab_width])
116
116
  window.addstr formatnumber(i + 1) + line
117
117
  else
118
118
  window.addstr pad(formatnumber('~'))
@@ -5,20 +5,28 @@ class Vice::Buffer
5
5
  attr_accessor :cursor
6
6
  attr_accessor :v_scroll
7
7
 
8
- def initialize(filename)
8
+ def initialize(vice, filename)
9
9
  @buffer = []
10
10
  @marks = {}
11
+
12
+ @cursor = Vice::Cursor.new
13
+ @modified = false
14
+ @v_scroll = 0
15
+
11
16
  if filename
12
17
  @filename = filename
13
- File.open(filename, 'r') do |f| # TODO: don't assume file exists
14
- f.each_line { |line| @buffer.push line.chomp }
18
+
19
+ if File.file? filename
20
+ File.open(filename, 'r') do |f| # TODO: don't assume file exists
21
+ f.each_line { |line| @buffer.push line.chomp }
22
+ end
23
+ else
24
+ vice.alert 'new file'
25
+ @buffer.push ''
15
26
  end
16
27
  else
17
28
  @buffer.push ''
18
29
  end
19
- @cursor = Vice::Cursor.new
20
- @modified = false
21
- @v_scroll = 0
22
30
  end
23
31
 
24
32
  def writef(filename)
@@ -36,8 +36,10 @@ class Vice::Parser
36
36
  end
37
37
 
38
38
  def parsechar_command(vice, current_buffer, char)
39
- buffer = vice.buffers[current_buffer]
40
39
  raise 'command parser called from wrong mode' unless vice.mode == :command
40
+ return if char.is_a? Integer
41
+
42
+ buffer = vice.buffers[current_buffer]
41
43
 
42
44
  if %i[mark_set mark_jump].include? @current_command
43
45
  Vice::KeyPress.public_send(@current_command, vice, buffer, char)
@@ -51,21 +53,23 @@ class Vice::Parser
51
53
  if %i[mark_set mark_jump].include? command
52
54
  @current_command = command
53
55
  else
54
- Vice::KeyPress.public_send(command, vice, buffer)
56
+ Vice::KeyPress.public_send(command, vice, buffer) if Vice::KeyPress.respond_to? command.to_sym
55
57
  @current_command = ''
56
58
  end
57
59
  else
58
60
  keep_current = false
59
61
  vice.config[:keys].each do |k|
60
- keep_current = true if k[0].start_with? @current_command
62
+ keep_current = true if k[0].to_s.start_with? @current_command
61
63
  end
62
64
  @current_command = '' unless keep_current
63
65
  end
64
66
  end
65
67
 
66
68
  def parsechar_insert(vice, current_buffer, char)
67
- buffer = vice.buffers[current_buffer]
68
69
  raise 'insert parser called from wrong mode' unless vice.mode == :insert
70
+
71
+ buffer = vice.buffers[current_buffer]
72
+
69
73
  case char
70
74
  when 9
71
75
  buffer.insert "\t"
@@ -10,7 +10,7 @@ class Vice::Prompt
10
10
  files.shift
11
11
  vice.buffers.delete buffer unless buffer.modified || words[0] == 't'
12
12
  files.each do |f|
13
- vice.buffers.push Vice::Buffer.new(f)
13
+ vice.buffers.push Vice::Buffer.new(vice, f)
14
14
  end
15
15
  else
16
16
  vice.error 'no such file'
@@ -1,3 +1,3 @@
1
1
  module Vice
2
- VERSION = '0.0.5'.freeze
2
+ VERSION = '0.0.6'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vice-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - knarka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-21 00:00:00.000000000 Z
11
+ date: 2018-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses