Emacs: есть ли способ передать переменную или строку в команду M-x? - PullRequest
2 голосов
/ 11 февраля 2010

У меня есть команда go-to-url, которую я вызываю в своем коде lisp, который открывает веб-страницу, я просто передаю ей строку значения следующим образом:

(go-to-url "www.yahoo.com")

Однако было бы неплохо использовать эту функцию из командной строки M-x. Есть способ сделать это? Ничто из того, что я пробовал, не работает

Ответы [ 3 ]

11 голосов
/ 11 февраля 2010

вы бы использовали интерактивную форму:

(defun go-to-url (url)
  (interactive "sURL: ")
  (do-your-stuff url))

Таким образом, вы можете использовать go-to-url как в lisp, так и с M-x: go-to-url, и вам будет предложено ввести аргумент.

См. Также мой ответ на ваш другой вопрос: Emacs: есть ли способ создать интерактивный скрипт с использованием Emacs?

1 голос
/ 11 февраля 2010

Есть функция, которая делает это уже `browse-url ', которая предложит вам просмотреть URL-адрес в точке или вы можете отредактировать / создать его.

Для функций, которые принимают числовые аргументы, вы также можете использовать Cu, затем ввести значение, которое вы хотите передать команде, которую вы выполняете.

0 голосов
/ 22 августа 2011

В Сосульки , при любом использовании минибуфера (с завершением или без) вы можете нажать клавишу, чтобы вставить строку, которая была сохранена в переменной или регистре .

  • Для регистрации нажмите C-xr i (как обычно).
  • Для строки нажмите C - = .

По умолчанию используется переменная icicle-input-string, но если вы используете префикс arg (т. Е. C-u C - = ), вам будет предложено использовать эту переменную. Кандидаты на завершение включают все строковые переменные.

Вы можете сохранить строку (например, сложное регулярное выражение) в переменную с помощью команды icicle-save-string-to-variable. Опять же, по умолчанию переменная icicle-input-string, но с префиксом arg вам предлагается ввести переменную.

Вы также можете в любой момент вставить строку в минибуфер, нажав M -: и напечатав Lisp sexp для оценки. Результат довольно распечатан и вставлен в минибуфер. (В «Сосульках» M -: открывает рекурсивный минибуфер, и он красиво печатает.)

...