0

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

IE。:

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

sdfv efrv s

==========================================<--窗口开始边框

s!df verg 34v dc
sd sdf 

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

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

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

(mouse-1 (nil menu-bar (45 . 0) 15023 nil 2924 (45 . 0) nil (0 . 0) (1 . 0)))

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

4

1 回答 1

3

我建议您尝试一下posn-at-x-y,尽管这些 X 和 Y 是像素位置,而您似乎说您有“字符单元”位置。如果这不起作用,请更好地解释您的 X 和 Y 来自哪里,因为这种“字符单元位置”有多种定义,具体取决于它们如何处理可变大小的字符,如制表符、比例字体、图像...... .

于 2012-10-05T16:07:31.763 回答