(неправильный аргумент типа arrayp nil) при запуске emacs
Emacs 24 и Mac OSX Mavericks, и мой файл emacs выглядит следующим образом:
(setq debug-on-error t)
;; -- common-lisp compatibility if not added earlier in your .emacs
(require 'cl)
;; -- Tuareg mode -----------------------------------------
;; Add Tuareg to your search path
(add-to-list
'load-path
;; Change the path below to be wherever you've put your tuareg installation.
(expand-file-name "~/.elisp/tuareg"))
(require 'tuareg)
(setq auto-mode-alist
(append '(("\\.ml[ily]?$" . tuareg-mode))
auto-mode-alist))
;; -- Tweaks for OS X -------------------------------------
;; Tweak for problem on OS X where Emacs.app doesn't run the right
;; init scripts when invoking a sub-shell
(cond
((eq window-system 'ns) ; macosx
;; Invoke login shells, so that .profile or .bash_profile is read
(setq shell-command-switch "-lc")))
;; -- opam and utop setup --------------------------------
;; Setup environment variables using opam
(defun opam-vars ()
(let* ((x (shell-command-to-string "opam config env"))
(x (split-string x "\n"))
(x (remove-if (lambda (x) (equal x "")) x))
(x (mapcar (lambda (x) (split-string x ";")) x))
(x (mapcar (lambda (x) (car x)) x))
(x (mapcar (lambda (x) (split-string x "=")) x))
)
x))
(dolist (var (opam-vars))
(setenv (car var) (substring (cadr var) 1 -1)))
;; The following simpler alternative works as of opam 1.1
;; (dolist
;; (var (car (read-from-string
;; (shell-command-to-string "opam config env --sexp"))))
;; (setenv (car var) (cadr var)))
;; Update the emacs path
(setq exec-path (split-string (getenv "PATH") path-separator))
;; Update the emacs load path
(push (concat (getenv "OCAML_TOPLEVEL_PATH")
"/../../share/emacs/site-lisp") load-path)
;; Automatically load utop.el
(autoload 'utop "utop" "Toplevel for OCaml" t)
(autoload 'utop-setup-ocaml-buffer "utop" "Toplevel for OCaml" t)
(add-hook 'tuareg-mode-hook 'utop-setup-ocaml-buffer)
Любая помощь в исправлении этой ошибки будет здорово. Спасибо!
Nots: у меня есть режим туарегов, где я сказал, что это (в ~/.elisp/tuareg). Я начал получать эту ошибку после выполнения следующих действий:
opam install \
async yojson core_extended core_bench \
cohttp async_graphics cryptokit menhir
Не уверен, что не так, но у меня был в основном тот же файл Emacs до установки, и у меня не было проблем. Теперь в emacs utop также не работает должным образом, когда я пытаюсь оценить файл ocaml.
1 ответ
Как указано выше:
Если бы мне пришлось угадывать, я бы подумал, что opam config env теперь выводит что-то, что устойчиво к манипуляциям функции
opam-vars
Бежать
Emacs --debug-init
и вы получите обратный след.И разделить этот файл инициализации, рекурсивно, чтобы еще больше сузить ситуацию.