Code Duplication    Length = 32-34 lines in 2 locations

neovim/plugin/decorators.py 2 locations

@@ 130-163 (lines=34) @@
127
    return dec
128
129
130
def function(name=None, range=False, sync=False,
131
             allow_nested=False, eval=None):
132
    """Tag a function or plugin method as a Nvim function handler."""
133
    def dec(f):
134
        if not name:
135
            function_name = capitalize_name(f.__name__)
136
        else:
137
            function_name = name
138
        f._nvim_rpc_method_name = 'function:{}'.format(function_name)
139
        f._nvim_rpc_sync = sync
140
        f._nvim_bind = True
141
        f._nvim_prefix_plugin_path = True
142
143
        opts = {}
144
145
        if range:
146
            opts['range'] = '' if range is True else str(range)
147
148
        if eval:
149
            opts['eval'] = eval
150
151
        if not sync and allow_nested:
152
            rpc_sync = "urgent"
153
        else:
154
            rpc_sync = sync
155
156
        f._nvim_rpc_spec = {
157
            'type': 'function',
158
            'name': function_name,
159
            'sync': rpc_sync,
160
            'opts': opts
161
        }
162
        return f
163
    return dec
164
165
166
def capitalize_name(name):
@@ 96-127 (lines=32) @@
93
    return dec
94
95
96
def autocmd(name=None, pattern='*', sync=False, allow_nested=False, eval=None):
97
    """Tag a function or plugin method as a Nvim autocommand handler."""
98
    def dec(f):
99
        if not name:
100
            autocmd_name = capitalize_name(f.__name__)
101
        else:
102
            autocmd_name = name
103
        f._nvim_rpc_method_name = 'autocmd:{}:{}'.format(autocmd_name, pattern)
104
        f._nvim_rpc_sync = sync
105
        f._nvim_bind = True
106
        f._nvim_prefix_plugin_path = True
107
108
        opts = {
109
            'pattern': pattern
110
        }
111
112
        if eval:
113
            opts['eval'] = eval
114
115
        if not sync and allow_nested:
116
            rpc_sync = "urgent"
117
        else:
118
            rpc_sync = sync
119
120
        f._nvim_rpc_spec = {
121
            'type': 'autocmd',
122
            'name': autocmd_name,
123
            'sync': rpc_sync,
124
            'opts': opts
125
        }
126
        return f
127
    return dec
128
129
130
def function(name=None, range=False, sync=False,