nvim_conf 0.1.0 → 0.1.1
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/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
|