Сделать размер файла дисплея 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
( документы); у него есть очень полный набор информации, который вы, возможно, захотите показать для каждого письма в папке, и код, который его использует, обязательно будет поучительным.