2011-04-22 8 views
19

Tengo un complemento que establece una variable global y la comprueba cada vez que se carga el complemento para evitar cargarse varias veces. Me gustaría permitir la recarga del complemento (permitir la recarga del complemento) sin alterar el plugin. El complemento simplemente verifica que su variable exista (es decir, exists('g:var_name')). ¿Existe alguna forma de desactivar dicha variable para que la verificación exists() devuelva falso?¿Cómo desactivo una variable en Vim?

p.s. No quiero modificar el plugin en sí porque utilizo pathogen with git submodules apuntando al repositorio del plugin.

Respuesta

1

Debería poder :unlet g:var_name.

El problema con esto es que si las funciones definidas en el complemento no están definidas con function!, entonces obtendrá muchos errores cuando el complemento se obtenga por segunda vez. El complemento también puede estar haciendo una configuración inicial que podría dañarse al ejecutarlo dos veces.

En general, si el autor del complemento ha agregado una trampa cargada, probablemente esté ahí por algún motivo.

+0

Es cierto que estoy pisando en aguas peligrosas al hacer esto. Específicamente, uso el complemento [Mark] (http://www.vim.org/scripts/script.php?script_id=1238) que parece ser destruido cada vez que cargo una sesión usando [sessionman.vim] (http://www.vim.org/scripts/script.php?script_id=2010). –

+1

En lugar de 'unlet g: loaded_mark' podrías' let g: force_reload_mark = 1' por la forma en que se construye su prueba. Parece que el complemento está escrito teniendo en cuenta el re-abastecimiento debido al hecho de que cualquier cambio en el esquema de colores mata a su complemento. Lo dice en el archivo Léame en la página del script. –

+0

Aquí hay dos adiciones: 1. Si define la función anónima ('function dict.fname') entonces en vez de usar' function! 'Debe simplemente vaciar' dict' (como 'let dict = {}'). 2. Si define la función normal, entonces para evitar errores al resourcing de recursos puede usar el comando 'delfunction'. Ambas acciones son usadas por 'LoadCommand reload ...' desde vimpluginloader y 'call frawor # Reload (...)' desde frawor (se requiere que use estos frameworks para poder recargar su plugin). – ZyX

Cuestiones relacionadas