ОБНОВИТЬ:
Не заметил, что Org Mode 9.2 изменил механизм расширения шаблона, где org-structure-template-alistтолько для блоков, определенных "#+BEGIN_"и "#+END_". И запись вроде ("p" ":PROPERTIES:?:END:")больше не принимается.
Как упомянуто в приведенной выше ссылке, другой «сложный» шаблон может быть определен функцией tempo-define-template, и org-tempo должен быть загружен ( (require 'org-tempo)). На самом деле записи org-structure-template-alist
преобразуются в org-tempo-tagsvia tempo-define-templateby 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")
Ниже ответ работает только для версии в режиме Org до 9.2
Да, вы могли бы добавить запись к этому как это:
(add-to-list 'org-structure-template-alist '("p" ":PROPERTIES:?:END:"))
Затем в org-файле вы набираете <pи TAB, он расширяется до свойства и оставляет точку в позиции ?.
И вы можете найти более подробную информацию в документации по переменной, набрав C-h v org-structure-template-alist RET.
>символ наtempo-define-templateопечатку? Если нет .... Какова роль этого в определении?