Подтвердить что ты не робот

"Коснитесь" текущего файла в emacs

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

4b9b3361

Ответ 1

Конечно, это предполагает, что у вас есть команда с именем 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-mode по умолчанию используется команда touch T. Эта команда не так проста в использовании, потому что она запрашивает у пользователя отметку времени. Я полагаю, что это очень общее, но это не очень удобный способ делать то, что обычно предназначено "touch".

Ответ 2

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

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

Ответ 3

Вот чистый способ 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))))

Ответ 4

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