Использование файла плагина типа файла (ftplugin) для изменения типа файла в vim / neovim

Вот мое решение, я использовал Thread и Event:

import subprocess
from threading import Thread, Event

def kill_on_timeout(done, timeout, proc):
    if not done.wait(timeout):
        proc.kill()

def exec_command(command, timeout):

    done = Event()
    proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

    watcher = Thread(target=kill_on_timeout, args=(done, timeout, proc))
    watcher.daemon = True
    watcher.start()

    data, stderr = proc.communicate()
    done.set()

    return data, stderr, proc.returncode

В действии:

In [2]: exec_command(['sleep', '10'], 5)
Out[2]: ('', '', -9)

In [3]: exec_command(['sleep', '10'], 11)
Out[3]: ('', '', 0)
1
задан tkolleh 15 January 2019 в 23:55
поделиться

2 ответа

Это дует в тот же звуковой сигнал, что и ответ @ PeterRincker, но я думаю, что вы должны следовать :help new-filetype-scripts как описанию (, если ваш тип файла может быть обнаружен только путем проверки содержимого файл ) идеально соответствует вашему варианту использования.

С этим вы помещаете следующее содержание в ~/.vim/scripts.vim:

if did_filetype()   " filetype already set..
    finish      " ..don't do these checks
endif
if getline(1) =~ '^title:'
    setfiletype markdown
endif
0
ответ дан Ingo Karkat 15 January 2019 в 23:55
поделиться

Согласно :h new-filetype части B вы можете сделать что-то вроде следующего:

augroup txt_to_markdown
    autocmd!
    autocmd BufRead * if &filetype == 'text && getline(1) =~ '^title:' | set filetype=markdown | endif
augroup END
0
ответ дан Peter Rincker 15 January 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: