Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

citar-open-entry receives wrong citekey #822

Open
pgoelz opened this issue Mar 6, 2024 · 6 comments
Open

citar-open-entry receives wrong citekey #822

pgoelz opened this issue Mar 6, 2024 · 6 comments
Labels
bug Something isn't working

Comments

@pgoelz
Copy link

pgoelz commented Mar 6, 2024

Describe the bug
I set up citar with embark. All actions work, but citar-open-entry is called with a spurious citekey.

To Reproduce
Steps to reproduce the behavior:

  1. Place cursor on citation key. (E.g., the citation is [cite:@NW06] and citar knows about it: hovering over it gives me the full citation. My cursor is on the “N”, but the result is the same if it is on the cite: part.)
  2. Call embark-act, either explicitly or through C-c C-o.
  3. Press e to call citar-open-entry.

Expected behavior
I would expect citar-open-entry to be called with the argument "NW06". Instead, it gets called with the first reference in my bib file, "AAA+18".

Screenshots
image
Note that embark is aware of the correct citar-key, NW06.

Emacs version: 29.1. I installed citar and embark using straight, so I’m up to date with their respective main/master branches.

Additional context
To better understand this issue, I set citar-open-entry-function to a function that prints its argument, which indeed gets called with the argument AAAI+18. I also verified that running (citar-open-entry "NW06") would indeed open the entry for NW06. What I am most confused by is that the other options in embark-act (say, r for citar-copy-reference) receive the correct reference when selected.

@pgoelz pgoelz added the bug Something isn't working label Mar 6, 2024
@bdarcus
Copy link
Contributor

bdarcus commented Mar 6, 2024

Hi @pgoelz - I can't reproduce that. On my end, it works as expected.

@pgoelz
Copy link
Author

pgoelz commented Mar 6, 2024

Thanks for trying, Bruce! Do you have any advice for how to narrow it down on my side? I’m stuck because I’m not familiar with embark and so don’t understand where embark calls citar-open-entry. Do you see any reason why citar-open-entry might receive something different than citar-copy-reference? FWIW, my citar-config is very vanilla and I haven’t changed anything in the package.

@pgoelz
Copy link
Author

pgoelz commented Mar 6, 2024

I’ve been able to reproduce the error when starting from a fresh spacemacs configuration file and a minimal bibliography.

Bibliography, to be placed in /tmp/bib.bib:

@techreport{AAA+18,
  title = {Market Failure in Kidney Exchange},
  author = {Agarwal, Nikhil and Ashlagi, Itai and Azevedo, Eduardo and Featherstone, Clayton R. and Karaduman, {\"O}mer},
  year = {2018},
  institution = {{National Bureau of Economic Research}}
}


@book{NW06,
  title = {Numerical Optimization},
  author = {Nocedal, Jorge and Wright, Stephen J.},
  year = {2006},
  series = {Springer Series in Operations Research},
  edition = {2nd ed},
  publisher = {{Springer}},
  address = {{New York}}
}

Org-file in which the problem occurs:

[cite:@NW06]

The .spacemacs file is unchanged except for the following additions to user-config:

(defun dotspacemacs/user-config ()
  "Configuration for user code:
This function is called at the very end of Spacemacs startup, after layer
configuration.
Put your configuration code here, except for variables that should be set
before packages are loaded."
    ;; install the straight package manager
    (defvar bootstrap-version)
    (let ((bootstrap-file
           (expand-file-name
            "straight/repos/straight.el/bootstrap.el"
            (or (bound-and-true-p straight-base-dir)
                user-emacs-directory)))
          (bootstrap-version 7))
      (unless (file-exists-p bootstrap-file)
        (with-current-buffer
            (url-retrieve-synchronously
             "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
             'silent 'inhibit-cookies)
          (goto-char (point-max))
          (eval-print-last-sexp)))
      (load bootstrap-file nil 'nomessage))
    (straight-use-package 'org)

    (setq org-cite-global-bibliography '("/tmp/bib.bib"))

    (straight-use-package 'embark)
    (straight-use-package 'citar)
    (straight-use-package 'citar-embark)
    (setq citar-bibliography '("/tmp/bib.bib"))
    (defun debugging-log (citekey)
      (switch-to-buffer-other-window "*log*")
      (erase-buffer)
      (insert citekey)
      (other-window 1)
    )
    (setq citar-open-entry-function 'debugging-log)
    (citar-embark-mode)
)

I’m also attaching the full .spacemacs file: spacemacs.txt.

With this, I can reproduce the problem: calling embark-act and pressing e logs "AAA+18" into the *log* buffer rather than the expected "NW06". (Note that embark-act must be called manually, since I haven’t set citar-at-point-function.)

@bdarcus, does anything in the above look problematic to you?

@bdarcus
Copy link
Contributor

bdarcus commented Mar 7, 2024

I think the + in that first key may be invalid?

bibcop /tmp/test.bib
It is impossible to parse the .bib file, because I do not know what to do with '+' at line no.0 (s=tag)

What happens if you change it?

As a general rule, it's often the case when something unexpected like this, there's an issue with the input file.

@pgoelz
Copy link
Author

pgoelz commented Mar 7, 2024

Thanks, Bruce! The issue persists when I delete the + from the citation key, and even when I reduce the bibliography to

@book{A,
    title = {A},
    author = {Anderson, Anthony},
    year = {2000}
}

@book{B,
    title = {B},
    author = {Baker, Bessie},
    year = {2001}
}

@bdarcus
Copy link
Contributor

bdarcus commented Mar 7, 2024

Seems pretty likely there's something wrong on your local system.

I note that you don't really configure Embark, but I doubt that would matter in this case.

Maybe try rebuilding your packages??

PS - there's a little test script in the repo test/manual directory. If I run (run.sh) that, it works as expected again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants