vimamsa 0.1.15 → 0.1.16
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.
- checksums.yaml +4 -4
- data/lib/vimamsa/buffer.rb +2 -2
- data/lib/vimamsa/buffer_list.rb +1 -1
- data/lib/vimamsa/buffer_manager.rb +25 -12
- data/lib/vimamsa/gui_menu.rb +2 -0
- data/lib/vimamsa/gui_sourceview.rb +21 -2
- data/lib/vimamsa/key_binding_tree.rb +2 -2
- data/lib/vimamsa/key_bindings_vimlike.rb +14 -3
- data/lib/vimamsa/util.rb +29 -0
- data/lib/vimamsa/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4603a715f3fd3b549cc38a9744d93617b3a87ba3d95268f77ed2c98c2c04643d
         | 
| 4 | 
            +
              data.tar.gz: 26e82f3a6564a78dcd7188a69037f97bae3fb53c43be807560facfab8e70dd51
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1f05aad90407dfdd0e9c310f08f5e79274a5901f714d63e353e7291f25c7f4dba3d402163f338cebf01fef4f8fae07522f85a58d62e76086661007f24b14a0bd
         | 
| 7 | 
            +
              data.tar.gz: f503976439de2a311778b48a427354fc21a1b42434eb6a0bcfa5e3c00144fc3508abe029a058249c2b433e9f41f983679f44927ae095b1ec4a4eb36fafdbfe93
         | 
    
        data/lib/vimamsa/buffer.rb
    CHANGED
    
    | @@ -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?"
         | 
    
        data/lib/vimamsa/buffer_list.rb
    CHANGED
    
    
| @@ -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 | 
            -
                 | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 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 | 
            -
                   | 
| 77 | 
            -
                   | 
| 78 | 
            -
             | 
| 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
         | 
    
        data/lib/vimamsa/gui_menu.rb
    CHANGED
    
    | @@ -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  | 
| 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 | 
            -
                 | 
| 115 | 
            +
                debug @default_mode_stack
         | 
| 116 116 | 
             
                if @default_mode_stack.size > 1
         | 
| 117 117 | 
             
                  @default_mode_stack.pop
         | 
| 118 118 | 
             
                end
         | 
| 119 | 
            -
                 | 
| 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, : | 
| 8 | 
            -
            vma.kbd.add_mode("X", :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 }
         | 
    
        data/lib/vimamsa/version.rb
    CHANGED
    
    
    
        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. | 
| 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- | 
| 11 | 
            +
            date: 2023-11-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |