de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Анонимный пользователь
Вопрос

Как я могу повторно запустить grep или скомпилировать окно при следующей ошибке

В next-error в окне grep или компиляции я могу использовать что-то вроде

(setq next-error-recenter 35)

чтобы окно, отображающее совпадение, прокручивалось, чтобы показать полное совпадение, как описано более подробно в этот вопрос о stackoverflow .

Как мне сделать то же самое в самом окне grep или самой компиляции? У меня часто есть выход grep или компиляция вывода, который находится в нижней части окна, и в дни, когда я трачу все свое время на обработку ошибок grep или компиляцию, переключение между окнами добавляет значительные накладные расходы.

5 2016-02-25T11:41:50+00:00 1
Emacs
compilation-mode
grep
lillq
4-го июля 2016 в 11:28
2016-07-04T11:28:31+00:00
Дополнительно
Источник
Редактировать
#56788995

Я использую такое обходное решение для точного сохранения позиции point в буфере compilation/grep :

(defun eab/compile-goto-error ()
  (interactive)
  (let ((istc? truncate-lines))
    (toggle-truncate-lines t)
    (let ((buf (current-buffer))
          (line (- (count-lines (window-start) (point))
                   (if (eq (point) (point-at-bol)) 0 1)))
          (point (point)))
      (compile-goto-error)
      (run-with-timer 0.01 nil `(lambda ()
                                 (let ((cb (current-buffer)))
                                       (pop-to-buffer ,buf)
                                       (recenter ,line)
                                       (goto-char ,point)
                                       (toggle-truncate-lines ,istc?)
                                       (pop-to-buffer cb)))))))

Если вы хотите простое центрирование point в буфере compilation/grep , используйте:

(defun eab/next-error ()
  (interactive)
  (let ((buf (current-buffer)))
    (next-error)
    (run-with-timer 0.01 nil `(lambda ()
                             (let ((cb (current-buffer)))
                               (pop-to-buffer ,buf)
                               (recenter)
                               (pop-to-buffer cb))))))

Вы можете использовать next-error вместо compile-goto-error в первом примере.

Upd. Emacs 25.1 необходим для ненулевого периода времени.

1
0
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 5 дней назад
2
Hideo Nakagawa
Зарегистрирован 5 дней назад
3
Sergiy Tytarenko
Зарегистрирован 1 неделю назад
4
shoxrux azadov
Зарегистрирован 1 неделю назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
emacs.stackexchange.com
под лицензией cc by-sa 3.0 с атрибуцией