Vim 在emacs中基于文件类型评估缓冲区

Vim 在emacs中基于文件类型评估缓冲区,vim,emacs,clojure,text-editor,Vim,Emacs,Clojure,Text Editor,目前在Vim中,我有以下设置: au Bufenter *.clj map <F5> :!clojure1.2 %<CR> au Bufenter *.py map <F5> :!python %<CR> au Bufenter*.clj地图:!clojure1.2% au Bufenter*.py地图:!蟒蛇% 本质上,这意味着当我用.clj打开一个新的缓冲区时 扩展它绑定f5以使用命令评估当前缓冲区 行命令“clojure1.2 fil

目前在Vim中,我有以下设置:

au Bufenter *.clj map <F5> :!clojure1.2 %<CR> 
au Bufenter *.py map <F5> :!python %<CR> 
au Bufenter*.clj地图:!clojure1.2%
au Bufenter*.py地图:!蟒蛇%
本质上,这意味着当我用.clj打开一个新的缓冲区时 扩展它绑定f5以使用命令评估当前缓冲区 行命令“clojure1.2 filename”。下面一行是python文件的绑定

我的问题是——如何在Emacs中实现同样的功能? 我已经找了几个星期了,但找不到任何简单的东西。我 感谢有clojure和python模式供我尝试。但我会的 有兴趣看看我能否在几行代码中实现上述功能
埃利普

像这样的事情应该可以做到:

(defun run-it ()
  "Run the appropriate executable with the file of the current buffer as input."
  (interactive)
  (let ((command (cdr (assq major-mode '((clojure-mode . "clojure1.2")
                                         (python-mode . "python"))))))
    (unless command
      (error "No command found for major mode: %s" major-mode))
    (shell-command (format "%s %s" command (buffer-file-name)))))
(define-key python-mode-map (kbd "<f5>") 'run-it)
(define-key clojure-mode-map (kbd "<f5>") 'run-it)
(取消运行它()
“以当前缓冲区的文件作为输入运行相应的可执行文件。”
(互动)
(let)((命令(cdr)(关联主模式)((clojure模式。“clojure1.2”)
(python模式。“python”()()())
(除非命令
(错误“找不到主模式的命令:%s”主模式)
(shell命令(格式为“%s%s”命令(缓冲区文件名щщ)))
(定义键python模式映射(kbd“”)'运行它)
(定义键clojure模式映射(kbd“”)'运行它)

像这样的东西应该可以做到:

(defun run-it ()
  "Run the appropriate executable with the file of the current buffer as input."
  (interactive)
  (let ((command (cdr (assq major-mode '((clojure-mode . "clojure1.2")
                                         (python-mode . "python"))))))
    (unless command
      (error "No command found for major mode: %s" major-mode))
    (shell-command (format "%s %s" command (buffer-file-name)))))
(define-key python-mode-map (kbd "<f5>") 'run-it)
(define-key clojure-mode-map (kbd "<f5>") 'run-it)
(取消运行它()
“以当前缓冲区的文件作为输入运行相应的可执行文件。”
(互动)
(let)((命令(cdr)(关联主模式)((clojure模式。“clojure1.2”)
(python模式。“python”()()())
(除非命令
(错误“找不到主模式的命令:%s”主模式)
(shell命令(格式为“%s%s”命令(缓冲区文件名щщ)))
(定义键python模式映射(kbd“”)'运行它)
(定义键clojure模式映射(kbd“”)'运行它)

太好了,非常感谢。只是为了挑剔,它应该是缓冲区文件名。再次感谢!太好了,非常感谢。只是为了挑剔,它应该是缓冲区文件名。再次感谢!