在 Open Org Note anki-open-org-note/__init__.py at main · hwiorn/anki-open-org-note · GitHub
if use_ripgrep and shutil.which(rg_opts[0]):
pat = config["note_match"].format(note_id=note_id)
rg_ret = subprocess.run(
rg_opts + ["--json", "-e", pat, search_path],
stdout=subprocess.PIPE,
universal_newlines=True,
).stdout
Open Org Note 使用 rg 搜索 ANKI_NOTE_ID: xxxxx 这样的正则,在指定的文件夹中找到 Anki 卡片的对应 Org entry,并提供跳转到该 entry 的功能。
现在有个问题,上面代码其实就是执行:
rg -ni --json -e '^\s*(?:#\+|:)(ANKI_NOTE_ID|ATTR_ID):\s*"?1710499093364"?\b' '/Users/c/Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/braindump/notes/'
例如搜索字符串 1710499093364
,在终端得到结果:
"absolute_offset":2907
位置是不正确的,Open Org Note 会根据该
absolute_offset,使用 (goto-char <absolute_offset>) 跳转到该位置。
但是因为 搜索结果 不对,导致跳转位置也不对,非常影响体验。
然而在 Emacs 中使用 counsel-rg 搜索相同的字符串 1710499093364
就能跳转到正确位置。
在文档中使用 (point) 得到的位置是 2843,在终端得到的是 2907,两者不一致。:
但是终端中的结果 "line_number":75
却是对的,和上图截图可以对应。
为啥会这样?如何排查?