Как это:
(defun figlet-region (&optional b e)
(interactive "r")
(shell-command-on-region
(or b (point-min))
(or e (point-max))
"/opt/local/bin/figlet" (current-buffer) t)
(comment-region (mark) (point)))
Но учтите, что b
и e
всегда будут установлены, когда эта команда запускается в интерактивном режиме.
Вы также можете сделать это:
(require 'cl)
(defun* figlet-region (&optional (b (point-min)) (e (point-max)))
# your original function body here
)
EDIT:
Итак, я предполагаю, что вы хотите иметь возможность запускать команду в интерактивном режиме, даже если регион не активен? Тогда, возможно, это будет работать для вас:
(defun figlet-region ()
(interactive)
(let ((b (if mark-active (min (point) (mark)) (point-min)))
(e (if mark-active (max (point) (mark)) (point-max))))
# ... rest of your original function body ...
))