turn-on-rdebug-track-mode показывает неверный номер строки в emacs

Я отлаживаю довольно большой проект rails, и я нашел библиотеку rdebug для emacs, которая очень помогает. Однако одно раздражение вызывает указатель в источнике, показывающий неправильную строку. В приведенном ниже примере код выполняет строку #277 (как показано на левом терминале), но указатель в коде находится на следующей строке (показано на правом терминале).

Режим трека rdebug указывает на неправильную строку в источнике

У кого-нибудь есть идеи как отследить эту ошибку? Я думаю, что это в пакете ruby-debug-extras, но я не взломал emacs, поэтому я даже не знаю правильного списка рассылки, чтобы сообщить об этой ошибке.

1 ответ

Решение

Я не могу утверждать, что особенно хорошо понимаю функции elisp или emacs, но у меня была та же проблема (и некоторые другие проблемы), и я решил взломать этот коммит моего форка ruby-debug-extra. Патч просто корректирует lineno переменная по одному:

--- a/emacs/rdebug-track.el
+++ b/emacs/rdebug-track.el
@@ -212,8 +212,8 @@ problem as best as we can determine."
       "line number cue not found"
     ;;else
     (let* ((filename (match-string rdebug-marker-regexp-file-group block-str))
-           (lineno (string-to-number
-           (match-string rdebug-marker-regexp-line-group block-str)))
+           (lineno (- (string-to-number
+                    (match-string rdebug-marker-regexp-line-group block-str)) 1))
Другие вопросы по тегам