Method: Code.open_log_view

Defined in:
lib/xiki/code.rb

.open_log_view(options = {}) ⇒ Object



550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
# File 'lib/xiki/code.rb', line 550

def self.open_log_view options={}
  prefix = Keys.prefix :clear=>true
  prefix = nil if options[:called_by_launch]
  orig = View.current if prefix == :u

  file = Ol.file_path

  buffer = "*ol"

  # If already open, just go to it
  if View.buffer_visible?(buffer)
    View.to_buffer(buffer)
    return if self.clear_and_go_back orig
  end

  # If 2 or more windows open
  if View.list.size == 2
    View.to_nth(1)   # Go to 2rd
  elsif View.list.size >= 3
    View.to_nth(2)
    unless View.left_edge == 0   # If 3nd not at left, go to 2nd
      View.to_nth(1)
      unless View.left_edge == 0   # If not at left, go to first
        View.to_nth(0)
      end
      View.create
    end
  end

  # If buffer open, just switch to it
  if View.buffer_open? buffer
    View.to_buffer buffer
    return if self.clear_and_go_back orig
    return
  end

  return if file.nil? or file.empty?

  # Create file if not there
  `touch #{file}` unless File.exists?(file)
  lines = "#{file}.lines"
  `touch #{lines}` unless File.exists?(lines)

  Console.run "tail #{prefix == :- ? '-n 100' : ''} -f #{file}", :buffer=>buffer, :dir=>'/tmp', :dont_leave_bar=>true
  Notes.mode

  return if self.clear_and_go_back orig
end