vimamsa 0.1.15 → 0.1.16

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: ea3e4fa5b65895cba0a20cae08fad4f422008e786f4cd3ab405d39bf630f52db
4
- data.tar.gz: 65b80bb0e663f64d241e51130aac9e13106c58ff20f698c095e5cf43b416ce41
3
+ metadata.gz: 4603a715f3fd3b549cc38a9744d93617b3a87ba3d95268f77ed2c98c2c04643d
4
+ data.tar.gz: 26e82f3a6564a78dcd7188a69037f97bae3fb53c43be807560facfab8e70dd51
5
5
  SHA512:
6
- metadata.gz: 1c056fa3ed552a410b7a9f06ebfb0f2eb1444feba9a5810a520e8012a245b83bd156115566d2965095e8d7bacc184883e1bb16e724efa26c9abd0180c2640050
7
- data.tar.gz: 9196b537289ac4a08b09c53dbbdf03ccd5bec1cb50d3de4b40a03352cf64c0fc0776d489803a421d00d72bad72fd96cefc45865f27d1df5f22b67b9906c4edf9
6
+ metadata.gz: 1f05aad90407dfdd0e9c310f08f5e79274a5901f714d63e353e7291f25c7f4dba3d402163f338cebf01fef4f8fae07522f85a58d62e76086661007f24b14a0bd
7
+ data.tar.gz: f503976439de2a311778b48a427354fc21a1b42434eb6a0bcfa5e3c00144fc3508abe029a058249c2b433e9f41f983679f44927ae095b1ec4a4eb36fafdbfe93
@@ -93,8 +93,9 @@ class Buffer < String
93
93
  end
94
94
 
95
95
  #Check if this buffer is attached to any windows
96
- def is_active
96
+ def is_active?
97
97
  for k in vma.gui.windows.keys
98
+ next if vma.gui.windows[k][:sw].child.nil?
98
99
  return true if vma.gui.windows[k][:sw].child.bufo == self
99
100
  end
100
101
  return false
@@ -1373,7 +1374,6 @@ class Buffer < String
1373
1374
 
1374
1375
  def end_visual_mode()
1375
1376
  debug "end_visual_mode, #{vma.kbd.get_mode}, #{visual_mode?}", 2
1376
- vma.kbd.dump_state
1377
1377
  return if vma.kbd.get_mode != :visual
1378
1378
  if !visual_mode?
1379
1379
  debug "end_visual_mode, !visual_mode?"
@@ -199,7 +199,7 @@ class BufferList
199
199
 
200
200
  def get_last_non_active_buffer
201
201
  for bu in slist.reverse
202
- return bu.id if !bu.is_active
202
+ return bu.id if !bu.is_active?
203
203
  end
204
204
  return nil
205
205
  end
@@ -34,7 +34,7 @@ class BufferManager
34
34
  def close_selected
35
35
  idx = buf_of_current_line()
36
36
  r = @buf.current_line_range
37
- Gui.hilight_range(@buf,r, color:"#666666ff")
37
+ Gui.hilight_range(@buf, r, color: "#666666ff")
38
38
  if idx.nil?
39
39
  message("buf already closed")
40
40
  return
@@ -68,21 +68,34 @@ class BufferManager
68
68
  s << "\n"
69
69
  i = 0
70
70
  jump_to_line = 0
71
- for b in vma.buffers.list.sort_by { |x| x.list_str }
72
- if b.id == vma.buf.id # current file
73
- # s << " "
74
- jump_to_line = i
71
+ lastdir = nil
72
+ bh = {}
73
+ for b in vma.buffers.list
74
+ if !b.fname.nil?
75
+ bname = File.basename(b.fname)
76
+ dname = File.dirname(b.dirname)
77
+ else
78
+ bname = b.list_str
79
+ dname = "*"
75
80
  end
76
- x = b.list_str
77
- s << "#{x}\n"
78
- @line_to_id[i] = b.id
81
+ bh[dname] ||= []
82
+ bh[dname] << {bname: bname, buf: b}
83
+ end
84
+ for k in bh.keys.sort
85
+ d = tilde_path(k)
86
+ s << "📂#{d}:\n" # Note: to close?: 📁
79
87
  i += 1
