LINUX.ORG.RU

racer-mode валится с ошибкой, мол программа завершилась со статусом 1

 , ,


0

4

Собственно вот примитивный код

use std:: !!!Место вызова!!!
fn main() {

}
Вызываю автокомпит с дебагером натравленным на ошибки
Debugger entered--Lisp error: (error "<Полный путь до директории>/racer exited with status 1")
  signal(error ("<Полный путь до директории>/racer exited with status 1"))
  error("%s exited with status %s" "<Полный путь до директории>/racer" 1)
  process-lines("<Полный путь до директории>/racer" "complete" "1" "9" "/tmp/test.rs" "/tmp/racer6430vfh")
  apply(process-lines "<Полный путь до директории>/racer" "complete" ("1" "9" "/tmp/test.rs" "/tmp/racer6430vfh"))
  racer--call("complete" "1" "9" "/tmp/test.rs" "/tmp/racer6430vfh")
  (prog1 (racer--call command (number-to-string (line-number-at-pos)) (number-to-string (current-column)) (buffer-file-name) tmp-file) (delete-file tmp-file))
  (let ((tmp-file (make-temp-file "racer"))) (write-region nil nil tmp-file nil (quote silent)) (prog1 (racer--call command (number-to-string (line-number-at-pos)) (number-to-string (current-column)) (buffer-file-name) tmp-file) (delete-file tmp-file)))
  racer--call-at-point("complete")
  (let ((list (racer--call-at-point "complete")) (it-index 0)) (while list (let ((it (car list))) (if (s-starts-with\? "MATCH" it) (progn (setq result (cons it result))))) (setq it-index (1+ it-index)) (setq list (cdr list))))
  (let (result) (let ((list (racer--call-at-point "complete")) (it-index 0)) (while list (let ((it (car list))) (if (s-starts-with\? "MATCH" it) (progn (setq result (cons it result))))) (setq it-index (1+ it-index)) (setq list (cdr list)))) (nreverse result))
  (mapcar (function (lambda (it) (let* ((--dash-source-1-- (s-split-up-to "," (s-chop-prefix "MATCH " it) 5)) (name (car-safe (prog1 --dash-source-1-- ...))) (line (car-safe (prog1 --dash-source-1-- ...))) (col (car-safe (prog1 --dash-source-1-- ...))) (file (car-safe (prog1 --dash-source-1-- ...))) (matchtype (car-safe (prog1 --dash-source-1-- ...))) (ctx (car --dash-source-1--))) (put-text-property 0 1 (quote line) (string-to-number line) name) (put-text-property 0 1 (quote col) (string-to-number col) name) (put-text-property 0 1 (quote file) file name) (put-text-property 0 1 (quote matchtype) matchtype name) (put-text-property 0 1 (quote ctx) ctx name) name))) (let (result) (let ((list (racer--call-at-point "complete")) (it-index 0)) (while list (let ((it (car list))) (if (s-starts-with\? "MATCH" it) (progn (setq result ...)))) (setq it-index (1+ it-index)) (setq list (cdr list)))) (nreverse result)))
  racer-complete("")
  
...

Вызываю код, который emacs использовал для попытки автокомплита в терминале

<Полный путь до директории>/racer" "complete" "1" "9" "/tmp/test.rs" "/tmp/racer6430vfh"

Получаю

PREFIX 9,9,
MATCH core_collections,1,0,/home/deterok/.local/src/rustc-1.2.0/src/libcollections/lib.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcollections/lib.rs
MATCH core_rand,1,0,<Путь до исходников>/rustc-1.2.0/src/librand/lib.rs,Module,<Путь до исходников>/rustc-1.2.0/src/librand/lib.rs
MATCH any,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/any.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/any.rs
MATCH cell,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/cell.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/cell.rs
MATCH clone,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/clone.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/clone.rs
MATCH cmp,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/cmp.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/cmp.rs
MATCH convert,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/convert.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/convert.rs
MATCH default,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/default.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/default.rs
MATCH hash,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/hash/mod.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/hash/mod.rs
MATCH intrinsics,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/intrinsics.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/intrinsics.rs
MATCH iter,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/iter.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/iter.rs
MATCH marker,1,0,<Путь до исходников>/rustc-1.2.0/src/libcore/marker.rs,Module,<Путь до исходников>/rustc-1.2.0/src/libcore/marker.rs
...
END
Программа вернула 0
$ echo $?
0

★★★★★

Решил проблему.
Почему-то не подхватывается переменная окружения, даже если явно задана...

(unless (getenv "RUST_SRC_PATH")
  (setenv "RUST_SRC_PATH" (expand-file-name "~/.local/src/rustc-1.2.0/src/")))

Пришлось замутить вот такую вот штуку еще

(setq racer-rust-src-path (getenv "RUST_SRC_PATH"))

deterok ★★★★★ ()
Последнее исправление: deterok (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.