在.emacs中获取没有扩展名的缓冲区文件名

时间:2012-01-03 17:17:57

标签: emacs lisp elisp

我正在尝试为可移植的emacs链接到便携式LaTeX编译器和R for Sweave创建快捷方式,但我对.emacs中使用的语言知之甚少(这是Lisp?)

目前我正在使用从http://xahlee.org/emacs/elisp_relative_path.html获取的fullpath-relative-to-current-file来获取.emacs的路径(位于USBDRIVE/Documents中),然后获取编译器和调用的相对路径它在buffer-file-name上,这是完整路径和文件名,包括扩展名的扩展名:

(global-set-key (kbd "C-c s")
        (lambda ()
          (interactive)
            (cond ((string-equal (file-name-extension (buffer-file-name)) "tex") 
                (shell-command (concat (fullpath-relative-to-current-file "../PortableApps/miktex/miktex/bin/pdflatex ") buffer-file-name)))
            )
            (cond ((string-equal (file-name-extension (buffer-file-name)) "Rnw") 
                (shell-command (concat (fullpath-relative-to-current-file "../PortableApps/R/R-2.14.1/bin/R CMD Sweave ") buffer-file-name " --pdf")))
            )
        )
)   

这允许我使用C-c stex文件上运行LaTeX,在Rnw文件上运行Sweave。现在我想包含对bibtex的调用,但为此我需要tex文件的文件名和路径,不带扩展名。我怎么能这样做?

1 个答案:

答案 0 :(得分:26)

试试file-name-sans-extension。有关详细信息,请阅读手册的File Name Components部分。