如何通过指定缓冲区中的x,y坐标获取文本位置?

时间:2012-10-05 11:44:30

标签: emacs elisp

我在缓冲区中有一些点的坐标:x,y相对于窗口的开头; Ho通过这些相对坐标获得文本位置(缓冲区开头的偏移量)?

予。 E:

---------------启动缓冲区

sdfv efrv s

=========================================< - 窗口启动边界

s!df verg 34v dc
sd sdf 

=========================================< - 窗口结束边界

如果该点位于感叹号位置,则x = 1,y = 0,position = 13.现在我知道(x,y)=(1,0),如何获得位置?

编辑(响应Stefan) 这个坐标来自事件,在mause-1下来整流。我从函数tmm-menubar-mouse中获取它。整个事件看起来像这样:

(mouse-1(零菜单栏(45.0)15023零2924(45.0)零(0 .0)(1.0)))

问题是,由于bug某些坐标被错误计算,我重新计算它们,但是我必须得到一个文本位置才能将新事件传递给mouse-drag-region。我通过window-at得到窗口,并从它们重新计算绝对坐标到相对减去窗口的左上角。

1 个答案:

答案 0 :(得分:3)

我建议你尝试posn-at-x-y,虽然这些X和Y是像素位置,但你似乎说你有“字符单元格”的位置。如果这不起作用,请更好地解释你的X和Y来自哪里,因为这些“字符单元位置”有各种定义,这取决于它们如何处理可变大小的字符,如TAB,比例字体,图像......