nvim_conf 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +63 -7
- data/lib/nvim_conf/commenter.rb +23 -0
- data/lib/nvim_conf/configuration_builder.rb +2 -2
- data/lib/nvim_conf/core.rb +37 -18
- data/lib/nvim_conf/generators/code/commands/lua.rb +37 -0
- data/lib/nvim_conf/generators/code/globals/lua.rb +47 -0
- data/lib/nvim_conf/generators/code/mappings/lua.rb +43 -11
- data/lib/nvim_conf/generators/code/plugins/packer.rb +4 -16
- data/lib/nvim_conf/generators/code/plugins/paq.rb +57 -0
- data/lib/nvim_conf/generators/code/requires/lua.rb +23 -0
- data/lib/nvim_conf/generators/code/settings/lua.rb +34 -12
- data/lib/nvim_conf/managers/commands.rb +38 -0
- data/lib/nvim_conf/{compiler_configurations/manager.rb → managers/compiler_configurations.rb} +4 -4
- data/lib/nvim_conf/managers/globals.rb +46 -0
- data/lib/nvim_conf/{mappings/manager.rb → managers/mappings.rb} +23 -8
- data/lib/nvim_conf/{plugins/manager.rb → managers/plugins.rb} +13 -6
- data/lib/nvim_conf/managers/requires.rb +34 -0
- data/lib/nvim_conf/{settings/manager.rb → managers/settings.rb} +22 -6
- data/lib/nvim_conf/models/command.rb +15 -0
- data/lib/nvim_conf/{compiler_configurations → models}/compiler_configuration.rb +1 -1
- data/lib/nvim_conf/models/global.rb +12 -0
- data/lib/nvim_conf/{mappings → models}/mapping.rb +2 -1
- data/lib/nvim_conf/{plugins → models}/plugin.rb +6 -1
- data/lib/nvim_conf/models/require.rb +11 -0
- data/lib/nvim_conf/{settings → models}/setting.rb +1 -1
- data/lib/nvim_conf/utils/io_operator.rb +21 -0
- data/lib/nvim_conf/utils/markdown_formatter.rb +35 -0
- data/lib/nvim_conf/version.rb +1 -1
- data/lib/nvim_conf/writer.rb +1 -1
- data/lib/nvim_conf/writers/code/commands.rb +36 -0
- data/lib/nvim_conf/writers/code/globals.rb +36 -0
- data/lib/nvim_conf/writers/code/mappings.rb +0 -1
- data/lib/nvim_conf/writers/code/orchestrator.rb +31 -6
- data/lib/nvim_conf/writers/code/plugins/configuration.rb +25 -0
- data/lib/nvim_conf/writers/code/plugins/handler.rb +25 -0
- data/lib/nvim_conf/writers/code/plugins/packer.rb +94 -0
- data/lib/nvim_conf/writers/code/plugins/paq.rb +49 -0
- data/lib/nvim_conf/writers/code/requires.rb +36 -0
- data/lib/nvim_conf/writers/documentation/globals.rb +45 -0
- data/lib/nvim_conf/writers/documentation/mappings.rb +5 -18
- data/lib/nvim_conf/writers/documentation/orchestrator.rb +26 -7
- data/lib/nvim_conf/writers/documentation/plugins.rb +54 -0
- data/lib/nvim_conf/writers/documentation/settings.rb +11 -18
- data/lib/nvim_conf.rb +11 -6
- metadata +32 -13
- data/lib/nvim_conf/generators/generator.rb +0 -6
- data/lib/nvim_conf/manager.rb +0 -6
- data/lib/nvim_conf/writers/code/plugins.rb +0 -86
@@ -0,0 +1,46 @@
|
|
1
|
+
require "nvim_conf/models/global"
|
2
|
+
|
3
|
+
module NvimConf
|
4
|
+
module Managers
|
5
|
+
class Globals
|
6
|
+
attr_reader :globals
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@globals = []
|
10
|
+
end
|
11
|
+
|
12
|
+
def set(name, value = true)
|
13
|
+
store_global(
|
14
|
+
name,
|
15
|
+
value
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def section_name
|
21
|
+
"Globals"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def store?
|
26
|
+
@globals.any?
|
27
|
+
end
|
28
|
+
|
29
|
+
def unset(name)
|
30
|
+
store_global(
|
31
|
+
name,
|
32
|
+
false
|
33
|
+
)
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def store_global(name, value)
|
39
|
+
@globals << Models::Global.new(
|
40
|
+
name,
|
41
|
+
value
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -1,9 +1,10 @@
|
|
1
|
-
require "nvim_conf/
|
1
|
+
require "nvim_conf/models/mapping"
|
2
|
+
|
2
3
|
# TODO: Refactor error messages
|
3
4
|
module NvimConf
|
4
|
-
module
|
5
|
-
class
|
6
|
-
AVAILABLE_METHODS = %w[map map! nmap vmap imap cmap smap xmap omap lmap]
|
5
|
+
module Managers
|
6
|
+
class Mappings
|
7
|
+
AVAILABLE_METHODS = %w[map map! nmap vmap imap cmap smap xmap omap lmap tmap]
|
7
8
|
attr_reader :mappings
|
8
9
|
|
9
10
|
def initialize(namespace)
|
@@ -13,6 +14,12 @@ module NvimConf
|
|
13
14
|
validate!
|
14
15
|
end
|
15
16
|
|
17
|
+
class << self
|
18
|
+
def section_name
|
19
|
+
"Mappings"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
def validate!
|
17
24
|
return if @namespace.nil? || @namespace.empty?
|
18
25
|
|
@@ -31,6 +38,14 @@ module NvimConf
|
|
31
38
|
end
|
32
39
|
end
|
33
40
|
|
41
|
+
AVAILABLE_METHODS.each do |operator|
|
42
|
+
define_method("r#{operator}") do |binding|
|
43
|
+
store_mapping(
|
44
|
+
operator, binding, nil, remove: true
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
34
49
|
def new(binding, action)
|
35
50
|
raise "No namespace was given for <mappings>" unless @namespace
|
36
51
|
raise "No namespace was given for <mappings>" if @namespace.empty?
|
@@ -44,14 +59,14 @@ module NvimConf
|
|
44
59
|
|
45
60
|
private
|
46
61
|
|
47
|
-
def store_mapping(operator, binding, action)
|
62
|
+
def store_mapping(operator, binding, action, **params)
|
48
63
|
@mappings << build_mapping(
|
49
|
-
operator, binding, action
|
64
|
+
operator, binding, action, params
|
50
65
|
)
|
51
66
|
end
|
52
67
|
|
53
|
-
def build_mapping(operator, binding, action)
|
54
|
-
Mapping.new(operator, binding, action)
|
68
|
+
def build_mapping(operator, binding, action, params)
|
69
|
+
Models::Mapping.new(operator, binding, action, **params)
|
55
70
|
end
|
56
71
|
end
|
57
72
|
end
|
@@ -1,16 +1,23 @@
|
|
1
|
-
require "nvim_conf/
|
1
|
+
require "nvim_conf/models/plugin"
|
2
2
|
|
3
3
|
module NvimConf
|
4
|
-
module
|
5
|
-
class
|
6
|
-
attr_reader :plugins, :name, :bootstraped
|
4
|
+
module Managers
|
5
|
+
class Plugins
|
6
|
+
attr_reader :plugins, :name, :title, :bootstraped
|
7
7
|
|
8
|
-
def initialize(name, bootstraped: false)
|
8
|
+
def initialize(name, title, bootstraped: false)
|
9
9
|
@name = name
|
10
|
+
@title = title
|
10
11
|
@bootstraped = bootstraped
|
11
12
|
@plugins = []
|
12
13
|
end
|
13
14
|
|
15
|
+
class << self
|
16
|
+
def section_name
|
17
|
+
"Plugins"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
14
21
|
def store?
|
15
22
|
@plugins.any?
|
16
23
|
end
|
@@ -31,7 +38,7 @@ module NvimConf
|
|
31
38
|
end
|
32
39
|
|
33
40
|
def build_plugin(name, params)
|
34
|
-
Plugin.new(
|
41
|
+
Models::Plugin.new(
|
35
42
|
name,
|
36
43
|
**params
|
37
44
|
)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "nvim_conf/models/require"
|
2
|
+
|
3
|
+
# TODO: Refactor error messages
|
4
|
+
module NvimConf
|
5
|
+
module Managers
|
6
|
+
class Requires
|
7
|
+
attr_reader :requires
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@requires = []
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def section_name
|
15
|
+
"Requires"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def setup(file)
|
20
|
+
store_require(file)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def store?
|
26
|
+
@requires.any?
|
27
|
+
end
|
28
|
+
|
29
|
+
def store_require(file)
|
30
|
+
@requires << Models::Require.new(file)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,11 +1,12 @@
|
|
1
|
-
require "nvim_conf/
|
1
|
+
require "nvim_conf/models/setting"
|
2
2
|
|
3
3
|
module NvimConf
|
4
|
-
module
|
5
|
-
class
|
6
|
-
attr_reader :settings
|
4
|
+
module Managers
|
5
|
+
class Settings
|
6
|
+
attr_reader :settings, :title
|
7
7
|
|
8
|
-
def initialize
|
8
|
+
def initialize(title)
|
9
|
+
@title = title
|
9
10
|
@settings = []
|
10
11
|
end
|
11
12
|
|
@@ -13,6 +14,12 @@ module NvimConf
|
|
13
14
|
@settings.any?
|
14
15
|
end
|
15
16
|
|
17
|
+
class << self
|
18
|
+
def section_name
|
19
|
+
"Settings"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
def set(key, value = nil, **params)
|
17
24
|
store_setting(
|
18
25
|
:set,
|
@@ -29,6 +36,15 @@ module NvimConf
|
|
29
36
|
)
|
30
37
|
end
|
31
38
|
|
39
|
+
def add(key, value, **params)
|
40
|
+
store_setting(
|
41
|
+
:add,
|
42
|
+
key: key,
|
43
|
+
value: value,
|
44
|
+
**params
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
32
48
|
private
|
33
49
|
|
34
50
|
def store_setting(operation, key:, value: nil, scope: :global)
|
@@ -36,7 +52,7 @@ module NvimConf
|
|
36
52
|
end
|
37
53
|
|
38
54
|
def build_setting(operation, key, value, scope)
|
39
|
-
Setting.new(operation, key, value, scope)
|
55
|
+
Models::Setting.new(operation, key, value, scope)
|
40
56
|
end
|
41
57
|
end
|
42
58
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require "dry-initializer"
|
2
2
|
|
3
3
|
module NvimConf
|
4
|
-
module
|
4
|
+
module Models
|
5
5
|
class Plugin
|
6
6
|
extend Dry::Initializer
|
7
7
|
|
@@ -14,6 +14,11 @@ module NvimConf
|
|
14
14
|
option :file_types, optional: true
|
15
15
|
option :cmd, optional: true
|
16
16
|
option :run, optional: true
|
17
|
+
option :requires, optional: true
|
18
|
+
|
19
|
+
def self.optional_arguments
|
20
|
+
%i[as opt file_types branch run cmd requires]
|
21
|
+
end
|
17
22
|
end
|
18
23
|
end
|
19
24
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
|
3
|
+
module NvimConf
|
4
|
+
module Utils
|
5
|
+
class IoOperator
|
6
|
+
extend Forwardable
|
7
|
+
|
8
|
+
def_delegators :@io, :write
|
9
|
+
|
10
|
+
def initialize(io)
|
11
|
+
@io = io
|
12
|
+
end
|
13
|
+
|
14
|
+
def write_separator
|
15
|
+
@io.write(
|
16
|
+
Utils::MarkdownFormatter.separator
|
17
|
+
)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module NvimConf
|
2
|
+
module Utils
|
3
|
+
class MarkdownFormatter
|
4
|
+
class << self
|
5
|
+
def collapisible(summary, content)
|
6
|
+
<<~FORMAT
|
7
|
+
<details>
|
8
|
+
<summary>
|
9
|
+
#{summary}
|
10
|
+
</summary>
|
11
|
+
|
12
|
+
#{content}
|
13
|
+
</details>
|
14
|
+
FORMAT
|
15
|
+
end
|
16
|
+
|
17
|
+
def separator(count: 2)
|
18
|
+
"\n" * count
|
19
|
+
end
|
20
|
+
|
21
|
+
def format_title(title, level: 0, indent: 0)
|
22
|
+
prefix = [
|
23
|
+
indent.positive? ? " " * indent : nil,
|
24
|
+
level != 0 ? "#" * level : nil
|
25
|
+
].compact.join
|
26
|
+
|
27
|
+
[
|
28
|
+
prefix,
|
29
|
+
"#{title}\n\n"
|
30
|
+
].compact.join(" ")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/nvim_conf/version.rb
CHANGED
data/lib/nvim_conf/writer.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require "nvim_conf/generators/code/commands/lua"
|
2
|
+
|
3
|
+
module NvimConf
|
4
|
+
module Writers
|
5
|
+
module Code
|
6
|
+
class CommandsWriter
|
7
|
+
COMMANDS_GENERATOR_MAPPING = {
|
8
|
+
lua: Generators::Commands::Code::Lua
|
9
|
+
}
|
10
|
+
|
11
|
+
def initialize(manager, io, format: :lua, commented: false)
|
12
|
+
@manager = manager
|
13
|
+
@io = io
|
14
|
+
@format = format
|
15
|
+
end
|
16
|
+
|
17
|
+
def write
|
18
|
+
@manager.commands.each do |command|
|
19
|
+
@io.write(
|
20
|
+
[
|
21
|
+
generator_class.new(command).generate,
|
22
|
+
"\n"
|
23
|
+
].join
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def generator_class
|
31
|
+
COMMANDS_GENERATOR_MAPPING[@format]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "nvim_conf/generators/code/globals/lua"
|
2
|
+
|
3
|
+
module NvimConf
|
4
|
+
module Writers
|
5
|
+
module Code
|
6
|
+
class GlobalsWriter
|
7
|
+
GLOBAL_GENERATOR_MAPPING = {
|
8
|
+
lua: Generators::Globals::Code::Lua
|
9
|
+
}
|
10
|
+
|
11
|
+
def initialize(manager, io, format: :lua, commented: false)
|
12
|
+
@manager = manager
|
13
|
+
@io = io
|
14
|
+
@format = format
|
15
|
+
end
|
16
|
+
|
17
|
+
def write
|
18
|
+
@manager.globals.each do |global|
|
19
|
+
@io.write(
|
20
|
+
[
|
21
|
+
generator_class.new(global).generate,
|
22
|
+
"\n"
|
23
|
+
].join
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def generator_class
|
31
|
+
GLOBAL_GENERATOR_MAPPING[@format]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -1,17 +1,23 @@
|
|
1
1
|
require "nvim_conf/writers/code/settings"
|
2
|
+
require "nvim_conf/writers/code/requires"
|
3
|
+
require "nvim_conf/writers/code/globals"
|
4
|
+
require "nvim_conf/writers/code/commands"
|
2
5
|
require "nvim_conf/writers/code/mappings"
|
3
|
-
require "nvim_conf/writers/code/plugins"
|
6
|
+
require "nvim_conf/writers/code/plugins/handler"
|
4
7
|
|
5
8
|
module NvimConf
|
6
9
|
module Writers
|
7
10
|
module Code
|
8
11
|
class Orchestrator
|
9
|
-
NON_WRITABLE_MANAGER = NvimConf::CompilerConfigurations
|
12
|
+
NON_WRITABLE_MANAGER = NvimConf::Managers::CompilerConfigurations
|
10
13
|
|
11
14
|
WRITER_CONFIGURATION = {
|
12
|
-
NvimConf::Settings
|
13
|
-
NvimConf::Mappings
|
14
|
-
NvimConf::Plugins
|
15
|
+
NvimConf::Managers::Settings => SettingsWriter,
|
16
|
+
NvimConf::Managers::Mappings => MappingsWriter,
|
17
|
+
NvimConf::Managers::Plugins => Code::Plugins::Handler,
|
18
|
+
NvimConf::Managers::Globals => GlobalsWriter,
|
19
|
+
NvimConf::Managers::Requires => RequiresWriter,
|
20
|
+
NvimConf::Managers::Commands => CommandsWriter
|
15
21
|
}
|
16
22
|
|
17
23
|
def initialize(managers, io, configuration = nil)
|
@@ -22,17 +28,36 @@ module NvimConf
|
|
22
28
|
|
23
29
|
def aggregate_writes
|
24
30
|
@managers.select { |manager| manager.class != NON_WRITABLE_MANAGER }.each_with_index do |manager, index|
|
25
|
-
|
31
|
+
@io.write(
|
32
|
+
NvimConf::Commenter.comment_block(
|
33
|
+
@configuration,
|
34
|
+
manager_section_name(manager),
|
35
|
+
spacer: index.positive?
|
36
|
+
)
|
37
|
+
)
|
38
|
+
|
39
|
+
if index.positive? || @configuration[:commented]
|
26
40
|
@io.write(
|
27
41
|
separator
|
28
42
|
)
|
29
43
|
end
|
44
|
+
|
30
45
|
aggregate_writes_for_manager(manager)
|
31
46
|
end
|
32
47
|
end
|
33
48
|
|
34
49
|
private
|
35
50
|
|
51
|
+
def manager_section_name(manager)
|
52
|
+
return manager.class.section_name unless manager.respond_to?(:title)
|
53
|
+
return manager.class.section_name if manager.title.nil?
|
54
|
+
|
55
|
+
[
|
56
|
+
manager.class.section_name,
|
57
|
+
manager.title
|
58
|
+
].join(" - ")
|
59
|
+
end
|
60
|
+
|
36
61
|
def separator
|
37
62
|
"\n\n"
|
38
63
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative "./packer"
|
2
|
+
require_relative "./paq"
|
3
|
+
|
4
|
+
module NvimConf
|
5
|
+
module Writers
|
6
|
+
module Code
|
7
|
+
module Plugins
|
8
|
+
class Configuration
|
9
|
+
PLUGIN_CONFIGURATION = {
|
10
|
+
packer: {
|
11
|
+
generator: NvimConf::Generators::Plugins::Code::Packer,
|
12
|
+
writer: NvimConf::Writers::Code::Plugins::Packer,
|
13
|
+
indent: 2
|
14
|
+
},
|
15
|
+
paq: {
|
16
|
+
generator: NvimConf::Generators::Plugins::Code::Paq,
|
17
|
+
writer: NvimConf::Writers::Code::Plugins::Paq,
|
18
|
+
indent: 2
|
19
|
+
}
|
20
|
+
}
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require_relative "./configuration"
|
2
|
+
|
3
|
+
module NvimConf
|
4
|
+
module Writers
|
5
|
+
module Code
|
6
|
+
module Plugins
|
7
|
+
class Handler
|
8
|
+
def initialize(manager, io, _params)
|
9
|
+
@manager = manager
|
10
|
+
@io = io
|
11
|
+
@configuration = Configuration::PLUGIN_CONFIGURATION[manager.name.to_sym]
|
12
|
+
end
|
13
|
+
|
14
|
+
def write
|
15
|
+
@configuration[:writer].new(
|
16
|
+
@manager,
|
17
|
+
@io,
|
18
|
+
@configuration
|
19
|
+
).write
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|