Emacs: Как Вы храните последний параметр, предоставленный пользователем как значение по умолчанию?

 This will be used for mapping your response to the model JsonConvert.DeserializeObject<Unit>(response)

public class Unit
{
    public string UnitYear { get; set; }
    public string UnitModel { get; set; }
}

Make sure that the property names are the same names as your json object that you are passing through 
8
задан Kyle Burton 28 September 2008 в 15:58
поделиться

3 ответа

Вы видите как compile команда делает это. Поднимите текст справки для команды компиляции с C-h f compile, переместите курсор через название файла, который содержит функцию, затем хит RETURN. Это поднимет исходный файл для compile.

В основном существует динамическая / глобальная переменная compile-command это содержит последнюю команду компиляции. Emacs является однопользовательской, однопоточной системой, таким образом, нет действительно никакой потребности в намного больше. Также имейте в виду, что Elisp является очень старой школой Lisp, и переменные имеют динамичный (стек вызовов), не лексический, объем. В этом виде системы это естественно для:

(let ((compile-command "gcc -o foo foo.c frobnicate.c"))
     ...
     (compile)
     ...)

Разговор о compile управляйте, имейте Вас, пытался использовать его вместо Вашего собственного run-rake функция?

5
ответ дан 5 December 2019 в 13:02
поделиться
read-from-minibuffer

то, что Вы хотите использовать. Это имеет место для переменной истории.

Вот некоторый пример кода:

(defvar run-rake-history nil "History for run-rake")
(defun run-rake (cmd)
(interactive (list (read-from-minibuffer "Task: " (car run-rake-history) nil nil 'run-rake-history)))
  (shell-command (format "rake %s " cmd)))

Очевидно, настройте к своим потребностям. 'История граблей выполнения является просто переменной, которая используется для хранения истории для этого вызова 'read-from-minibuffer. Другая опция состояла бы в том, чтобы использовать 'считанный из завершения - но это предполагает, что у Вас есть список выбора, Вы хотите ограничить пользователя использованием (который обычно не имеет место для подобных оболочке команд).

8
ответ дан 5 December 2019 в 13:02
поделиться

Я выяснил, как сделать это вручную использование (глобального) defvar, но это чувствует себя подобно виду вещи, которая должна уже быть обеспечена оперативной библиотекой (отчасти как делать-параметр схемы). Это просто походит на большее количество кода и больше руководства, чем это должно быть:

(defvar *editconf-ruby-run-rake-last-rake-task* nil)

(defun editconf-ruby-run-rake-last-rake-task (&optional new-val)
  (when new-val
    (setf *editconf-ruby-run-rake-last-rake-task* new-val))
  *editconf-ruby-run-rake-last-rake-task*)

(defun editconf-ruby-run-rake (task-name)
  "Execute rake `task-name'.  See                                                                                            
`krb-ruby-get-rakefile-path-for-current-buffer' for how the                                                                  
Rakefile is located.."
  (interactive
   (let* ((rakefile (krb-ruby-get-rakefile-path-for-current-buffer))
          (rake-tasks (krb-ruby-get-rake-tasks rakefile))
          (default-task (or (editconf-ruby-run-rake-last-rake-task)
                            (editconf-ruby-run-rake-last-rake-task (car rake-tasks)))))
     (list
      (read-string (format "Task [%s|%s]: "
                           rake-tasks
                           default-task)
                   nil nil default-task))))
  (editconf-ruby-run-rake-last-rake-task task-name)
  (let ((cmd (format "cd %s; rake %s"
                     (krb-lisp-strip-path-suffix rakefile 1)
                     task-name)))
    (message "editconf-ruby-run-rake: cmd='%s'" cmd)
    (shell-command cmd)))
0
ответ дан 5 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: