Я ищу решение для применения форматирования кода и анализа статического кода для содержимого текущего буфера в режиме C++. Я планирую использовать AStyle
и CppCheck
. Оба инструмента необходимо выполнить в текущем коде. Например, если я редактирую foo.cpp
функция должна работатьЗапуск AStyle в текущем буфере, сохранение и восстановление положения курсора
astyle --arg1 --argn foo.cpp
И
cppcheck --arg1 --arg2 foo.cpp
То, что я уже пытался это простая функция от here, которая не работает:
(defun astyle-this-buffer (pmin pmax)
(interactive "r")
(shell-command-on-region pmin pmax
"astyle" ;; add options here...
(current-buffer) t
(get-buffer-create "*Astyle Errors*") t))
Обновление:
я обнаружил, что приведенный выше код совместим с Emacs23 в то время как я использую 24. Таким образом, я использовал вместо этого:
(defun reformat-code()
(interactive)
(shell-command-on-region (point-min) (point-max)
"astyle --options=~/.astylerc" t t))
(global-set-key (kbd "C-x C-a") 'reformat-code)
Теперь он работает и форматирует код, хотя я не могу узнать, как сэкономить курсора и скажите emacs, чтобы переместить эту линию.
Можете ли вы уточнить, как функция не работает? Что он делает? –