Какой самый элегантный способ получения комментарий к таблице MySQL?

Недавно я добавил функцию Emacs (delete-trailing-whitespace) в мой 'before-save-hook для некоторых режимов программирования, но я нахожу довольно расстраивающим, что он удаляет пробелы из строки, которую я сейчас редактирую. Есть предложения, как решить эту проблему?

8
задан pariser 20 August 2010 в 18:19
поделиться

2 ответа

Поскольку delete-trailing-whitespace учитывает сужение, одно из решений - сузить буфер до части перед текущей строкой и вызвать ее, затем сузьте до части после текущей строки и вызовите ее снова:

(defun delete-trailing-whitespace-except-current-line ()
  (interactive)
  (let ((begin (line-beginning-position))
        (end (line-end-position)))
    (save-excursion
      (when (< (point-min) begin)
        (save-restriction
          (narrow-to-region (point-min) (1- begin))
          (delete-trailing-whitespace)))
      (when (> (point-max) end)
        (save-restriction
          (narrow-to-region (1+ end) (point-max))
          (delete-trailing-whitespace))))))

Поместите эту функцию в свой before-save-hook вместо delete-trailing-whitespace ].

10
ответ дан 5 December 2019 в 12:06
поделиться

Эта обертка для delete-trailing-whitespace может быть использована для того, что вы хотите:

(defun delete-trailing-whitespace-except-current-line ()
  "do delete-trailing-whitespace, except preserve whitespace of current line"
  (interactive)
  (let ((current-line (buffer-substring (line-beginning-position) (line-end-position)))
        (backward (- (line-end-position) (point))))
    (delete-trailing-whitespace)
    (when (not (string-equal (buffer-substring (line-beginning-position) (line-end-position))
                             current-line))
      (delete-region (line-beginning-position) (line-end-position))
      (insert current-line)
      (backward-char backward))))
3
ответ дан 5 December 2019 в 12:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: