mui 0.1.0 → 0.2.0
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/.rubocop_todo.yml +158 -0
- data/CHANGELOG.md +349 -0
- data/exe/mui +1 -2
- data/lib/mui/autocmd.rb +66 -0
- data/lib/mui/buffer.rb +275 -0
- data/lib/mui/buffer_word_cache.rb +131 -0
- data/lib/mui/buffer_word_completer.rb +77 -0
- data/lib/mui/color_manager.rb +136 -0
- data/lib/mui/color_scheme.rb +63 -0
- data/lib/mui/command_completer.rb +21 -0
- data/lib/mui/command_context.rb +90 -0
- data/lib/mui/command_line.rb +137 -0
- data/lib/mui/command_registry.rb +25 -0
- data/lib/mui/completion_renderer.rb +84 -0
- data/lib/mui/completion_state.rb +58 -0
- data/lib/mui/config.rb +56 -0
- data/lib/mui/editor.rb +319 -0
- data/lib/mui/error.rb +29 -0
- data/lib/mui/file_completer.rb +51 -0
- data/lib/mui/floating_window.rb +161 -0
- data/lib/mui/handler_result.rb +101 -0
- data/lib/mui/highlight.rb +22 -0
- data/lib/mui/highlighters/base.rb +23 -0
- data/lib/mui/highlighters/search_highlighter.rb +26 -0
- data/lib/mui/highlighters/selection_highlighter.rb +48 -0
- data/lib/mui/highlighters/syntax_highlighter.rb +105 -0
- data/lib/mui/input.rb +17 -0
- data/lib/mui/insert_completion_renderer.rb +92 -0
- data/lib/mui/insert_completion_state.rb +77 -0
- data/lib/mui/job.rb +81 -0
- data/lib/mui/job_manager.rb +113 -0
- data/lib/mui/key_code.rb +30 -0
- data/lib/mui/key_handler/base.rb +100 -0
- data/lib/mui/key_handler/command_mode.rb +443 -0
- data/lib/mui/key_handler/insert_mode.rb +354 -0
- data/lib/mui/key_handler/motions/motion_handler.rb +56 -0
- data/lib/mui/key_handler/normal_mode.rb +579 -0
- data/lib/mui/key_handler/operators/base_operator.rb +134 -0
- data/lib/mui/key_handler/operators/change_operator.rb +179 -0
- data/lib/mui/key_handler/operators/delete_operator.rb +176 -0
- data/lib/mui/key_handler/operators/paste_operator.rb +113 -0
- data/lib/mui/key_handler/operators/yank_operator.rb +127 -0
- data/lib/mui/key_handler/search_mode.rb +188 -0
- data/lib/mui/key_handler/visual_line_mode.rb +20 -0
- data/lib/mui/key_handler/visual_mode.rb +397 -0
- data/lib/mui/key_handler/window_command.rb +112 -0
- data/lib/mui/key_handler.rb +16 -0
- data/lib/mui/layout/calculator.rb +15 -0
- data/lib/mui/layout/leaf_node.rb +33 -0
- data/lib/mui/layout/node.rb +29 -0
- data/lib/mui/layout/split_node.rb +132 -0
- data/lib/mui/line_renderer.rb +122 -0
- data/lib/mui/mode.rb +13 -0
- data/lib/mui/mode_manager.rb +185 -0
- data/lib/mui/motion.rb +139 -0
- data/lib/mui/plugin.rb +35 -0
- data/lib/mui/plugin_manager.rb +106 -0
- data/lib/mui/register.rb +110 -0
- data/lib/mui/screen.rb +85 -0
- data/lib/mui/search_completer.rb +50 -0
- data/lib/mui/search_input.rb +40 -0
- data/lib/mui/search_state.rb +88 -0
- data/lib/mui/selection.rb +55 -0
- data/lib/mui/status_line_renderer.rb +40 -0
- data/lib/mui/syntax/language_detector.rb +74 -0
- data/lib/mui/syntax/lexer_base.rb +106 -0
- data/lib/mui/syntax/lexers/c_lexer.rb +127 -0
- data/lib/mui/syntax/lexers/ruby_lexer.rb +114 -0
- data/lib/mui/syntax/token.rb +42 -0
- data/lib/mui/syntax/token_cache.rb +91 -0
- data/lib/mui/tab_bar_renderer.rb +87 -0
- data/lib/mui/tab_manager.rb +96 -0
- data/lib/mui/tab_page.rb +35 -0
- data/lib/mui/terminal_adapter/base.rb +92 -0
- data/lib/mui/terminal_adapter/curses.rb +162 -0
- data/lib/mui/terminal_adapter.rb +4 -0
- data/lib/mui/themes/default.rb +315 -0
- data/lib/mui/undo_manager.rb +83 -0
- data/lib/mui/undoable_action.rb +175 -0
- data/lib/mui/unicode_width.rb +100 -0
- data/lib/mui/version.rb +1 -1
- data/lib/mui/window.rb +158 -0
- data/lib/mui/window_manager.rb +249 -0
- data/lib/mui.rb +156 -2
- metadata +98 -3
data/lib/mui.rb
CHANGED
|
@@ -1,8 +1,162 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative "mui/version"
|
|
4
|
+
require_relative "mui/error"
|
|
5
|
+
require_relative "mui/key_code"
|
|
6
|
+
require_relative "mui/unicode_width"
|
|
7
|
+
require_relative "mui/config"
|
|
8
|
+
require_relative "mui/color_scheme"
|
|
9
|
+
require_relative "mui/color_manager"
|
|
10
|
+
require_relative "mui/themes/default"
|
|
11
|
+
require_relative "mui/terminal_adapter"
|
|
12
|
+
require_relative "mui/screen"
|
|
13
|
+
require_relative "mui/input"
|
|
14
|
+
require_relative "mui/undoable_action"
|
|
15
|
+
require_relative "mui/undo_manager"
|
|
16
|
+
require_relative "mui/buffer"
|
|
17
|
+
require_relative "mui/highlight"
|
|
18
|
+
require_relative "mui/highlighters/base"
|
|
19
|
+
require_relative "mui/highlighters/selection_highlighter"
|
|
20
|
+
require_relative "mui/highlighters/search_highlighter"
|
|
21
|
+
require_relative "mui/syntax/token"
|
|
22
|
+
require_relative "mui/syntax/lexer_base"
|
|
23
|
+
require_relative "mui/syntax/lexers/ruby_lexer"
|
|
24
|
+
require_relative "mui/syntax/lexers/c_lexer"
|
|
25
|
+
require_relative "mui/syntax/token_cache"
|
|
26
|
+
require_relative "mui/syntax/language_detector"
|
|
27
|
+
require_relative "mui/highlighters/syntax_highlighter"
|
|
28
|
+
require_relative "mui/line_renderer"
|
|
29
|
+
require_relative "mui/status_line_renderer"
|
|
30
|
+
require_relative "mui/layout/node"
|
|
31
|
+
require_relative "mui/layout/leaf_node"
|
|
32
|
+
require_relative "mui/layout/split_node"
|
|
33
|
+
require_relative "mui/layout/calculator"
|
|
34
|
+
require_relative "mui/window"
|
|
35
|
+
require_relative "mui/window_manager"
|
|
36
|
+
require_relative "mui/tab_page"
|
|
37
|
+
require_relative "mui/tab_manager"
|
|
38
|
+
require_relative "mui/tab_bar_renderer"
|
|
39
|
+
require_relative "mui/mode"
|
|
40
|
+
require_relative "mui/handler_result"
|
|
41
|
+
require_relative "mui/command_line"
|
|
42
|
+
require_relative "mui/completion_state"
|
|
43
|
+
require_relative "mui/insert_completion_state"
|
|
44
|
+
require_relative "mui/command_completer"
|
|
45
|
+
require_relative "mui/file_completer"
|
|
46
|
+
require_relative "mui/buffer_word_completer"
|
|
47
|
+
require_relative "mui/buffer_word_cache"
|
|
48
|
+
require_relative "mui/completion_renderer"
|
|
49
|
+
require_relative "mui/insert_completion_renderer"
|
|
50
|
+
require_relative "mui/floating_window"
|
|
51
|
+
require_relative "mui/search_state"
|
|
52
|
+
require_relative "mui/search_input"
|
|
53
|
+
require_relative "mui/search_completer"
|
|
54
|
+
require_relative "mui/motion"
|
|
55
|
+
require_relative "mui/selection"
|
|
56
|
+
require_relative "mui/register"
|
|
57
|
+
require_relative "mui/key_handler"
|
|
58
|
+
require_relative "mui/mode_manager"
|
|
59
|
+
require_relative "mui/command_context"
|
|
60
|
+
require_relative "mui/command_registry"
|
|
61
|
+
require_relative "mui/autocmd"
|
|
62
|
+
require_relative "mui/plugin"
|
|
63
|
+
require_relative "mui/plugin_manager"
|
|
64
|
+
require_relative "mui/job"
|
|
65
|
+
require_relative "mui/job_manager"
|
|
66
|
+
require_relative "mui/editor"
|
|
4
67
|
|
|
68
|
+
# mui(無為) top level module
|
|
5
69
|
module Mui
|
|
6
|
-
class
|
|
7
|
-
|
|
70
|
+
class << self
|
|
71
|
+
def config
|
|
72
|
+
@config ||= Config.new
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def plugin_manager
|
|
76
|
+
@plugin_manager ||= PluginManager.new
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def register
|
|
80
|
+
@register ||= Register.new
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def set(key, value)
|
|
84
|
+
config.set(key, value)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Register gem for lazy installation via bundler/inline
|
|
88
|
+
def use(gem_name, version = nil)
|
|
89
|
+
plugin_manager.add_gem(gem_name, version)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def keymap(mode, key, &block)
|
|
93
|
+
config.add_keymap(mode, key, block)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def command(name, &block)
|
|
97
|
+
config.add_command(name, block)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def autocmd(event, pattern: nil, &block)
|
|
101
|
+
config.add_autocmd(event, pattern, block)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def define_plugin(name, dependencies: [], &block)
|
|
105
|
+
plugin_manager.register(name, block, dependencies:)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def load_config
|
|
109
|
+
config.load_file(File.expand_path("~/.muirc"))
|
|
110
|
+
config.load_file(".lmuirc")
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Stub for LSP configuration DSL
|
|
114
|
+
# This allows .muirc to call Mui.lsp { ... } before mui-lsp gem is loaded
|
|
115
|
+
# When mui-lsp is loaded, it replaces this with the real ConfigDsl
|
|
116
|
+
def lsp(&block)
|
|
117
|
+
@lsp_config ||= LspConfigStub.new
|
|
118
|
+
@lsp_config.instance_eval(&block) if block
|
|
119
|
+
@lsp_config
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def lsp_server_configs
|
|
123
|
+
@lsp_config&.server_configs || []
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Stub class for LSP configuration before mui-lsp gem is loaded
|
|
128
|
+
# Stores configuration to be applied when the actual gem loads
|
|
129
|
+
class LspConfigStub
|
|
130
|
+
attr_reader :server_configs
|
|
131
|
+
|
|
132
|
+
def initialize
|
|
133
|
+
@server_configs = []
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Stub methods that mirror Mui::Lsp::ConfigDsl
|
|
137
|
+
def use(name, **options)
|
|
138
|
+
@server_configs << { type: :preset, name: name.to_sym, options: }
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def server(name:, command:, language_ids:, file_patterns:, auto_start: true, sync_on_change: true)
|
|
142
|
+
@server_configs << {
|
|
143
|
+
type: :custom,
|
|
144
|
+
name:,
|
|
145
|
+
command:,
|
|
146
|
+
language_ids:,
|
|
147
|
+
file_patterns:,
|
|
148
|
+
auto_start:,
|
|
149
|
+
sync_on_change:
|
|
150
|
+
}
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
class << self
|
|
155
|
+
def reset_config!
|
|
156
|
+
@config = nil
|
|
157
|
+
@plugin_manager = nil
|
|
158
|
+
@register = nil
|
|
159
|
+
@lsp_config = nil
|
|
160
|
+
end
|
|
161
|
+
end
|
|
8
162
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mui
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- S-H-GAMELINKS
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: curses
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '0'
|
|
12
26
|
description: Mui (無為) is a Vim-like TUI text editor written in Ruby. Inspired by the
|
|
13
27
|
concept of 'wu wei' (effortless action), it aims to be a minimal yet extensible
|
|
14
28
|
editor.
|
|
@@ -19,13 +33,93 @@ executables:
|
|
|
19
33
|
extensions: []
|
|
20
34
|
extra_rdoc_files: []
|
|
21
35
|
files:
|
|
36
|
+
- ".rubocop_todo.yml"
|
|
22
37
|
- CHANGELOG.md
|
|
23
38
|
- LICENSE.txt
|
|
24
39
|
- README.md
|
|
25
40
|
- Rakefile
|
|
26
41
|
- exe/mui
|
|
27
42
|
- lib/mui.rb
|
|
43
|
+
- lib/mui/autocmd.rb
|
|
44
|
+
- lib/mui/buffer.rb
|
|
45
|
+
- lib/mui/buffer_word_cache.rb
|
|
46
|
+
- lib/mui/buffer_word_completer.rb
|
|
47
|
+
- lib/mui/color_manager.rb
|
|
48
|
+
- lib/mui/color_scheme.rb
|
|
49
|
+
- lib/mui/command_completer.rb
|
|
50
|
+
- lib/mui/command_context.rb
|
|
51
|
+
- lib/mui/command_line.rb
|
|
52
|
+
- lib/mui/command_registry.rb
|
|
53
|
+
- lib/mui/completion_renderer.rb
|
|
54
|
+
- lib/mui/completion_state.rb
|
|
55
|
+
- lib/mui/config.rb
|
|
56
|
+
- lib/mui/editor.rb
|
|
57
|
+
- lib/mui/error.rb
|
|
58
|
+
- lib/mui/file_completer.rb
|
|
59
|
+
- lib/mui/floating_window.rb
|
|
60
|
+
- lib/mui/handler_result.rb
|
|
61
|
+
- lib/mui/highlight.rb
|
|
62
|
+
- lib/mui/highlighters/base.rb
|
|
63
|
+
- lib/mui/highlighters/search_highlighter.rb
|
|
64
|
+
- lib/mui/highlighters/selection_highlighter.rb
|
|
65
|
+
- lib/mui/highlighters/syntax_highlighter.rb
|
|
66
|
+
- lib/mui/input.rb
|
|
67
|
+
- lib/mui/insert_completion_renderer.rb
|
|
68
|
+
- lib/mui/insert_completion_state.rb
|
|
69
|
+
- lib/mui/job.rb
|
|
70
|
+
- lib/mui/job_manager.rb
|
|
71
|
+
- lib/mui/key_code.rb
|
|
72
|
+
- lib/mui/key_handler.rb
|
|
73
|
+
- lib/mui/key_handler/base.rb
|
|
74
|
+
- lib/mui/key_handler/command_mode.rb
|
|
75
|
+
- lib/mui/key_handler/insert_mode.rb
|
|
76
|
+
- lib/mui/key_handler/motions/motion_handler.rb
|
|
77
|
+
- lib/mui/key_handler/normal_mode.rb
|
|
78
|
+
- lib/mui/key_handler/operators/base_operator.rb
|
|
79
|
+
- lib/mui/key_handler/operators/change_operator.rb
|
|
80
|
+
- lib/mui/key_handler/operators/delete_operator.rb
|
|
81
|
+
- lib/mui/key_handler/operators/paste_operator.rb
|
|
82
|
+
- lib/mui/key_handler/operators/yank_operator.rb
|
|
83
|
+
- lib/mui/key_handler/search_mode.rb
|
|
84
|
+
- lib/mui/key_handler/visual_line_mode.rb
|
|
85
|
+
- lib/mui/key_handler/visual_mode.rb
|
|
86
|
+
- lib/mui/key_handler/window_command.rb
|
|
87
|
+
- lib/mui/layout/calculator.rb
|
|
88
|
+
- lib/mui/layout/leaf_node.rb
|
|
89
|
+
- lib/mui/layout/node.rb
|
|
90
|
+
- lib/mui/layout/split_node.rb
|
|
91
|
+
- lib/mui/line_renderer.rb
|
|
92
|
+
- lib/mui/mode.rb
|
|
93
|
+
- lib/mui/mode_manager.rb
|
|
94
|
+
- lib/mui/motion.rb
|
|
95
|
+
- lib/mui/plugin.rb
|
|
96
|
+
- lib/mui/plugin_manager.rb
|
|
97
|
+
- lib/mui/register.rb
|
|
98
|
+
- lib/mui/screen.rb
|
|
99
|
+
- lib/mui/search_completer.rb
|
|
100
|
+
- lib/mui/search_input.rb
|
|
101
|
+
- lib/mui/search_state.rb
|
|
102
|
+
- lib/mui/selection.rb
|
|
103
|
+
- lib/mui/status_line_renderer.rb
|
|
104
|
+
- lib/mui/syntax/language_detector.rb
|
|
105
|
+
- lib/mui/syntax/lexer_base.rb
|
|
106
|
+
- lib/mui/syntax/lexers/c_lexer.rb
|
|
107
|
+
- lib/mui/syntax/lexers/ruby_lexer.rb
|
|
108
|
+
- lib/mui/syntax/token.rb
|
|
109
|
+
- lib/mui/syntax/token_cache.rb
|
|
110
|
+
- lib/mui/tab_bar_renderer.rb
|
|
111
|
+
- lib/mui/tab_manager.rb
|
|
112
|
+
- lib/mui/tab_page.rb
|
|
113
|
+
- lib/mui/terminal_adapter.rb
|
|
114
|
+
- lib/mui/terminal_adapter/base.rb
|
|
115
|
+
- lib/mui/terminal_adapter/curses.rb
|
|
116
|
+
- lib/mui/themes/default.rb
|
|
117
|
+
- lib/mui/undo_manager.rb
|
|
118
|
+
- lib/mui/undoable_action.rb
|
|
119
|
+
- lib/mui/unicode_width.rb
|
|
28
120
|
- lib/mui/version.rb
|
|
121
|
+
- lib/mui/window.rb
|
|
122
|
+
- lib/mui/window_manager.rb
|
|
29
123
|
- sig/mui.rbs
|
|
30
124
|
homepage: https://github.com/S-H-GAMELINKS/mui
|
|
31
125
|
licenses:
|
|
@@ -35,6 +129,7 @@ metadata:
|
|
|
35
129
|
homepage_uri: https://github.com/S-H-GAMELINKS/mui
|
|
36
130
|
source_code_uri: https://github.com/S-H-GAMELINKS/mui
|
|
37
131
|
changelog_uri: https://github.com/S-H-GAMELINKS/mui/blob/main/CHANGELOG.md
|
|
132
|
+
rubygems_mfa_required: 'true'
|
|
38
133
|
rdoc_options: []
|
|
39
134
|
require_paths:
|
|
40
135
|
- lib
|
|
@@ -49,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
49
144
|
- !ruby/object:Gem::Version
|
|
50
145
|
version: '0'
|
|
51
146
|
requirements: []
|
|
52
|
-
rubygems_version:
|
|
147
|
+
rubygems_version: 3.6.9
|
|
53
148
|
specification_version: 4
|
|
54
149
|
summary: Mui - A Vim-like TUI editor written in Ruby
|
|
55
150
|
test_files: []
|