class BufferList
Attributes
current_buf[R]
Public Instance Methods
<<(_buf)
click to toggle source
Calls superclass method
# File lib/vimamsa/buffer_list.rb, line 26 def <<(_buf) super $buffer = _buf @current_buf = self.size - 1 $buffer_history << @current_buf @recent_ind = 0 $hook.call(:change_buffer, $buffer) gui_set_current_buffer($buffer.id) gui_set_cursor_pos($buffer.id, $buffer.pos) end
add_current_buf_to_history()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 61 def add_current_buf_to_history() @recent_ind = 0 $buffer_history << @current_buf compact_buf_history() end
close_all_buffers()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 170 def close_all_buffers() message("Closing all buffers") while true if self.size == 1 close_buffer(0) break else close_buffer(0) end end # self << Buffer.new("\n") end
close_buffer(buffer_i, from_recent = false)
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 141 def close_buffer(buffer_i, from_recent = false) return if self.size <= buffer_i bufname = self[buffer_i].basename message("Closed buffer #{bufname}") recent = get_recent_buffers jump_to_buf = recent[@recent_ind + 1] jump_to_buf = 0 if jump_to_buf == nil self.slice!(buffer_i) $buffer_history = $buffer_history.collect { |x| r = x; r = x - 1 if x > buffer_i; r = nil if x == buffer_i; r }.compact if @current_buf == buffer_i if from_recent @current_buf = jump_to_buf else @current_buf = $buffer_history.last end end # Ripl.start :binding => binding if self.size == 0 self << Buffer.new("\n") @current_buf = 0 else @current_buf = 0 if @current_buf >= self.size end set_current_buffer(@current_buf, false) end
close_current_buffer(from_recent = false)
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 194 def close_current_buffer(from_recent = false) close_buffer(@current_buf, from_recent) end
close_scrap_buffers()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 183 def close_scrap_buffers() i = 0 while i < self.size if !self[i].pathname close_buffer(i) else i += 1 end end end
compact_buf_history()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 134 def compact_buf_history() h = {} # Keep only first occurence in history bh = $buffer_history.reverse.select { |x| r = h[x] == nil; h[x] = true; r } $buffer_history = bh.reverse end
delete_current_buffer(from_recent = false)
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 198 def delete_current_buffer(from_recent = false) fn = buf.fname close_buffer(@current_buf, from_recent) #TODO: confirm with user, "Do you want to delete file X" if is_existing_file(fn) message("Deleting file: #{fn}") File.delete(fn) end end
get_buffer_by_filename(fname)
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 55 def get_buffer_by_filename(fname) #TODO: check using stat/inode? http://ruby-doc.org/core-1.9.3/File/Stat.html#method-i-ino buf_idx = self.index { |b| b.fname == fname } return buf_idx end
get_last_dir()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 92 def get_last_dir lastdir = nil if $buffer.fname lastdir = File.dirname($buffer.fname) else for bufid in $buffer_history.reverse[1..-1] bf = $buffers[bufid] debug "FNAME:#{bf.fname}" if bf.fname lastdir = File.dirname(bf.fname) break end end end lastdir = File.expand_path(".") if lastdir.nil? return lastdir end
get_recent_buffers()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 110 def get_recent_buffers() bufs = []; b = {} $buffer_history.reverse.each { |x| bufs << x if !b[x] && x < self.size; b[x] = true } return bufs end
history_switch_backwards()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 116 def history_switch_backwards() recent = get_recent_buffers() @recent_ind += 1 @recent_ind = 0 if @recent_ind >= recent.size bufid = recent[@recent_ind] debug "IND:#{@recent_ind} RECENT:#{recent.join(" ")}" set_current_buffer(bufid, false) end
history_switch_forwards()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 125 def history_switch_forwards() recent = get_recent_buffers() @recent_ind -= 1 @recent_ind = self.size - 1 if @recent_ind < 0 bufid = recent[@recent_ind] debug "IND:#{@recent_ind} RECENT:#{recent.join(" ")}" set_current_buffer(bufid, false) end
set_current_buffer(buffer_i, update_history = true)
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 67 def set_current_buffer(buffer_i, update_history = true) buffer_i = self.size -1 if buffer_i > self.size buffer_i = 0 if buffer_i < 0 $buffer = self[buffer_i] return if !$buffer @current_buf = buffer_i debug "SWITCH BUF2. bufsize:#{self.size}, curbuf: #{@current_buf}" fpath = $buffer.fname if fpath and fpath.size > 50 fpath = fpath[-50..-1] end if update_history add_current_buf_to_history end $hook.call(:change_buffer, $buffer) $buffer.set_active gui_set_current_buffer($buffer.id) gui_set_window_title($buffer.title,$buffer.subtitle) # hpt_scan_images() if $debug # experimental end
switch()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 37 def switch() debug "SWITCH BUF. bufsize:#{self.size}, curbuf: #{@current_buf}" @current_buf += 1 @current_buf = 0 if @current_buf >= self.size m = method("switch") set_last_command({ method: m, params: [] }) set_current_buffer(@current_buf) end
switch_to_last_buf()
click to toggle source
# File lib/vimamsa/buffer_list.rb, line 46 def switch_to_last_buf() debug "SWITCH TO LAST BUF:" debug $buffer_history last_buf = $buffer_history[-2] if last_buf set_current_buffer(last_buf) end end