2014-04-24 2 views
2

concatenate이 약어 파일에서 작동하지 않는 이유가 무엇입니까? 나는이 작은 코드 덩어리로 'env'를 확장하고 가독성을 이유로 문자열을 여러 줄로 분리하는 것을 선호한다. 그러나, 약어는 이맥스에 의해 무시되는 것 같다.약어 파일로 문자열 연결

답변

3

표현식은 인용 된 목록에서 평가되지 않습니다. 당신은 선택적으로 목록 구조의 일부를 평가하기 위해 역 인용 부호를 사용할 수 있습니다

backquoted 표현 내에서
(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) 
)) 

는 쉼표 평가해야 할 부분을 나타냅니다.

+1

나는 정말 더 많은 Lisp을 배울 필요가있다. – plok

+0

'(list (list "env"(concatenate ...) nil 3))'으로 표현하는 것이 더 간단 할 수도 있습니다. – Sean

+0

나는 backquote가 필요한 경계선에이 목록을 넣을 것이다. 그러나 일반적으로 복잡한 목록을 따옴표 붙은 리터럴로 쓰는 경우 몇 가지 요소를 계산하여 조정할 때 역 인용 부호를 사용하는 것이 가장 쉽습니다. – Barmar