修改Emacs中的Alt + f以用于tex模式

时间:2011-09-02 06:35:28

标签: emacs lisp elisp

在tex模式下写入时,在emacs中的Alt + f似乎不包括。作为这个词的一部分。因此,如果存在将其作为单词的一部分包含在内的点样,如何修改alt + f行为以保持前进的相同精确度。

我有一个单独的文件,在tex中写入时加载,所以我只是把它扔到那里,所以它不会影响正常的emacs行为。

感谢您的帮助。

考虑添加此但相同的相关问题是使用Alt + d和删除时。让它不仅删除单词而且删除例如......(,。!等等)的标点符号。

1 个答案:

答案 0 :(得分:3)

以下代码适合您:

(defun unpunctuate-syntax (str)
  "Make the characters of the given string word characters."
  (let ((st (copy-syntax-table (syntax-table))))
    (dotimes (n (length str))
      (modify-syntax-entry (elt str n) "w" st))
    (set-syntax-table st)))

(defun dots-are-not-punctuation ()
  (unpunctuate-syntax "."))

(add-hook 'TeX-mode-hook 'dots-are-not-punctuation)

M-f(前向字功能)的工作方式是它跳过缓冲区中当前语法表中类型为“w”(即单词)的所有字符。

此代码生成修改后的语法表并将其提供给缓冲区,底部的add-hook位将其设置为在TeX模式下打开文件时运行。 (此方法避免了您必须执行您描述的单独文件)。

您可能会注意到我复制了语法表而不是编辑属于TeX主模式的语法表。这是因为我在使用语法表时总是弄错了你可以把事情搞得一团糟......这个方法意味着你只需关闭缓冲区然后重新开始!