fgeller / highlight-thing.el Goto Github PK
View Code? Open in Web Editor NEWEmacs global minor mode to highlight thing under point.
Emacs global minor mode to highlight thing under point.
Hi,
I've being using highlight-symbol
and I found this one today and I liked it more because it has some configurations that the other one doesn't have.
The only thing that this one is missing, I think, it's the ability to add symbols to an ignore list and don't highlight them. I found this very useful because otherwise I feel like it's too intrusive.
For example, my list it's similar to this (for Python code):
(setq highlight-symbol-ignore-list
'("False" "True" "None" "self" "def" "import" "from" "if" "else" "for" "while" "class" "print" "and" "not" "is" "param" "type" "rtype" "async"))
That's all, thank you for this code! :)
Is it possible to have following behavior?
if there is an active region, then act like (setq highlight-thing-what-thing 'region)
otherwise, act like (setq highlight-thing-what-thing 'word)
Not really sure, but it seems that highlight-symbol.el
requires thingatpt
only to work properly.
By default all occurrences of the thing under the cursor get highlighted. This can be distracting while typing, especially since the default highlight color is almost the same as the cursor.
Is it possible to add an option so that only things selected with a double click get highlighted (similar to what sublime text does)?
When Emacs 28.1 loads highlight-thing.el, it complains:
highlight-thing.el: Warning: Use keywords rather than deprecated positional arguments to `define-minor-mode'
when i disable, i get an error:
Highlight-Thing mode disabled
Error running timer `highlight-thing-loop': (void-function highlight-thing-remove-last-highlight) [12 times]
it works if i change the definitions of highlight-thing-deactivate to turn highlight-thing-remove-last-highlight into highlight-thing-remove-last:
(defun highlight-thing-deactivate ()
(highlight-thing-remove-last))
(when highlight-thing-timer (cancel-timer highlight-thing-timer))
(defun highlight-thing-deactivate ()
(highlight-thing-remove-last)
(when highlight-thing-timer (cancel-timer highlight-thing-timer)))
cheers
jack
Would help decide before installing.
It would be nice to have an option to highlight all the matches, but not the one occurence that is at point itself.
I look at the commit, but could not figure it out..
This is what I got:
(use-package
highlight-thing
:ensure t
:config (global-highlight-thing-mode))
(defface highlight-thing
'((t (:inherit 'hi-black-hb))) "")
It would be useful for me if it were possible configure highlight-thing-mode
to prevent an instance of a symbol from being highlighted if that instance is part of a comment block or code intended for documentation (e.g. if the face is font-lock-comment-face
or font-lock-doc-face
).
Thanks for the great work on this minor mode!
thingatpt
has a defun
method so you can test if point is inside a defun or not. If so, narrow before applying the highlight (at least, I hope hi-lock can use that).
What do you think? Often the symbol has no relevance outside the defun. Of course, you can make this an opt-in feature.
First of all, thanks for making this package -- I really love it!
However, when I tried to change the highlight face with (set-face-attribute 'highlight-thing nil :foreground "white")
, Emacs tellls me Invalid face: highlight-thing
. How should I approach this?
Hi! Thanks for the package, but I think I found a bug that freezes Emacs (tested on Emacs 28.1 Windows 11).
When setting the highlight mode to region:
(setq highlight-thing-what-thing 'region)
If i set the mark with C-SPC and then wait for highlight-thing-delay-seconds
seconds (by default 0.5s), the CPU spikes to 100%, memory usage keeps growing and Emacs becomes unresponsive (can't use C-g or ESC, only way to exit is killing the process).
I think this happens when (point)
and (mark)
are equal, the highlight-thing-get-active-region
function returns the empty string and this is passed to the highlight-thing-get-thing-at-point
function. I fixed this bug by replacing thing
with (if (string= "" thing) nil thing)
at the last expression of the highlight-thing-get-thing-at-point
function:
(defun highlight-thing-get-thing-at-point ()
(let ((thing (if (highlight-thing-should-highlight-region-p) (highlight-thing-get-active-region)
(thing-at-point highlight-thing-what-thing))))
(unless (member thing highlight-thing-ignore-list)
(if (string= "" thing) nil thing)))) ;; <---
But I'm not sure if this is the proper place to fix this issue.
Thanks.
Hi, thanks for this. It's working good, but I encountered a problem with big buffers.
I opened a 110kb csv with global-highlight-thing-mode on and my emacs just stopped working (not responding even to C-g).
Is it possible to limit the search to visible part, or to cursor +/- X lines? Else a timeout that tells it might not take more than X seconds or something.
Thanks, Nicolò
This is really odd and I can't explain it, here is what I do:
make a clean buffer
input
module
end
place point over m
in module
point should spotaneously move forward one character.
I guess there's a missing save-excursion
somewhere, unfortunately I don't have time to look into it.
I would like to try out highlighting on "prefixed uris", like "rdfs:label" or "dcterms:license". A regex could easily match these. However, the documentation is very sparse. Could you add an example of how to use regexps?
How does one define a "custom regex function" to use?
Here's how it looks when I select thing
in highlight-thing-case-sensitive-p
:
I don't remember than happening before. I think it started to work this way either after I switched to using the dark mode (unlikely) or after I upgraded to a newer emacs version (most likely).
Config:
(use-package highlight-thing
:ensure t
:diminish)
(global-highlight-thing-mode)
(setq highlight-thing-case-sensitive-p t)
(setq highlight-thing-delay-seconds 0)
(setq highlight-thing-exclude-thing-under-point t)
Emacs version: 26.3.
It would be nice to have things highlighted only if they are selected in the region.
This would mean your eye isn't distracted when doing simple typing, but only when selecting stuff like variables and lines that repeat frewuently. It could also lead to nice synergy effects with other packages like expand-region etc for free.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.