回答:
更新:
ことを気づいていない組織モード9.2は、テンプレート展開のメカニズム、変更org-structure-template-alist
のみで定義されたブロックのためである"#+BEGIN_"
とします"#+END_"
。そして、様のエントリー("p" ":PROPERTIES:?:END:")
はもはや受け付けられません。
上記のリンクで述べたように、他の「複雑な」テンプレートはfunction tempo-define-template
で定義でき、org-tempoをロードする必要があります((require 'org-tempo)
)。実際、のエントリはによってviaにorg-structure-template-alist
変換され、デフォルトは次のとおりです。org-tempo-tags
tempo-define-template
org-tempo
org-tempo-tags
(("<i" . tempo-template-org-index)
("<A" . tempo-template-org-ascii)
("<H" . tempo-template-org-html)
("<L" . tempo-template-org-latex)
("<v" . tempo-template-org-verse)
("<s" . tempo-template-org-src)
("<q" . tempo-template-org-quote)
("<l" . tempo-template-org-export-latex)
("<h" . tempo-template-org-export-html)
("<E" . tempo-template-org-export)
("<e" . tempo-template-org-example)
("<C" . tempo-template-org-comment)
("<c" . tempo-template-org-center)
("<a" . tempo-template-org-export-ascii)
("<I" . tempo-template-org-include))
あなたのケースでは、次の方法でテンプレートを定義できます:
(tempo-define-template "my-property"
'(":PROPERTIES:" p ":END:" >)
"<p"
"Insert a property tempate")
以下の回答は、9.2より前のOrgモードバージョンでのみ機能します
はい、次のようにエントリを追加できます。
(add-to-list 'org-structure-template-alist '("p" ":PROPERTIES:?:END:"))
次に、orgファイルで「<p
and TAB
」と入力すると、プロパティに展開され、ポイントがの位置に残ります?
。
また、変数のドキュメントで詳細を見つけるには、と入力しますC-h v org-structure-template-alist RET
。
彼らが組織モードのカスタマイズに互換性のない変更を導入する頻度は、本当に残念です。
次のコードは、バージョン9.2より前のorg-modeの古い構造テンプレートを提供します。この関数org-complete-expand-structure-template
はバージョン9.1からの純粋なコピーであり、9.1のorg-try-structure-completion
バージョンのわずかに変更されたバージョンです。(そこに型チェックを追加しました。)
そのコードをインストールしたら、古いテンプレートを
(add-to-list 'org-structure-template-alist '("p" ":PROPERTIES:?:END:"))
再び使用できます。
(defvar org-structure-template-alist)
(defun org+-avoid-old-structure-templates (fun &rest args)
"Call FUN with ARGS with modified `org-structure-template-alist'.
Use a copy of `org-structure-template-alist' with all
old structure templates removed."
(let ((org-structure-template-alist
(cl-remove-if
(lambda (template)
(null (stringp (cdr template))))
org-structure-template-alist)))
(apply fun args)))
(eval-after-load "org"
'(when (version<= "9.2" (org-version))
(defun org-try-structure-completion ()
"Try to complete a structure template before point.
This looks for strings like \"<e\" on an otherwise empty line and
expands them."
(let ((l (buffer-substring (point-at-bol) (point)))
a)
(when (and (looking-at "[ \t]*$")
(string-match "^[ \t]*<\\([a-zA-Z]+\\)$" l)
(setq a (assoc (match-string 1 l) org-structure-template-alist))
(null (stringp (cdr a))))
(org-complete-expand-structure-template (+ -1 (point-at-bol)
(match-beginning 1)) a)
t)))
(defun org-complete-expand-structure-template (start cell)
"Expand a structure template."
(let ((rpl (nth 1 cell))
(ind ""))
(delete-region start (point))
(when (string-match "\\`[ \t]*#\\+" rpl)
(cond
((bolp))
((not (string-match "\\S-" (buffer-substring (point-at-bol) (point))))
(setq ind (buffer-substring (point-at-bol) (point))))
(t (newline))))
(setq start (point))
(when (string-match "%file" rpl)
(setq rpl (replace-match
(concat
"\""
(save-match-data
(abbreviate-file-name (read-file-name "Include file: ")))
"\"")
t t rpl)))
(setq rpl (mapconcat 'identity (split-string rpl "\n")
(concat "\n" ind)))
(insert rpl)
(when (re-search-backward "\\?" start t) (delete-char 1))))
(advice-add 'org-tempo-add-templates :around #'org+-avoid-old-structure-templates)
(add-hook 'org-tab-after-check-for-cycling-hook #'org-try-structure-completion)
(require 'org-tempo)
))
>
記号tempo-define-template
はタイプミスですか?そうでない場合...定義におけるそれの役割は何ですか?