Emacs:当abbrev模式激活骨架时,微型缓冲区输入被反转

Emacs:当abbrev模式激活骨架时,微型缓冲区输入被反转,emacs,Emacs,我有一个定义如下的骨架: (define-skeleton hello-skeleton "Write a greeting" "Name: " "Hello " str "!") 当我用M-x运行它时,一切都很好。微型缓冲区显示“Name:”,如果我输入“abc”,我将以“Hello abc!”结束。太棒了 然后我评估这个: (define-abbrev text-mode-abbrev-table "hello" "" 'hello-skeleton) 现在,在一个激活了文本

我有一个定义如下的骨架:

(define-skeleton hello-skeleton
  "Write a greeting"
  "Name: "
  "Hello " str "!")
当我用
M-x
运行它时,一切都很好。微型缓冲区显示“Name:”,如果我输入“abc”,我将以“Hello abc!”结束。太棒了

然后我评估这个:

(define-abbrev text-mode-abbrev-table "hello" "" 'hello-skeleton)
现在,在一个激活了文本模式和abbrev模式的缓冲区中,输入“hello”[ENTER]确实会使微型缓冲区激活并再次显示“Name:”,但这次我输入的所有内容都颠倒了。我在小缓冲区中键入的每个字符都会将前一个字符向右推一步,插入符号不会移动

因此,如果我输入“abc”,我会在minbuffer中得到“cba”,如果我按下[ENTER]键,我会在buffer中得到“Hello cba!”

我怀疑我的init文件中有一些垃圾,但即使我使用
-q
启动emacs,我也会看到这种行为

这里发生了什么,为什么会这样

在马文上使用:2013-03-17的GNU Emacs 24.3.1(i386-mingw-nt6.1.7601)。Windows7HomePrem

更新2014-08-23:

我可以用Emacs Windows二进制文件()的24.1.1版重现这个bug,但不能用23.4.1版

我尝试用无缺陷版本(23.4.1)中的文件替换有缺陷版本(24.1.1)中的abbrev模式和skeleton.el和.elc文件,但问题并没有消失。我猜在这些版本之间还发生了其他一些变化,abbrev mode/skeleton组合没有考虑到这些变化


建议?

我找到了完成工作的方法:

如果我在触发字之后按[SPACE]而不是[ENTER](在我的示例中为“hello”),那么我将不再看到奇怪的反转minibuffer输入行为

这很令人困惑,因为在23.4.1中[ENTER]工作得很好。然后在24.1.1中出现了这种奇怪的行为。我的猜测是Windows换行符(CR和LF)混淆了Emacs 24


我意识到我的问题在技术上还没有找到答案,但这对我来说已经足够好了

对我来说很好(相同的Emacs版本;Linux)。另外,以防万一,也许可以作为骨骼的替代品。我也可以复制这个。Linux上的Emacs 24.3.1。