Сделать размер файла дисплея magit

Как сделать так, чтобы magit отображал размеры файлов (по крайней мере, файлов без меток) в буфере состояния? Это поможет мне избежать добавления больших файлов непосредственно в git.

Вот пример того, как буфер состояния может выглядеть прямо сейчас:

 Local:    master ~/some/repo/
 Remote:   master @ server (git@server.com:path/to/repo.git)
 Head:     ea55b10 last commit message

 Untracked files:
    new_file_1.ext
    new_file_2.ext

 Unstaged changes:
    Modified   old_file_1.ext
    Modified   old_file_2.ext

 Unpushed commits:
 ea55b10 last commit message

И вот что я хотел бы увидеть:

 Local:    master ~/some/repo/
 Remote:   master @ server (git@server.com:path/to/repo.git)
 Head:     ea55b10 last commit message

 Untracked files:
    new_file_1.ext                                  10K
    new_file_2.ext                                   5M

 Unstaged changes:
    Modified   old_file_1.ext                      100K
    Modified   old_file_2.ext                       530

 Unpushed commits:
 ea55b10 last commit message

1 ответ

Нет простого способа настроить это; вам придется залатать магнит.

Я начал с поиска определения magit-status функция. C-h f magit-status RET помог мне, включая удобную ссылку на исходный код. Эта функция вызывает magit-status-internal, который открывает буфер и вызывает magit-status-refresh-buffer показать информацию о состоянии. magit-status-refresh-buffer вызывает все функции ловушки в переменной magit-status-sections-hook; одна из этих функций называется magit-insert-untracked-files; это выглядит многообещающе. Я не прочитал весь код поддержки (например, magit-insert-section), но это кажется, чтобы позвонить magit-insert-un/tracked-files-1 на каждый файл в списке. Эта функция на самом деле вставляет вещи в буфер:

(insert (propertize file 'face 'magit-filename) ?\n)

Это просто вставка имени файла (с пользовательским лицом), за которым следует новая строка; именно здесь вам нужно будет найти размер файла и вставить его.

Вы можете использовать функцию elisp file-attributes получить информацию о файле, включая размер файла.

Если вы сделаете это, то я предлагаю отправить изменения обратно в magit как запрос на извлечение.

Вы также можете подумать об изменении кода для принятия шаблона, который будет знаком большинству пользователей emacs, а именно о создании настраиваемой переменной, содержащей директиву формата, в которую вы можете подставить доступные значения. Затем пользователи могут редактировать эту строку, чтобы настроить отображение файлов без необходимости редактировать исходный код, как вы делаете. Конечно, это гораздо большее изменение, чем просто добавить одну вещь. Для вдохновения вы можете посмотреть на gnus-summary-line-format ( документы); у него есть очень полный набор информации, который вы, возможно, захотите показать для каждого письма в папке, и код, который его использует, обязательно будет поучительным.

Другие вопросы по тегам