键盘输入期间的标记格式取决于模板

时间:2014-09-17 20:35:56

标签: emacs elisp

我想创建一个Emacs模式,其行为方式如下:

当开始一个新段落时,Emacs会在一个缓冲区窗口中询问 要使用的模板:

buffer window:
1 - standard (default)
2 - person
3 - insertion
4 - location
5 - header

Just <ENTER> selects 1 - standard (default).

每当放入两个捕获字母时,一切都要到下一个空格 或者行结尾应该是大写字母:

PErson -> PERSON

PErson NAmed CHuck -> PERSON NAMED CHUCK

标准模板的工作原理如下:

标准段落以一个人开头。在这个人之后,可能还是 可能不会跟随一些():

如果(),则遵循换行符:

input (note the missing <SPACE>):
PErson(doing something).bla bla bla.

output:
PERSON <i>(doing something)</i>.
bla bla bla.

如果没有():

input:
PErson.bla bla bla.

output:
PERSON. bla bla bla.

根据所选模板演示应该发生的事情, 以下是一些示例输入:

Choose "1 - standard" + input:
PErson(doing something. Something else. Something else).bla bla
bla<ENTER>bla bla bla<ENTER>bla bla bla.<ENTER><ENTER>

should become:

output:
<standard>PERSON <i>(doing something. Something else. Something else)</i>.
bla bla bla
bla bla bla
bla bla bla.</standard>

Choose "2 - person" + input:
Description of a place. PErson NAmed CHuck walks around the corner.<ENTER>

output:
<person><i>Description of a place.</i> PERSON NAMED CHUCK <i>walks around
the corner.</i></person>

Choose "3 - insertion" + input:
Something happens. Something can be heard. Something can be seen.<ENTER>

output:
<insertion><i>(Something happens. Something can be heard. Something can be
seen.)</i></insertion>

Note:
Depending on the selected template, a paragraph ends with <ENTER> or
<ENTER><ENTER>.

最终的标记文件(html,xml,无论如何)应该在LibreOffice中使用 进一步处理。

前段时间我已经写了一个Emacs模式。很简单的事情。但随着 在这里,我将非常感谢您提供的每一个提示。

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试编写一种编剧模式。

不要自己写,也许给Fountain Mode一个镜头:

  

Fountain Mode旨在成为使用Fountain标记格式的GNU Emacs的全功能编剧环境。有关Fountain标记格式的更多信息,请访问http://fountain.io

喷泉模式可以通过MELPAMELPA stable安装。这是GitHub页面的截图:

http://files.paulwrankin.com/fountain-mode/screenshot.png