tl;dr why do my org links not have a space before them (e.g. check out thisLINK)? I feel I’m missing something very basic here.

I was using org-roam today in doom emacs and forgot how irritating adding a new node is while writing.

It nestles nicely up to the text before it - with no space in between. After posting on r/orgroam a kind soul told me this might be a wider issue - at least related to org itself, and maybe doom.

Does anyone know how to get a leading space before the node name / link? For example; my nodes come out looking like:

something interesting is in thisNODENAME/LINK check it out

For the love of RMS I want a space between this and NODENAME

I’m clearly being dumb, but can’t figure this out. Surely enough people use emacs / doom emacs / org mode, and they are not all adding links everywhere with no leading space?

A suggestion on r/orgroam was put a double space before a link - is that it?

  • oantolin@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    If I understood correctly, the problem turned out to be caused by evil but the post doesn’t mention evil anywhere! Always mention evil, and, more generally, explain how to reproduce the problem.

  • yigitemres@alien.topB
    link
    fedilink
    English
    arrow-up
    2
    arrow-down
    1
    ·
    1 year ago

    This is link example with org-roam id:

    something interesting is in this [[id:aaaa-aaa-aaa-aaaa-aaaa][A]] link. Check it out...
    

    This is link example with file location:

    This is link example: something interesting is in this [[file:parent/b.org][B]] link. Check it out...
    

    And they gonna look like this.

    • thephatmaster@alien.topOPB
      link
      fedilink
      English
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      I feel I haven’t explained properly. Typing links out manually works fine (like your example).

      But I don’t get the preceeding space using org-store-link (or using org-roam-node-insert or org-roam-node-find - presumably these call org-store-link.

      My workflow is:

      1. In insert mode, type text, with a trailing space before where I want the link;
      2. Somehow when I exit insert mode, the trailing space after my text gets deleted; and
      3. In normal mode, call org-store-link (or one of the roam ones).

      What I end up with is the link nestled against the last non-space charachter of my text

      • yigitemres@alien.topB
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        Your problem is about the evil mode(or anything hooks with it) not the org-roam itself…

      • olikn@alien.topB
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        1 year ago
        1. Somehow when I exit insert mode, the trailing space after my text gets deleted

        Have a look at the variable evil-move-cursor-back and evil-move-beyond-eol. May be this could help you.

  • Yant0r@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I have been upset about this one too. But later on, I started to utilize M-SPC more and not leaving insert mode so often. It just fixed itself that way.

  • Expensive_Pain@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    1
    ·
    1 year ago

    You use org-roam-node-insert? Can you copy-paste a result here?

    Oh, do your nodes have a #+TITLE line? If there’s no #+TITLE, it defaults to using the filename.

  • wonko7@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    1
    ·
    1 year ago

    Inserting stuff from normal mode ends up before the cursor, which is not what I want if I just typed text ending with a space character, I want it after. I’ve been using this for a bunch of insert functions:

    (defmacro my/insert-after-space (&rest fs)
      `(progn
         ,@(mapcar
            (lambda (f)
              ;; If in evil normal mode and cursor is on a whitespace
              ;; character, then go into append mode first before inserting
              ;; the link. This is to put the link after the space rather
              ;; than before.
              `(defadvice ,f (around append-if-in-evil-normal-mode activate compile)
                 (let ((is-in-evil-normal-mode (and (bound-and-true-p evil-mode)
                                                    (not (bound-and-true-p
                                                          evil-insert-state-minor-mode))
                                                    (looking-at "[[:blank:]]"))))
                   (if (not is-in-evil-normal-mode)
                       ad-do-it
                     (evil-append 0)
                     ad-do-it
                     (evil-normal-state)))))
            fs)))
    
    (my/insert-after-space org-roam-node-insert
                           emojify-insert-emoji
                           org-web-tools-insert-link-for-url)