2016-09-08 3 views
0

내가 설치 한 패키지를 필요로 내 ~/.emacs에서 다음을 사용하려고하고있어 사용하고 싶습니다 :심볼의 기능 정의는 무효 :지도

(map #'nil (lambda (x) (require x)) 
'(
    undo-tree 
    savekill 
    wrap-region 
    free-keys)) 

을하지만, 나는 그것을 테스트 할 때 밖으로 이맥스 버퍼를 평가함으로써, 내가이 오류 : Symbol's function definition is void: map 나는 정상적으로 이맥스를 시작할 때 같은 오류가 발생한다, 나는이 문제를 해결했다고 믿는다. 그러나 나는 그것을 어떻게했는지 기억하지 못한다. emacs --debug-init

Debugger entered--Lisp error: (void-function map) 
(map (function nil) (function (lambda (x) (require x))) 
(quote (undo-tree savekill wrap-region free-keys))) 
eval-buffer(#<buffer *load*> nil "c:/Users/rr257875/AppData/Roaming/.emacs" nil t) ; Reading at buffer position 944 
load-with-code-conversion("c:/Users/rr257875/AppData/Roaming/.emacs" "c:/Users/rr257875/AppData/Roaming/.emacs" t t) 
load("~/.emacs" t t) 
#[0 "\205\262 

답변

3
map is an alias for `cl-map' in `cl.el'. 

을 그래서 일단 당신이 필요합니다 : : 또는

(require 'cl) 

나 :

(require 'cl-lib) 
(cl-map ...) 
4
내가 실행할 때 다음

내가 얻을 디버그 정보입니다

phils' answer이 작동하지 않는 이유는이 함수가 Emacs Lisp에서 Common Lisp 함수를 구현하는 cl 라이브러리에 있다는 것입니다.

당신이 원하는 것을 수행하는 "네이티브 (native)"Emacs Lisp 함수가 있습니다 : mapc. 각 시퀀스 요소에 함수를 적용하고 반환 값을 무시합니다.

(mapC#'require 
'(
    undo-tree 
    savekill 
    wrap-region 
    free-keys)) 

(첫 번째 인수로 'listmap를 호출하는 것처럼, 이는 또한 mapcar 있습니다.)