6

In the compilation environment in emacs (M-x compile), whenever there is a path to file (ex.: ../src/code.cpp:21:3: warning: comparison between...) it highlights the path and make it clickable. When clicked, it opens the file in the corresponding line.

I wanted to enable a similar feature in eshell. So that it would highlight and make clickable everything that looks like a file path. How to do that? Is there any script available for that?

[Edit] - clarifications.

rph
  • 315
  • 2
  • 7
  • Do you mean when you compile something from eshell? Or just generally "everything that looks like it might be a file path should be processed" ? – phils May 09 '17 at 12:10
  • @phils I mean generally, everything that looks like it might a file path. – rph May 09 '17 at 12:11
  • What sort of constraints would you apply to that? Because every single word of output *could* be a filename, and *testing* to see if each word actually *is* a filename would seem to be awfully inefficient. – phils May 09 '17 at 12:13
  • @phils I hear what you say. Is there a way to test only those currently visible in the screen? This would reduce the number of words to be processed, and should be very handy already! – rph May 09 '17 at 12:17
  • You'd perhaps use `after-change-functions`, checking against the visible bounds of the window, and then searching and applying text properties as you go. And you could detect what the directory would be for each potential file, and check against a hash of the directory contents, so performance-wise it might work out acceptably. I can't point you at any existing implementation though (and I don't particularly want to figure out how to do this), but maybe others can help more. – phils May 09 '17 at 12:33
  • ...or `eshell-post-command-hook` or `eshell-output-filter-functions`; there are probably other options too. – phils May 09 '17 at 12:38

0 Answers0