Я пытаюсь создать функцию, которая принимает в качестве входных данных путь и возвращает вывод команды терминала ls
в виде строки.Я использую процесс и страж, так как в конечном итоге я захочу создать другие функции, выполнение которых займет некоторое время, и я хочу, чтобы они выполнялись асинхронно.
(defun ls-to-string (path)
(let (ls-proc
ls-output)
(progn (setq ls-proc (start-process "" "ls-buffer" "ls" path))
(set-process-sentinel ls-proc (lambda (p e)
(if (string= e "finished\n")
(progn (set-buffer "ls-buffer")
(setq ls-output (buffer-string))
(kill-buffer "ls-buffer")
(message ls-output))))) <---- (1)
ls-output))) <---- (2)
(ls-to-string "/home")
Я (временно) добавил (message ls-output)
только для того, чтобы показать, что ls-output содержит строку (1).Однако возвращаемое значение равно нулю (2).