LINUX.ORG.RU

emacs автоматизация задач

 


0

2

Приветствую участников форума! Есть некоторый скрипт на python'e, хочется узнать каким образом можно вызвать этот скрипт с параметрами из emacs и затем получить эти данные? Интересует именно к какому виду привести выводные данные в скрипте чтобы потом манипулировать ими в контексте редактора? Раньше для этих целей использовал scite+lua, но сейчас потихонечку осваиваю этот замечательный редактор.



Последнее исправление: cetjs2 (всего исправлений: 1)

start-process с временным буфером.

start-process is a built-in function in `C source code'.

(start-process NAME BUFFER PROGRAM &rest PROGRAM-ARGS)

Start a program in a subprocess.  Return the process object for it.
NAME is name for process.  It is modified if necessary to make it unique.
BUFFER is the buffer (or buffer name) to associate with the process.

Process output (both standard output and standard error streams) goes
at end of BUFFER, unless you specify an output stream or filter
function to handle the output.  BUFFER may also be nil, meaning that
this process is not associated with any buffer.

PROGRAM is the program file name.  It is searched for in `exec-path'
(which see).  If nil, just associate a pty with the buffer.  Remaining
arguments are strings to give program as arguments.

If you want to separate standard output from standard error, invoke
the command through a shell and redirect one of them using the shell
syntax.

Extraterrestrial ★★★★★
()

Вобщем оказалось все просто чем я думал:
К примеру стороний скрипт выводит "(setq one '(1)) (setq two '(2))"
А здесь импорт из строки в память редактора:

(defun import-from-stream nil
  (call-process "cmd.exe" nil "script_output" nil "/C" "C:/test.py")
  (eval-buffer "script_output")
  (kill-buffer "script_output"))

domik_v_derevne
() автор топика
Ответ на: комментарий от psv1967

нам нужно больше лодок лисапедов! (С) :)

Лучше лисапед, чем гвозди.

anonymous
()

А вот при использовании без буфера:

(defun import-from-stream (string &optional index)
  (let* ((parse (read-from-string string index))
	(index (cdr parse))
	(value (car parse)))
    (eval value)
    (import-from-stream string index)))

(import-from-stream
 (shell-command-to-string "cmd.exe /C C:/test.py"))
Хотя наверное использование буферов намного удобнее нежели без них.
И еще один вопрос:
Каким образом вывести значение переменной независимо от типа, на вроде функции var_dump в php?
Есть функция describe-variable но это немного другое.

domik_v_derevne
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.