ESS [SAS] F3按钮和“文件模式规范错误:( void-variable ess-ac-sources)”

时间:2013-10-03 00:31:23

标签: emacs sas key-bindings ess

我一直在寻找这个问题的答案/解决方案。我不确定它是如何发生的或我做了什么(如果有的话),但当我在ESS [SAS]模式下按F3运行SAS的批处理文件时,它不起作用。我一整天都在使用它,它突然间不起作用......如果我在M-x ess-sas-global-unix-keys中呼叫SAS-mode我可以使用F3-F6按钮,但(setq ess-sas-global-unix-keys t)打开init.d文件时,在我的.sas文件中不会将F3-F6绑定到必要的命令。

此外,当我现在打开.sas文件时,我收到消息“文件模式指定错误:(void-variable ess-ac-sources)”并且F3-F6键绑定不再起作用SAS-mode

我检查确保我有最新的一切(一切似乎都是:ie auto-complete,ess),我使用M-x toggle-debug-on-error调试,但我找不到有什么问题(不是我必须知道我在寻找什么,我仍然是Emacs的新手。)

在我的init.el文件中,我对ESS的唯一引用是ess-sas-global-unix-keys。我觉得规范错误对ESS [SAS]键绑定有影响,但我不知道如何解决它。我也不知道为什么它刚刚开始发生,即使我整天都在使用它。我该怎么办?

修改

根据评论,我将向ESS-help邮件列表发送电子邮件,并列出debug-on-error的回溯列表。

Debugger entered--Lisp error: (void-variable ess-ac-sources)
  ess-load-extras()
  ess-mode(((ess-local-customize-alist quote SAS-customize-alist) (ess-language . "SAS") (ess-dialect . "SAS") (ess-mode-editing-alist . SAS-editing-alist) (ess-mode-syntax-table . SAS-syntax-table) (inferior-ess-program . inferior-SAS-program-name) (ess-help-sec-regex . "^[A-Z. ---]+:$") (ess-help-sec-keys-alist . " ") (ess-object-name-db-file . "ess-sas-namedb.el") (inferior-ess-objects-command . "objects(%d)") (inferior-ess-help-command . "help(\"%s\",pager=\"cat\",window=F)\n") (inferior-ess-exit-command . "endsas;\n") (ess-loop-timeout . 500000) (inferior-ess-primary-prompt . "^") (inferior-ess-secondary-prompt . "^") (comint-use-prompt-regexp . t) (inferior-ess-start-file) (inferior-ess-start-args . inferior-SAS-args-temp) (inferior-ess-font-lock-defaults . SAS-mode-font-lock-defaults)) nil)
  SAS-mode()
  set-auto-mode-0(SAS-mode nil)
  set-auto-mode()
  normal-mode(t)
  after-find-file(nil t)
  find-file-noselect-1(#<buffer cleaning-0yr.sas> "~/Documents/datasets/PROMISE/data/scripts/cleaning-0yr.sas" nil nil "~/Documents/datasets/PROMISE/data/scripts/cleaning-0yr.sas" (5673145 2049))
  find-file-noselect("~/Documents/datasets/PROMISE/data/scripts/cleaning-0yr.sas" nil nil t)
  find-file("~/Documents/datasets/PROMISE/data/scripts/cleaning-0yr.sas" t)
  call-interactively(find-file nil nil)

1 个答案:

答案 0 :(得分:0)

不确定自从我之前尝试过这种情况后发生了什么,但是今天我再次用(setq ess-sas-global-unix-keys t)替换(ess-sas-global-unix-keys)(根据ESS-help邮件列表的建议)和F3-F6按钮在ESS [SAS]模式下工作。今天早上我确实得到了emacs的更新,因此可能有助于修复。我仍然得到“文件模式规范错误......”。

编辑

根据@wvxvw注释,将(defvar ess-ac-sources nil)包含在init.el(或.emacs)文件中会阻止“文件模式...”错误的发生。