оцените каждую строку в чистом буфере и добавьте результат в строку - PullRequest
2 голосов
/ 31 марта 2012

У меня есть этот фрагмент кода:

(define-key lisp-interaction-mode-map (kbd "C-c C-e")
  (lambda ()
    (let ((result (eval (read (buffer-substring 
                               (point-at-bol) (point-at-eol)))))
          (goto-char (point-at-eol))))
    (insert (format " ; => %s" result))))

но это не работает, как в

Wrong type argument: commandp, (lambda nil (let ((result (eval (read (buffer-substring (point-at-bol) (point-at-eol))))) (goto-char (point-at-eol)))) (insert (format " ; => %s" result)))

Ответы [ 2 ]

4 голосов
/ 31 марта 2012

Эта команда не должна работать отдельно для каждой строки.Вместо этого переместите точку по полу.

Здесь - библиотека, которую я создал, которая в основном делает это, но работает с многострочными результатами и реентерабельна.Таким образом, вы можете изменить некоторые вещи и повторно запустить команду для обновления результатов.

РЕДАКТИРОВАТЬ: исправить ссылку на упомянутый пакет.

1 голос
/ 31 марта 2012

Решено.

(define-key lisp-interaction-mode-map (kbd "C-c C-e") 
  (lambda () 
    (interactive)
    (let ((result (eval (read (buffer-substring 
                               (point-at-bol) (point-at-eol)))))) 
      (goto-char (point-at-eol)) 
      (insert (format " ; ⇒ %s" result)))))
...