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

Sac*_*amp 12 lisp emacs elisp

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

目前我使用fullpath-relative-to-current-filehttp://xahlee.org/emacs/elisp_relative_path.html获取的路径.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")))
            )
        )
)   
Run Code Online (Sandbox Code Playgroud)

这允许我用来C-c stex文件和SweaveRnw文件上运行LaTeX .现在我想包括对bibtex的调用,但为此我需要文件的文件名和路径,tex没有扩展名.我怎样才能做到这一点?

Tre*_*son 26

试试file-name-sans-extension.有关更多详细信息,请阅读手册的" 文件名组件"部分.

  • 谢谢.`(file-name-sans-extension buffer-file-name)`工作. (4认同)