Module: Textbringer::Commands
- Includes:
- Utils
- Included in:
- Mode, Mode
- Defined in:
- lib/textbringer/commands.rb,
lib/textbringer/commands/fill.rb,
lib/textbringer/commands/help.rb,
lib/textbringer/commands/misc.rb,
lib/textbringer/commands/ctags.rb,
lib/textbringer/commands/files.rb,
lib/textbringer/commands/server.rb,
lib/textbringer/commands/buffers.rb,
lib/textbringer/commands/dabbrev.rb,
lib/textbringer/commands/isearch.rb,
lib/textbringer/commands/replace.rb,
lib/textbringer/commands/windows.rb,
lib/textbringer/commands/register.rb,
lib/textbringer/commands/clipboard.rb,
lib/textbringer/commands/keyboard_macro.rb
Defined Under Namespace
Modules: SymbolDump
Classes: BufferPosition
Constant Summary
collapse
- HELP_RING =
Ring.new
- UNIVERSAL_ARGUMENT_MAP =
Keymap.new
- CTAGS =
{
path: nil,
tags: nil,
tags_mtime: nil,
name: nil,
candidates: nil,
index: nil,
tag_mark_stack: []
}
- ISEARCH_MODE_MAP =
Keymap.new
- ISEARCH_STATUS =
{
forward: true,
string: "",
last_string: "",
start: 0,
last_pos: 0,
recursive_edit: false
}
- RE_SEARCH_STATUS =
{
last_regexp: nil
}
- REGISTERS =
{}
- CLIPBOARD_AVAILABLE =
Clipboard.implementation.name != "Clipboard::Linux" ||
(ENV["DISPLAY"] && system("which xclip > /dev/null 2>&1"))
- KEYBOARD_MACROS =
{}
Constants included
from Utils
Utils::COMPLETION, Utils::HOOKS, Utils::Y_OR_N_MAP
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Utils
add_hook, background, complete_for_minibuffer, foreground, foreground!, message, read_buffer, read_char, read_command_name, read_encoding, read_event, read_file_name, read_from_minibuffer, read_key_sequence, read_single_char, received_keyboard_quit?, remove_hook, ruby_install_name, run_hooks, self_insert_and_exit_minibuffer, set_transient_map, show_exception, sit_for, sleep_for, y_or_n?, yes_or_no?
Class Method Details
.[](name) ⇒ Object
22
23
24
|
# File 'lib/textbringer/commands.rb', line 22
def self.[](name)
@command_table[name.intern]
end
|
.command_table ⇒ Object
18
19
20
|
# File 'lib/textbringer/commands.rb', line 18
def self.command_table
@command_table
end
|
.define_command(name, doc: "No documentation", &block) ⇒ Object
26
27
28
29
30
31
32
|
# File 'lib/textbringer/commands.rb', line 26
def define_command(name, doc: "No documentation", &block)
name = name.intern
Commands.send(:define_method, name, &block)
Commands.send(:module_function, name)
Commands.command_table[name] = Command.new(name, block, doc)
name
end
|
.list ⇒ Object
14
15
16
|
# File 'lib/textbringer/commands.rb', line 14
def self.list
@command_table.keys
end
|
.undefine_command(name) ⇒ Object
Instance Method Details
#command_help(cmd) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/textbringer/commands/help.rb', line 52
def command_help(cmd)
s = format("%s:%d\n", *cmd.block.source_location)
s << "-" * (Window.columns - 2) + "\n"
s << "#{cmd.name}"
if !cmd.block.parameters.empty?
s << "("
s << cmd.block.parameters.map { |_, param| param }.join(", ")
s << ")"
end
s << "\n\n"
s << "-" * (Window.columns - 2) + "\n\n"
s << cmd.doc
s << "\n"
s
end
|
#current_prefix_arg ⇒ Object
161
162
163
|
# File 'lib/textbringer/commands/misc.rb', line 161
def current_prefix_arg
Controller.current.current_prefix_arg
end
|
#execute_keyboard_macro(macro, n = 1) ⇒ Object
40
41
42
|
# File 'lib/textbringer/commands/keyboard_macro.rb', line 40
def execute_keyboard_macro(macro, n = 1)
Controller.current.execute_keyboard_macro(macro, n)
end
|
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/textbringer/commands/ctags.rb', line 75
def get_tags
path = File.expand_path("tags")
mtime = File.mtime(path)
if CTAGS[:path] != path || CTAGS[:tags_mtime] != mtime
CTAGS[:path] = path
tags = Hash.new { |h, k| h[k] = [] }
File.read(path).scan(/^(.*?)\t(.*?)\t(.*?)(?:;".*)?$/) do
|name, file, addr|
n = tags[name].count { |f,| f == file } + 1
tags[name].push([file, addr, n])
end
CTAGS[:tags] = tags
CTAGS[:tags_mtime] = mtime
message("Loaded #{path}")
end
CTAGS[:tags]
end
|
#isearch_mode(forward, recursive_edit: false) ⇒ Object
#isearch_pre_command_hook ⇒ Object
68
69
70
71
72
|
# File 'lib/textbringer/commands/isearch.rb', line 68
def isearch_pre_command_hook
if /\Aisearch_/ !~ Controller.current.this_command
isearch_done
end
end
|
#isearch_prompt ⇒ Object
60
61
62
63
64
65
66
|
# File 'lib/textbringer/commands/isearch.rb', line 60
def isearch_prompt
if ISEARCH_STATUS[:forward]
"I-search: "
else
"I-search backward: "
end
end
|
#isearch_repeat(forward) ⇒ Object
#isearch_repeat_backward ⇒ Object
148
149
150
|
# File 'lib/textbringer/commands/isearch.rb', line 148
def isearch_repeat_backward
isearch_repeat(false)
end
|
#isearch_repeat_forward ⇒ Object
144
145
146
|
# File 'lib/textbringer/commands/isearch.rb', line 144
def isearch_repeat_forward
isearch_repeat(true)
end
|
#match_beginning(n) ⇒ Object
23
24
25
|
# File 'lib/textbringer/commands/replace.rb', line 23
def match_beginning(n)
Buffer.current.match_beginning(n)
end
|
#match_end(n) ⇒ Object
27
28
29
|
# File 'lib/textbringer/commands/replace.rb', line 27
def match_end(n)
Buffer.current.match_end(n)
end
|
#match_string(n) ⇒ Object
31
32
33
|
# File 'lib/textbringer/commands/replace.rb', line 31
def match_string(n)
Buffer.current.match_string(n)
end
|
#number_prefix_arg ⇒ Object
178
179
180
|
# File 'lib/textbringer/commands/misc.rb', line 178
def number_prefix_arg
prefix_numeric_value(current_prefix_arg)
end
|
#prefix_numeric_value(arg) ⇒ Object
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/textbringer/commands/misc.rb', line 165
def prefix_numeric_value(arg)
case arg
when Integer
arg
when Array
arg.first
when :-
-1
else
1
end
end
|
#read_keyboard_macro(prompt) ⇒ Object
56
57
58
59
60
|
# File 'lib/textbringer/commands/keyboard_macro.rb', line 56
def read_keyboard_macro(prompt)
macros = KEYBOARD_MACROS.keys.map(&:to_s)
f = ->(s) { complete_for_minibuffer(s, macros) }
read_from_minibuffer(prompt, completion_proc: f)
end
|
#read_register(prompt) ⇒ Object
#replace_match(s) ⇒ Object
35
36
37
|
# File 'lib/textbringer/commands/replace.rb', line 35
def replace_match(s)
Buffer.current.replace_match(s)
end
|
#universal_argument_mode ⇒ Object
152
153
154
|
# File 'lib/textbringer/commands/misc.rb', line 152
def universal_argument_mode
set_transient_map(UNIVERSAL_ARGUMENT_MAP)
end
|