88
+ for bnfo in bh[k].sort_by{|x|x[:bname]}
89
+ s << "╰─#{bnfo[:bname]}\n"
90
+
91
+ @line_to_id[i] = bnfo[:buf].id
92
+ jump_to_line = i if bnfo[:buf].id == vma.buf.id # current file
93
+ i += 1
94
+ end
80
95
  end
81
-
82
-
83
-
96
+
84
97
  if @buf.nil?
85
- @buf = create_new_buffer(s,"bufmgr")
98
+ @buf = create_new_buffer(s, "bufmgr")
86
99
  @buf.default_mode = :buf_mgr
87
100
  @buf.module = self
88
101
  @buf.active_kbd_mode = :buf_mgr
@@ -49,6 +49,8 @@ module Vimamsa
49
49
 
50
50
  add_to_menu "Actions.debug.dumpkbd", { :label => "Dump kbd state", :action => :kbd_dump_state }
51
51
 
52
+
53
+ add_to_menu "View.BufferManager", { :label => "Show open files", :action => :start_buf_manager }
52
54
  add_to_menu "View.TwoColumn", { :label => "Toggle two column mode", :action => :toggle_two_column }
53
55
 
54
56
 
@@ -148,7 +148,7 @@ class VSourceView < GtkSource::View
148
148
  @cnt_drag.signal_connect "drag-end" do |gesture, offsetx, offsety|
149
149
  debug "drag-end", 2
150
150
  if offsetx.abs < 5 and offsety.abs < 5
151
- debug "Not enough drag",2
151
+ debug "Not enough drag", 2
152
152
  @range_start = nil
153
153
  elsif !buf.visual_mode? and vma.kbd.get_scope != :editor
154
154
  # Can't transition from editor wide mode to buffer specific mode
@@ -523,6 +523,22 @@ class VSourceView < GtkSource::View
523
523
  end
524
524
  end
525
525
 
526
+ def set_cursor_color(ctype)
527
+ if @ctype != ctype
528
+ bg = $confh[:mode][ctype][:cursor][:background]
529
+ if bg.class == String
530
+ if !@cursor_prov.nil?
531
+ self.style_context.remove_provider(@cursor_prov)
532
+ end
533
+ prov = Gtk::CssProvider.new
534
+ prov.load(data: ".view text selection { background-color: #{bg}; color: #ffffff; }")
535
+ self.style_context.add_provider(prov)
536
+ @cursor_prov = prov
537
+ end
538
+ @ctype == ctype
539
+ end
540
+ end
541
+
526
542
  def draw_cursor
527
543
  # if @tt.nil?
528
544
  # @tt = buffer.create_tag("font_tag")
@@ -533,7 +549,8 @@ class VSourceView < GtkSource::View
533
549
  ctype = vma.kbd.get_cursor_type
534
550
  delete_cursorchar
535
551
  vma.gui.remove_overlay_cursor
536
- if ctype == :command
552
+ if [:command, :replace, :browse].include?(ctype)
553
+ set_cursor_color(ctype)
537
554
  if @bufo[@bufo.pos] == "\n"
538
555
  # If we are at end of line, it's not possible to draw the cursor by making a selection. I tried to do this by drawing an overlay, but that generates issues. If moving the cursor causes the ScrolledWindow to be scrolled, these errors randomly appear and the whole view shows blank:
539
556
  # (ruby:21016): Gtk-WARNING **: 19:52:23.181: Trying to snapshot GtkSourceView 0x55a97524c8c0 without a current allocation
@@ -559,7 +576,9 @@ class VSourceView < GtkSource::View
559
576
  buffer.select_range(itr, itr2)
560
577
  end
561
578
  # elsif @bufo.visual_mode?
579
+
562
580
  elsif ctype == :visual
581
+ set_cursor_color(ctype)
563
582
  # debug "VISUAL MODE"
564
583
  (_start, _end) = @bufo.get_visual_mode_range2
