Я пытаюсь написать функцию LISP emacs, чтобы отступать область (жестко). Я могу передать префиксные аргументы indent-code-rigidly
или или отступом, и все они работают нормально, но я не хочу всегда передавать отрицательный префиксный аргумент, чтобы сдвинуть вещи влево.indent- [code-] жестко вызван из emacs Функция LISP
Мой текущий код, как показано ниже, но, кажется, ничего не делать:
(defun undent()
"un-indent rigidly."
(interactive)
(list
(setq fline (line-number-at-pos (region-beginning)))
(setq lline (line-number-at-pos (region-end)))
(setq curIndent (current-indentation))
;;(indent-rigidly fline lline (- curIndent 1))
(indent-region fline lline 2)
;;(message "%d %d" curIndent (- curIndent 1))
)
)
я понимаю, что (current-indentation)
не получит мне отступ первой строки региона, но первой линии после региона (так что второй quesiton как это получить!). Но даже когда я просто использовать константу для столбца (как показано на рисунке, я не вижу эту функцию делать какие-либо изменения. Хотя, если я раскомментировать (message)
вызов, он отображает разумные числа.
GNU Emacs 24.3.1 на Ubuntu. и в случае, если это имеет значение, я использую (setq-default indent-tabs-mode nil)
и (cua-mode)
.
Я должен что-то очевидное отсутствует? ...
Ах! Спасибо, теперь я понял. Я начал искать способ «перехватить» префикс arg и отрицать его, но не смог его найти и оказался бесполезно сложным. Большое спасибо! – TextGeek