在缩写文件中连接字符串



concatenate在我的缩写文件中不起作用的原因是什么?我希望"env"扩展到这一小段代码,出于可读性的原因,我更喜欢将字符串分隔成多行。然而,Emacs似乎忽略了这个缩写。

(define-abbrev-table 'python-mode-abbrev-table
  '(
    ("env" (concatenate 'string
             "#! /usr/bin/env pythonn"
             "n"
             "from __future__ import divisionn"
             "from __future__ import print_functionn"
             "from __future__ import absolute_importn"
             "from __future__ import unicode_literalsnn")
       nil 3)
   ))

表达式不在带引号的列表中求值。您可以使用反向报价来选择性地评估列表结构的部分:

(define-abbrev-table 'python-mode-abbrev-table
  `(
    ("env" ,(concatenate 'string
             "#! /usr/bin/env pythonn"
             "n"
             "from __future__ import divisionn"
             "from __future__ import print_functionn"
             "from __future__ import absolute_importn"
             "from __future__ import unicode_literalsnn")
       nil 3)
))

在后引号表达式中,逗号表示应计算的部分。

最新更新