565
584
  # debug "#{_start}, #{_end}"
@@ -112,11 +112,11 @@ class KeyBindingTree
112
112
 
113
113
  def to_previous_mode()
114
114
  debug "to_previous_mode",2
115
- pp @default_mode_stack
115
+ debug @default_mode_stack
116
116
  if @default_mode_stack.size > 1
117
117
  @default_mode_stack.pop
118
118
  end
119
- pp @default_mode_stack
119
+ debug @default_mode_stack
120
120
  __set_mode(@default_mode_stack[-1])
121
121
  end
122
122
 
@@ -4,13 +4,21 @@ vma.kbd.add_mode("V", :visual, :visual)
4
4
  vma.kbd.add_mode("M", :minibuffer) #TODO: needed?
5
5
  vma.kbd.add_mode("R", :readchar)
6
6
  vma.kbd.add_minor_mode("audio", :audio, :command)
7
- vma.kbd.add_mode("B", :browse, :command, scope: :editor)
8
- vma.kbd.add_mode("X", :replace, :command, name: "Replace")
7
+ vma.kbd.add_mode("B", :browse, :browse, scope: :editor)
8
+ vma.kbd.add_mode("X", :replace, :replace, name: "Replace")
9
9
  vma.kbd.set_default_mode(:command)
10
10
  vma.kbd.__set_mode(:command) #TODO:needed?
11
+ # cnf.mode.command.cursor.background = "#fc6f03"
12
+ cnf.mode.command.cursor.background = "#05c5a0"
13
+ cnf.mode.default.cursor.background = "#03fcca"
14
+ # cnf.mode.visual.cursor.background = "#10bd8e"
15
+ # cnf.mode.visual.cursor.background = "#e95420"
16
+ # cnf.mode.visual.cursor.background = "#cb3804"
17
+ cnf.mode.visual.cursor.background = "#bc6040"
18
+ cnf.mode.replace.cursor.background = "#fc0331"
19
+ cnf.mode.browse.cursor.background = "#f803fc"
11
20
  # vma.kbd.show_state_trail
12
21
 
13
-
14
22
  bindkey ["VCB M", "B m"], :run_last_macro
15
23
 
16
24
  bindkey "VC s", :easy_jump
@@ -310,6 +318,9 @@ default_keys = {
310
318
  # "I return" => 'buf.insert_new_line()',
311
319
  }
312
320
 
321
+ bindkey "C , i p", "generate_password_to_buf(15)"
322
+
323
+
313
324
  default_keys.each { |key, value|
314
325
  bindkey(key, value)
315
326
  }
data/lib/vimamsa/util.rb CHANGED
@@ -1,5 +1,34 @@
1
1
  require "open3"
2
2
 
3
+ VOWELS = %w(a e i o u)
4
+ CONSONANTS = %w(b c d f g h j k l m n p q r s t v w x y z)
5
+
6
+ def tilde_path(abspath)
7
+ userhome = File.expand_path("~/")
8
+ abspath.sub(/^#{Regexp.escape(userhome)}\//, "~/")
9
+ end
10
+
11
+ def generate_password(length)
12
+ password = ""
13
+ while password.size < length
14
+ i = password.size + 1
15
+ if i.even?
16
+ char = CONSONANTS.sample
17
+ else
18
+ char = VOWELS.sample
19
+ end
20
+ char.upcase! if rand < 0.2
21
+ password << char
22
+ password << (1..10).to_a.sample.to_s if rand < 0.25
23
+ end
24
+ password
25
+ end
26
+
27
+ def generate_password_to_buf(length)
28
+ passw = generate_password(length)
29
+ vma.buf.insert_txt(passw)
30
+ end
31
+
3
32
  # Get all indexes for start of matching regexp
4
33
  def scan_indexes(txt, regex)
5
34
  # indexes = txt.enum_for(:scan, regex).map { Regexp.last_match.begin(0) + 1 }
@@ -1,3 +1,3 @@
1
1
  module Vimamsa
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimamsa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sami Sieranoja
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-17 00:00:00.000000000 Z
11
+ date: 2023-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler