Is there a way to replace all hyperlinks in a buffer with some shorthand phrase say “link” while keeping them as clickable links to their respective site?

I’ve been importing csv files as tables and one of the columns stores links but they’re quite long and making things awkward looking so I’d like to replace them with some shorthand.

Sorry, probably a noob question, still new.

  • 7890yuiop@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

    Assuming that you are referring to plain text…

    while keeping them as clickable links

    First of all you need to establish why a plain text URL is doing something when you click on it, as your new requirement is going to need to interact with that.

    (I’m guessing goto-address-mode is enabled, so I would check that first.)

  • MitchellMarquez42@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

    you can do this with an Overlay, if you know where the link starts and ends. For example I have the buffer README.org

    #+title: hypop - emacs minibuffer-frame + hyprland
    
    * Demo
    https://www.youtube.com/watch?v=jXRt598HqCY
    
    

    the first character of the link is the 60th and the last is the 103rd. So I could write

    (with-current-buffer "README.org"
      (overlay-put (make-overlay 60 103) 'display "link"))
    

    Clicking the “link” text still opens YouTube as expected.

    To do this all over a buffer you’d want to add a font-lock rule based on a regular expression like browse-url-button-regexp.

    If you only need it in Org files, there’s probably some machinery to facilitate that as well

  • rswgnu@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 months ago

    Hyperbole’s ebut:program function lets you create explicitly named buttons that look like <(link)> in place if your long URLs.