2013-11-21 2 views
6

Emacs (post v21) включает в себя функцию delete trailing whitespace из файла. Как я могу сделать delete-trailing-whitespace доступным в промежуточной области Magit (от magit-status), чтобы я мог удалить конечные пробелы из отдельных кусков или целых файлов?Как я могу удалить конечные пробелы из hunk в Magit?

+0

Теперь я попробовал 'magit'. Мое предположение, что вы можете редактировать различия, выглядит не очень хорошо. Такие работы работают с 'ediff'-patching, но не с git. Итак, я удалю свой ответ. Я очень сожалею об этом. – Tobias

+0

Магистр. Magit этого не поддерживает. – tarsius

+0

@Tobias Не волнуется, как я помню, вы все еще были правы в том, что я могу пойти прямо к файлу из Магита. Оттуда его довольно простой вызов функции. –

ответ

3

Это фрагмент Шона, с поправкой на Magit v2:

(defun my-magit-delete-trailing-whitespace-from-file() 
    "Remove whitespace from the current file." 
    (interactive) 
    (save-excursion 
    (magit-diff-visit-file-worktree (magit-file-at-point)) 
    (delete-trailing-whitespace) 
    (save-buffer) 
    (kill-buffer)) 
    (magit-refresh)) 
+1

Спасибо за обновление. Есть ли способ ограничить это куском? Имеет ли оверлей в магическом статусе какую-либо информацию о том, откуда появился кусок? Если это так, вы можете использовать эту информацию для сужения перед удалением пробелов. –

+1

Для секции hunk '(значение magit-section (magit-current-section))' будет возвращать что-то вроде '(" (defun module-rebuild() "" -73,6 "" +73,8 ")' , – tarsius

0

Спасибо @ Tarsius для вашего большого трюка! Мне удалось настроить его, чтобы удалить только отстающие пробелы для строки в точке. Для этого необходимо установить пакет «ws-trim».

(defun my-magit-delete-trailing-whitespace() 
    "Remove whitespace from the current file." 
    (interactive) 
    (save-excursion 
    (magit-diff-visit-file-worktree (magit-file-at-point)) 
    (ws-trim-line nil) 
    (save-buffer) 
    (kill-buffer)) 
    (magit-refresh)) 

(add-hook 'magit-status-mode-hook 
(lambda() 
    (local-set-key [deletechar] 'my-magit-delete-trailing-whitespace))) 

Я связывание удалить ключ, так что не используется для ничего полезного в magit-status-mode.

Смежные вопросы