Class: SetViewerActor

Inherits:
Object show all
Includes:
BasicActor
Defined in:
lib/set_viewer_actor.rb

Instance Method Summary collapse

Methods included from BasicActor

included

Constructor Details

#initializeSetViewerActor

Returns a new instance of SetViewerActor.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/set_viewer_actor.rb', line 4

def initialize
  subscribe "tell_selected_item", :tell_selected_item
  subscribe "copy_selected_item", :copy_selected_item
  subscribe "tell_selected_item_content", :tell_selected_item_content
  subscribe "render_working_set", :render_working_set
  subscribe "set_build_finished", :render_working_set
  subscribe "set_build_failed", :show_error
  subscribe "scroll_changed", :scroll
  subscribe "context_lines_changed", :update_context_lines
  subscribe "refresh", :refresh
  subscribe "show_match_lines_toggled", :toggle_match_lines
  subscribe "select_next_file", :select_next_file
  subscribe "select_prev_file", :select_prev_file
  subscribe "select_next_item", :select_next_item
  subscribe "select_prev_item", :select_prev_item
end

Instance Method Details

#copy_selected_item(_, include_context = false) ⇒ Object



113
114
115
116
117
118
119
120
121
122
# File 'lib/set_viewer_actor.rb', line 113

def copy_selected_item(_, include_context=false)
  if items_present?
    item = @working_set_view.selected_item
    if include_context
      Clipboard.copy item.full_body
    else
      Clipboard.copy item.match_line
    end
  end
end

#items_present?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/set_viewer_actor.rb', line 32

def items_present?
  (@working_set_view&.working_set&.items&.size || 0) > 0
end

#refresh(_ = nil) ⇒ Object



48
49
50
51
52
53
54
# File 'lib/set_viewer_actor.rb', line 48

def refresh(_=nil)
  return unless @working_set_view
  # triggers search again without changing search term
  ws = @working_set_view.working_set

  publish "search_changed", ws.search, ws.options
end

#render_working_set(_, working_set = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/set_viewer_actor.rb', line 21

def render_working_set(_, working_set = nil)
  if working_set
    prev_wsv = @working_set_view
    @working_set_view = View::WorkingSet.new(working_set)
    if prev_wsv&.working_set&.search == working_set.search
      @working_set_view.restore_selection_state(prev_wsv)
    end
  end
  publish "render_view", @working_set_view
end

#scroll(_, delta) ⇒ Object



36
37
38
39
# File 'lib/set_viewer_actor.rb', line 36

def scroll(_, delta)
  return unless items_present?
  @working_set_view.scroll(delta)
end

#select_next_file(_) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/set_viewer_actor.rb', line 61

def select_next_file(_)
  return unless items_present?
  @working_set_view.select_next_file
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_next_item(_) ⇒ Object



77
78
79
80
81
82
83
# File 'lib/set_viewer_actor.rb', line 77

def select_next_item(_)
  return unless items_present?
  @working_set_view.select_next_item
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_prev_file(_) ⇒ Object



69
70
71
72
73
74
75
# File 'lib/set_viewer_actor.rb', line 69

def select_prev_file(_)
  return unless items_present?
  @working_set_view.select_prev_file
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#select_prev_item(_) ⇒ Object



85
86
87
88
89
90
91
# File 'lib/set_viewer_actor.rb', line 85

def select_prev_item(_)
  return unless items_present?
  @working_set_view.select_prev_item
  unless @working_set_view.selected_item_in_view?
    publish "scroll_changed", @working_set_view.selected_item_scroll_delta
  end
end

#show_error(_, error) ⇒ Object



124
125
126
127
128
# File 'lib/set_viewer_actor.rb', line 124

def show_error(_, error)
  debug_message error
  # Ncurses.stdscr.mvaddstr 0, 0, "SetViewerActor#show_error: #{error.backtrace}"
  # Ncurses.stdscr.refresh
end

#tell_selected_item(_) ⇒ Object



93
94
95
96
97
98
99
100
101
102
# File 'lib/set_viewer_actor.rb', line 93

def tell_selected_item(_)
  if items_present?
    item = @working_set_view.selected_item
    publish "respond_client", "selected_item", {
      file_path: item.file_path,
      row: item.row,
      column: item.column
    }
  end
end

#tell_selected_item_content(_) ⇒ Object



104
105
106
107
108
109
110
111
# File 'lib/set_viewer_actor.rb', line 104

def tell_selected_item_content(_)
  if items_present?
    item = @working_set_view.selected_item
    publish "respond_client", "selected_item_content", {
      data: item.match_line
    }
  end
end

#toggle_match_lines(_) ⇒ Object



56
57
58
59
# File 'lib/set_viewer_actor.rb', line 56

def toggle_match_lines(_)
  return unless items_present?
  @working_set_view.toggle_match_lines
end

#update_context_lines(_, delta) ⇒ Object



41
42
43
44
45
46
# File 'lib/set_viewer_actor.rb', line 41

def update_context_lines(_, delta)
  $CONTEXT_LINES += delta
  $CONTEXT_LINES = 0 if $CONTEXT_LINES < 0
  debug_message "context lines set to #{$CONTEXT_LINES}"
  refresh
end