«Сенсорный» текущий файл в Emacs - PullRequest
15 голосов
/ 24 января 2012

Im emacs, я хочу запустить "touch" для файла, на который ссылается текущий буфер (особенно хочу изменить время модификации). Я использую guard для запуска некоторых тестов после изменения файлов, но иногда я хочу вызвать его вручную. Мне не важно запускать фактическое касание утилиты оболочки, пока установлен mtime.

Ответы [ 4 ]

8 голосов
/ 24 января 2012

Конечно, это предполагает, что на вашем пути есть команда с именем touch.

(defun touch ()
     "updates mtime on the file for the current buffer"
     (interactive)
     (shell-command (concat "touch " (shell-quote-argument (buffer-file-name))))
     (clear-visited-file-modtime))

В режиме dired есть сенсорная команда, по умолчанию связанная с T. Эту команду не так просто использовать, потому что она запрашивает у пользователя отметку времени. Я предполагаю, что это очень общий характер, но это не очень удобный способ сделать то, что обычно подразумевается «прикосновением».

6 голосов
/ 24 января 2012

Возможно, больше нажатий клавиш, чем в пользовательской функции, но вы можете сделать это из коробки с помощью C-u M-~, а затем C-x C-s.

M-~ по умолчанию связан с not-modified, который очищает флаг модификации буфера, если только вы не вызываете его с аргументом (префикс C-u), в этом случае он делает обратное. Затем просто сохраните буфер.

5 голосов
/ 24 января 2012

Вот простой способ сделать это на emacs:

(defun touch-file ()
  "Force modification of current file, unless already modified."
  (interactive)
  (if (and (verify-visited-file-modtime (current-buffer))
           (not (buffer-modified-p)))
      (progn
        (set-buffer-modified-p t)
        (save-buffer 0))))
3 голосов
/ 24 января 2012

Я делаю это так: вставляю пробел, заканчиваю, потом снова удаляю пробел и сохраняю. Это меняет время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...