【问题标题】:Concatenate strings in abbrev file连接缩写文件中的字符串
【发布时间】:2014-04-24 13:15:29
【问题描述】:

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

(define-abbrev-table 'python-mode-abbrev-table
  '(
    ("env" (concatenate 'string
             "#! /usr/bin/env python\n"
             "\n"
             "from __future__ import division\n"
             "from __future__ import print_function\n"
             "from __future__ import absolute_import\n"
             "from __future__ import unicode_literals\n\n")
       nil 3)
   ))

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    表达式不在带引号的列表中进行评估。您可以使用反引号有选择地评估列表结构的各个部分:

    (define-abbrev-table 'python-mode-abbrev-table
      `(
        ("env" ,(concatenate 'string
                 "#! /usr/bin/env python\n"
                 "\n"
                 "from __future__ import division\n"
                 "from __future__ import print_function\n"
                 "from __future__ import absolute_import\n"
                 "from __future__ import unicode_literals\n\n")
           nil 3)
    ))
    

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

    【讨论】:

    • 将其表示为(list (list "env" (concatenate ...) nil 3)) 可能更简单。
    • 我会把这个列表放在需要反引号的边缘。但是,如果您通常将复杂列表编写为带引号的文字,那么当您想将一些元素调整为计算时,最容易使用反引号。
    猜你喜欢
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 2011-09-17
    • 2022-11-18
    • 1970-01-01
    相关资源
    最近更新 更多