Code Duplication    Length = 24-26 lines in 2 locations

neovim/plugin/decorators.py 2 locations

@@ 86-111 (lines=26) @@
83
    return dec
84
85
86
def autocmd(name, group=None, pattern='*', sync=False, eval=None):
87
    """Tag a function or plugin method as a Nvim autocommand handler."""
88
    def dec(f):
89
        f._nvim_rpc_method_name = 'autocmd:{0}:{1}'.format(name, pattern)
90
        f._nvim_rpc_sync = sync
91
        f._nvim_bind = True
92
        f._nvim_prefix_plugin_path = True
93
94
        opts = {
95
            'pattern': pattern
96
        }
97
98
        if eval:
99
            opts['eval'] = eval
100
101
        if group:
102
            opts['group'] = group
103
104
        f._nvim_rpc_spec = {
105
            'type': 'autocmd',
106
            'name': name,
107
            'sync': sync,
108
            'opts': opts
109
        }
110
        return f
111
    return dec
112
113
114
def function(name, range=False, sync=False, eval=None):
@@ 114-137 (lines=24) @@
111
    return dec
112
113
114
def function(name, range=False, sync=False, eval=None):
115
    """Tag a function or plugin method as a Nvim function handler."""
116
    def dec(f):
117
        f._nvim_rpc_method_name = 'function:{0}'.format(name)
118
        f._nvim_rpc_sync = sync
119
        f._nvim_bind = True
120
        f._nvim_prefix_plugin_path = True
121
122
        opts = {}
123
124
        if range:
125
            opts['range'] = '' if range is True else str(range)
126
127
        if eval:
128
            opts['eval'] = eval
129
130
        f._nvim_rpc_spec = {
131
            'type': 'function',
132
            'name': name,
133
            'sync': sync,
134
            'opts': opts
135
        }
136
        return f
137
    return dec
138
139
140
def shutdown_hook(f):