Is there a way to tweak thing-at-point
symbol regexp, so that it ignore dots as separators? Right now foo.bar
in my Emacs is recognized as two different symbols, where I wish it was one.
-
See also [Why does thing-at-point not consider plus as a filename character?](https://emacs.stackexchange.com/q/33440/260) – Håkon Hægland Nov 28 '17 at 05:19
2 Answers
To supplement what @phils said -
Make .
have symbol-constituent syntax in the current syntax table, or in a copy of it.
Either define your own replacement function for thing-at-point
:
(defun my-thg-at-pt (thing &optional no-properties)
"..."
(let ((stab (copy-syntax-table)))
(with-syntax-table stab
(modify-syntax-entry ?. "_")
(thing-at-point thing no-properties))))
or wrap whatever code calls thing-at-point
similarly. For instance, if you call some function foo
that you cannot modify, which calls thing-at-point
, then wrap your call to foo
similarly:
(let ((stab (copy-syntax-table)))
(with-syntax-table stab
(modify-syntax-entry ?. "_")
...
(foo)))
Of course, if foo
does other stuff, and some of that depends on .
NOT having symbol syntax, then wrapping all of foo
this way is too unfocused.

- 75,699
- 9
- 109
- 225
That's dependent on the syntax table for the buffer in question. In elisp, for instance, foo.bar
is treated as a single symbol.
You can specify that .
is symbol-constituent in the current buffer's syntax table with:
(modify-syntax-entry ?. "_")
Unless this is for a custom mode of your own devising, I would suggest that you try to establish if there is a sensible reason why .
was not already symbol-constituent.

- 48,657
- 3
- 76
- 115