Mercurial > vim
view runtime/ftplugin/awk.vim @ 33203:c3c347a71e05
runtime: don't execute external commands when loading ftplugins
Commit: https://github.com/vim/vim/commit/f7ac0ef5098856bedca26e7073594a407c05636f
Author: Christian Brabandt <cb@256bit.org>
Date: Wed Sep 6 20:41:25 2023 +0200
runtime: don't execute external commands when loading ftplugins
This is a followup to 816fbcc262687b81fc46f82f7bbeb1453addfe0c (patch
9.0.1833: [security] runtime file fixes)
It basically disables that external commands are run on loading of the
filetype plugin, **unless** the user has set the `g:plugin_exec = 1`
global variable in their configuration or for a specific filetype the
variable g:<filetype>_exec=1.
There are a few more plugins, that may execute system commands like
debchangelog, gitcommit, sh, racket, zsh, ps1 but those do at least
do not run those commands by default during loading of the filetype plugin
(there the command is mostly run as convenience for auto-completion or
to provide documentation lookup).
closes: #13034
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Tim Pope <vim@tpope.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 06 Sep 2023 20:45:03 +0200 |
parents | 8dad79c661d1 |
children | bd3ee5abdd7a |
line wrap: on
line source
" Vim filetype plugin " Language: awk, nawk, gawk, mawk " Maintainer: Doug Kearns <dougkearns@gmail.com> " Previous Maintainer: Antonio Colombo <azc100@gmail.com> " Last Change: 2020 Sep 28 " This plugin was prepared by Mark Sikora " This plugin was updated as proposed by Doug Kearns " Only do this when not done yet for this buffer if exists("b:did_ftplugin") finish endif " Don't load another plugin for this buffer let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim setlocal comments=:# setlocal commentstring=#\ %s setlocal formatoptions-=t formatoptions+=croql setlocal define=function setlocal suffixesadd+=.awk let b:undo_ftplugin = "setl fo< com< cms< def< sua<" . \ " | unlet! b:browsefilter" " TODO: set this in scripts.vim? if exists("g:awk_is_gawk") setlocal include=@include setlocal suffixesadd+=.gawk if has("unix") || has("win32unix") setlocal formatprg=gawk\ -f-\ -o/dev/stdout let b:undo_ftplugin .= " | setl fp<" endif " Disabled by default for security reasons. if get(g:, 'awk_exec', get(g:, 'plugin_exec', 0)) let path = system("gawk 'BEGIN { printf ENVIRON[\"AWKPATH\"] }'") let path = substitute(path, '^\.\=:\|:\.\=$\|:\.\=:', ',,', 'g') " POSIX cwd let path = substitute(path, ':', ',', 'g') let &l:path = path endif let b:undo_ftplugin .= " | setl inc< path<" endif if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter = "Awk Source Files (*.awk,*.gawk)\t*.awk;*.gawk\n" . \ "All Files (*.*)\t*.*\n" endif let &cpo = s:cpo_save unlet s:cpo_save " vim: nowrap sw=2 sts=2 ts=8