Значит что мне необходимо: 1. Отправить на выполнение текущий буфер(перед этим сохранить его) 2. Поиск .env. Если .env нет в текущей директории и выше, вплоть до ~, то использовать системный python, иначе - использовать .env/bin/python. 3. Прерывание процесса исполнения
Частично решил: 1.
(setq compilation-ask-about-save nil) ; don't ask save y/n before compile
;; PYTHON
(defun my-compile ()
"Use compile to run python programs"
(interactive)
(compile (concat "python " (buffer-name))))
(setq compilation-scroll-output t)
(global-set-key (kbd "C-x r") (lambda () (interactive) (setq current-prefix-arg '(4)) (call-interactively 'my-compile)))
По C-x r происходит выполнение скрипта.
2. Есть на вим функция, честно говоря не знаю как ее переписать
function LoadVirtualEnv(path)
let activate_this = a:path . '/bin/activate_this.py'
if getftype(a:path) == "dir" && filereadable(activate_this)
python << EOF
import vim
activate_this = vim.eval('l:activate_this')
execfile(activate_this, dict(__file__=activate_this))
EOF
endif
endfunction
function CheckVirtualEnv(env)
let s:old_path=expand('%:p:h')
while !isdirectory(a:env) && getcwd () != "/"
cd ..
endwhile
cd .
call LoadVirtualEnv(getcwd() . "/" . a:env)
execute 'cd' fnameescape(s:old_path)
" set keywordprg=pydocX.Y
let res=split(system('python --version'))[1][:-3]
execute('set keywordprg='.'pydoc'.res)
endfunction
3. Я делаю так: ibuffer, выбираю compilation, потом C-x k. Но чувствую, что я делаю неправильно