下面的屏幕截图是使用visual-line-mode
生成的。我试图测试一个特定的行是否无法在word-end包装,因为整个单词超出了窗口的宽度。
例如:如果光标位于第1行的任何位置,如果t
到point-at-bol
两个一个长字,我想返回point-at-eol
不能被破坏且超过window-width
。
如果光标位于第3行的任何位置,则同一测试应返回nil
。
我尝试将光标放在右边距的\
符号之前和之后,并尝试用what-cursor-position
标识该字符,但该特定符号无法通过该功能到达。换句话说,\
似乎没有占据通常意义上的(point)
来测试窗口边缘的点。
Example http://www.lawlist.com/images/example_05_06_2014_a.png
答案 0 :(得分:1)
以下函数测试行上的最后一个字是否长于窗口宽度。
(defun too-long-p ()
"Returns t if last word on the line is longer than the window's
column width."
(save-excursion
(end-of-line)
(> (length (thing-at-point 'word))
(window-total-width))))
这是一个解决你提出的“ both ”问题的版本,但我怀疑前者可能更接近你想要的。
(defun too-long-p ()
"Returns t if last word on the line is longer than the window's
column width."
(save-excursion
(beginning-of-line)
(forward-word)
(and (eolp)
(> (length (thing-at-point 'word))
(window-total-width)))))
在回复评论时,试试这个(虽然我不记得tab是否会破坏行,所以你可能需要编辑正则表达式):
(defun too-long-p ()
"Returns t if last word on the line is longer than the window's
column width."
(save-excursion
(beginning-of-line)
(unless (re-search-forward "[ \t]"
(+ (point-at-bol) (window-total-width)) t)
(> (length (thing-at-point 'line)) (window-total-width)))))