derleme/grep
bufferida nuqta manzilini to'liq saqlash uchun bunday vaqtinchalik echimdan foydalanaman:
(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)))))))
Agar derleme/grep
bufetida nuqta ning oddiy markazlashtirilishini istasangiz, quyidagilarni foydalaning:
(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))))))
Birinchi misolda derleme-goto-error
o'rniga keyingi xato
dan foydalanishingiz mumkin.
Yangilanish. Emacs 25.1 nolga teng bo'lmagan davr uchun talab qilinadi.