Как я могу применить новый Emacs C стиль для переформатирования всех моих исходных файлов?

Этот подход (MyContext.Database.Migrate();) не для всех. Хотя это отлично подходит для приложений с локальной базой данных , большинству приложений потребуется более надежная стратегия развертывания, например, создание сценариев SQL.

blockquote>

При развертывании в Azure вы можете добавить следующий код в метод Configure в Startup.cs

using (var scope = app.ApplicationServices.GetService().CreateScope())
{
    scope.ServiceProvider.GetRequiredService().Database.Migrate();
}

. Для более подробной информации вы можете обратиться к этому SO потоку .

7
задан Luke Girvin 4 September 2011 в 01:22
поделиться

4 ответа

Существует несколько частей к этому:

  • необходимо придумать функции EMACS, чтобы сделать все переформатирование, Вы хотите. indent-region запуск, но Вы могли бы также хотеть к untabify или некоторым другим вещам.
  • необходимо вызвать их на каждый файл, и начиная с работы функций отступа над диапазонами, Вам нужна функция, которая устанавливает метку для покрытия целого файла: mark-whole-buffer.
  • необходимо вызвать EMACS на каждый файл: это означает вызывать emacs с - пакетный файл.

Существует несколько хороших сообщений в блоге при выполнении этого здесь и здесь.

9
ответ дан 6 December 2019 в 15:31
поделиться

Я полагаю, что этот сценарий не делает переформатирования. Вместо этого это - пример того, как создать пользовательский "стиль", как описано в: руководство режима CC - Стили

В руководстве режима CC также говорится:

Если Вы хотите переформатировать старый код, Вы - вероятно, более обеспеченное использование некоторого другого инструмента вместо этого, например, отступа GNU, который имеет более мощные возможности переформатирования, чем Режим CC.

Руководство режима CC - Limitations-and-Known-Bugs

2
ответ дан 6 December 2019 в 15:31
поделиться

Я сделал это, прежде чем при помощи клавиатуры определил макрос. Я загрузил бы все файлы в emacs (что-то как find . -name "*.cpp" | xargs emacs) и затем введите следующие ключи. Я аннотировал каждое сочетание клавиш тем, что оно делает.

C-x-(                  'Begin recording macro
M-<                    'Go to start of file
C-space                'Mark current location (now start of file)
M->                    'Go to end of file
M-x indent-region      'Indent entire file according to coding style
C-x C-s                'Save the current buffer
C-x C-k                'Close the current buffer
C-x-)                  'End recording macro

Теперь можно выполнить это на буфере путем ввода C-x e. При загрузке нескольких файлов, можно выполнить что-то как C-u 100 C-x e выполнять это на 100 файлах. Если это будет больше, чем количество файлов, которое в порядке, то Вы просто получите некоторое "кольцо звонка" или другую ошибку, которую можно проигнорировать, после того как вся обработка завершена.

3
ответ дан 6 December 2019 в 15:31
поделиться

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

(defun clean-file(filename)
  (your-function-goes-here))

(defun clean-each-dired-marked-file() 
  (interactive)
  (for-each-dired-marked-file 'clean-file))

(defun for-each-dired-marked-file(fn)
 "Do stuff for each marked file, only works in dired window"
 (interactive)
 (if (eq major-mode 'dired-mode)
     (let ((filenames (dired-get-marked-files)))
       (mapcar fn filenames))
   (error (format "Not a Dired buffer \(%s\)" major-mode))))
0
ответ дан 6 December 2019 в 15:31
поделиться
Другие вопросы по тегам:

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