Получить имя файла буфера без расширения в .emacs - PullRequest
11 голосов
/ 03 января 2012

Я пытаюсь создать ярлыки для переносимых emacs, ссылающихся на переносимый компилятор LaTeX и R для Sweave, но я очень мало знаю о языке, используемом в .emacs (это Lisp?)

В настоящее время я использую fullpath-relative-to-current-file, полученный из http://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")))
            )
        )
)   

Это позволяет мне использовать C-c s для запуска LaTeX для файла tex и Sweave для файла Rnw. Теперь я хотел бы включить вызовы в bibtex, но для этого мне нужно имя файла и путь к файлу tex без расширения. Как я могу это сделать?

1 Ответ

26 голосов
/ 03 января 2012

Попробуйте file-name-sans-extension. Подробнее см. В разделе Компоненты имен файлов данного руководства.

...