2011-03-24 17 views
23

Daha önce kodumu .emacs dosyasına kesip yapıştırarak geçirdim, ancak sonra bazı maven işlevlerini emacs'a eklememeye karar verdim. Şimdi, bunu nasıl çözdüğümü anlamıyorum ama dün gece M-x jarl-mvn-exec çalıştırdığımda başlığa koyduğum hatayı alıyorum. Uyudum ve ertesi gün geri döndüm ama hala hiçbir yere gitmiyorum.yanlış türde bir argüman: stringp, nil

(defun jarl-get-pom() 
    (concat (locate-dominating-file 
     (buffer-file-name 
     (current-buffer)) 
     "pom.xml") 
     "pom.xml")) 

(defun jarl-visit-pom() 
    (interactive) 
    (find-file (jarl-get-pom))) 

(defun jarl-mvn-exec() 
    (interactive) 
    (switch-to-buffer (get-buffer-create "maven")) 
    (start-process-shell-command "mvn-exec" "maven" "mvn" "-f" (jarl-get-pom) "compile") 
    (start-process-shell-command "mvn-exec" "maven" "mvn" "-f" (jarl-get-pom) "exec:exec")) 

cevap

31

Emin olmak için daha fazla bilgi vermeniz gerekir. Size dize olmak nil ne şikayet işlevi gösteren bir yığın izleme verecektir

(setq debug-on-error t) 

ayarlamayı deneyin.

Tahminimce, buffer-file-name sıfırdır ve sorunun olduğu yer budur (tüm arabelleklerin dosya adları yoktur). An Introduction To Programming in Emacs Lisp'un debugging bölümüne veya Emacs Lisp el kitabının debugging bölümüne bakın.

+0

Amacım, emacs içindeki geçerli arabellek için dosyanın yukarısındaki pompayı almaktı, ancak maven komutlarımın sonuçlarını görmek için arabelleği farklı bir dosyaya (hiç dosya içermeyen) değiştirdim. – HahaHortness

11

Init dosyanızdaki bir sorunu bulmanın sırrı bir sır değil: ikili arama.

Kullanım comment-region

ardından 3/4, 7/8, ... Bu çok hızlı sorunu tespit etmektir, yarım İnit dosyayı yorum yapmak. comment-region da aşağıdaki rahatsızlıklar: C-h f comment-region RET.