emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)]
@ 2021-08-26 12:18 Yuu Yin
  2021-08-31 10:24 ` Timothy
  0 siblings, 1 reply; 5+ messages in thread
From: Yuu Yin @ 2021-08-26 12:18 UTC (permalink / raw)
  To: emacs-orgmode@gnu.org

[-- Attachment #1: Type: text/plain, Size: 5614 bytes --]

** Expected behavior

Invoking ~org-cite-insert~ after list bullets (e.g. ~-~ and ~1.~ ) works.

*** Why

Being able to insert citations in lists is useful when the user wants to list works without text surround it, for instance a list akin to the ~Further reading~ section on Wikipedia (e.g. https://en.wikipedia.org/wiki/Wikipedia#Further_reading). Thus, current behavior is too strict.

** Actual behavior
Invoking ~org-cite-insert~ after list bullets (e.g. ~-~ and ~1.~ ) doesn't work.

#+begin_src emacs-lisp
org-cite-insert: Cannot insert a citation here
#+end_src

** Reproduce

1. Install Emacs master, and add to =~/.config/emacs/init.el=
#+begin_src emacs-lisp
(require 'package)

(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))

(straight-use-package 'use-package)

(setq straight-use-package-by-default t)

(defun my-call-process (command &rest args)
"Execute COMMAND with ARGS synchronously.

Returns (STATUS . OUTPUT) when it is done, where STATUS is the returned error
code of the process and OUTPUT is its stdout output."
(with-temp-buffer
(cons (or (apply #'call-process command nil t nil (remq nil args))
-1)
(string-trim (buffer-string)))))

(use-package org
:straight '(:type git :host github :repo "emacs-straight/org"
:build t
:pre-build
(with-temp-file "org-version.el"
(insert "(defun org-release () \"9.5\")\n"
(format "(defun org-git-version (&rest _) \"9.5-%s\")\n"
(cdr (my-call-process "git" "rev-parse" "--short" "HEAD")))
"(provide 'org-version)\n")))
:config
(require 'oc-basic))
#+end_src

2. Create bibtex file =org/test.bib= with
#+begin_src bibtex
@book{test-2021-test,
title = {Test},
author = {{Test}},
year = {2021},
}
#+end_src

3. Create org-mode file =org/test.org=
#+begin_src org
,#+TITLE: Test
,#+BIBLIOGRAPHY: test.bib

,* Test

-
+
-
,*

1.
a.
b.
2.
a)
b)
3.
-
+
4.
1)
#+end_src

4. Put cursor after any of the list bullets and ~org-cite-insert~

5. See message buffer ~Cannot insert a citation here~

** System information
Emacs : GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.30, cairo version 1.16.0)
Package: Org mode version 9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)

current state:
==============
(setq
org-link-elisp-confirm-function 'yes-or-no-p
org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"]
org-export-before-parsing-hook '(org-attach-expand-links)
org-archive-hook '(org-attach-archive-delete-maybe)
org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines
org-optimize-window-after-visibility-change)
org-mode-hook '(#[0 "\300\301\302\303\304$\207" [add-hook change-major-mode-hook org-show-all append local] 5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook org-babel-show-result-all append local] 5]
org-babel-result-hide-spec org-babel-hide-all-hashes)
org-confirm-shell-link-function 'yes-or-no-p
org-reveal-start-hook '(org-decrypt-entry)
outline-isearch-open-invisible-function 'outline-isearch-open-invisible
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer)
org-confirm-elisp-link-function 'yes-or-no-p
org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand)
org-link-shell-confirm-function 'yes-or-no-p
org-babel-pre-tangle-hook '(save-buffer)
org-agenda-loop-over-headlines-in-active-region nil
org-occur-hook '(org-first-headline-recenter)
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-link-parameters '(("attachment" :follow org-attach-follow :complete org-attach-complete-link)
("id" :follow org-id-open) ("eww" :follow org-eww-open :store org-eww-store-link)
("rmail" :follow org-rmail-open :store org-rmail-store-link)
("mhe" :follow org-mhe-open :store org-mhe-store-link)
("irc" :follow org-irc-visit :store org-irc-store-link :export org-irc-export)
("info" :follow org-info-open :export org-info-export :store org-info-store-link)
("gnus" :follow org-gnus-open :store org-gnus-store-link)
("docview" :follow org-docview-open :export org-docview-export :store
org-docview-store-link)
("bibtex" :follow org-bibtex-open :store org-bibtex-store-link)
("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete org-bbdb-complete-link
:store org-bbdb-store-link)
("w3m" :store org-w3m-store-link)
("doi" :follow org-link-doi-open :export org-link-doi-export) ("file+sys") ("file+emacs")
("shell" :follow org-link--open-shell)
("news" :follow
#[514 "\301\300\302Q\"\207" ["news" browse-url ":"] 6 "\n\n(fn URL ARG)"])
("mailto" :follow
#[514 "\301\300\302Q\"\207" ["mailto" browse-url ":"] 6 "\n\n(fn URL ARG)"])
("https" :follow
#[514 "\301\300\302Q\"\207" ["https" browse-url ":"] 6 "\n\n(fn URL ARG)"])
("http" :follow
#[514 "\301\300\302Q\"\207" ["http" browse-url ":"] 6 "\n\n(fn URL ARG)"])
("ftp" :follow #[514 "\301\300\302Q\"\207" ["ftp" browse-url ":"] 6 "\n\n(fn URL ARG)"])
("help" :follow org-link--open-help :store org-link--store-help)
("file" :complete org-link-complete-file) ("elisp" :follow org-link--open-elisp))
org-metaup-hook '(org-babel-load-in-session-maybe)
)

[-- Attachment #2: Type: text/html, Size: 9654 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)]
  2021-08-26 12:18 org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)] Yuu Yin
@ 2021-08-31 10:24 ` Timothy
  2021-08-31 11:41   ` Bruce D'Arcus
  2021-09-01 16:05   ` Yuu Yin
  0 siblings, 2 replies; 5+ messages in thread
From: Timothy @ 2021-08-31 10:24 UTC (permalink / raw)
  To: Yuu Yin; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 810 bytes --]


Yuu Yin <yuuyin@protonmail.com> writes:

> Invoking ~org-cite-insert~ after list bullets (e.g. ~-~ and ~1.~ )
> doesn't work.

I did a little test myself, and can confirm that it's not currently
possible to insert a citation *immediately* after a bullet and space.
This can be checked with `org-cite--allowed-p'.

Thinking about this situation, inserting citations should be fine as
long as the `point' isn't before or immediately after the bullet itself
(i.e. no space).

I've prepared a patch that fixes this (attached). This is the test case
that I'm adding:

+     ((eq type 'item)
+      (> (point) (+ (org-element-property :begin context)
+                    (org-get-indentation)
+                    1)))

As this is so simple, if nobody has any comments I'll push this in a
week or so.

--
Timothy


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-oc-allow-citations-following-an-item-bullet.patch --]
[-- Type: text/x-patch, Size: 1181 bytes --]

From 8a242b6c80c2ec2b384f12c16bb9f70c2d44c9c7 Mon Sep 17 00:00:00 2001
From: TEC <tec@tecosaur.com>
Date: Tue, 31 Aug 2021 19:03:19 +0800
Subject: [PATCH] oc: allow citations following an item bullet

* lisp/oc.el (org-cite--allowed-p): Expand the allowed cases to include
"item", which lets one insert a citation following a bullet, e.g. "- ".
We just have to check to make sure the citation actually is at least one
character away from the bullet.
---
 lisp/oc.el | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lisp/oc.el b/lisp/oc.el
index 5fcb9da62..7ffe37e57 100644
--- a/lisp/oc.el
+++ b/lisp/oc.el
@@ -1426,6 +1426,11 @@ (defun org-cite--allowed-p (context)
      ((= (point) (org-element-property :begin context)))
      ;; Within recursive object too, but not in a link.
      ((eq type 'link) nil)
+     ;; At the start of a list item is fine, as long as the bullet is unaffected.
+     ((eq type 'item)
+      (> (point) (+ (org-element-property :begin context)
+                    (org-get-indentation)
+                    1)))
      ((eq type 'table-cell)
       ;; :contents-begin is not reliable on empty cells, so special
       ;; case it.
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)]
  2021-08-31 10:24 ` Timothy
@ 2021-08-31 11:41   ` Bruce D'Arcus
  2021-09-01 16:05   ` Yuu Yin
  1 sibling, 0 replies; 5+ messages in thread
From: Bruce D'Arcus @ 2021-08-31 11:41 UTC (permalink / raw)
  To: Timothy; +Cc: org-mode-email, Yuu Yin

On Tue, Aug 31, 2021 at 7:21 AM Timothy <tecosaur@gmail.com> wrote:

> Thinking about this situation, inserting citations should be fine as
> long as the `point' isn't before or immediately after the bullet itself
> (i.e. no space).

I agree.

Cites in lists can be useful, including for things like CVs.

Bruce


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)]
  2021-08-31 10:24 ` Timothy
  2021-08-31 11:41   ` Bruce D'Arcus
@ 2021-09-01 16:05   ` Yuu Yin
  2021-09-18  5:40     ` Timothy
  1 sibling, 1 reply; 5+ messages in thread
From: Yuu Yin @ 2021-09-01 16:05 UTC (permalink / raw)
  To: Timothy; +Cc: emacs-orgmode

Thank you! Would it also be feasible to enable inserting citations after list checkboxes? For example

- [ ] [cite:@author-2021-title]
- [X] [cite:@author-2021-title]
  + [X] [cite:@author-2021-title]

This is super useful for marking which works/documents the user did read and took notes for e.g. a literature review.

Yuu Yin

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐

On Tuesday, August 31st, 2021 at 7:24 AM, Timothy <tecosaur@gmail.com> wrote:

> Yuu Yin yuuyin@protonmail.com writes:
>
> > Invoking ~org-cite-insert~ after list bullets (e.g. ~-~ and ~1.~ )
> >
> > doesn't work.
>
> I did a little test myself, and can confirm that it's not currently
>
> possible to insert a citation immediately after a bullet and space.
>
> This can be checked with `org-cite--allowed-p'. Thinking about this situation, inserting citations should be fine as long as the` point' isn't before or immediately after the bullet itself
>
> (i.e. no space).
>
> I've prepared a patch that fixes this (attached). This is the test case
>
> that I'm adding:
>
> -       ((eq type 'item)
>
>
> -        (> (point) (+ (org-element-property :begin context)
>
>
> -                      (org-get-indentation)
>
>
> -                      1)))
>
>
>
> As this is so simple, if nobody has any comments I'll push this in a
>
> week or so.
>
> ------------------------------------------------------------------------------------
>
> Timothy


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)]
  2021-09-01 16:05   ` Yuu Yin
@ 2021-09-18  5:40     ` Timothy
  0 siblings, 0 replies; 5+ messages in thread
From: Timothy @ 2021-09-18  5:40 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 168 bytes --]

Hi All,

I’ve waited a while and had no feedback, so I’ve just pushed this as f2b6f57,
tweaked to treat checkboxes appropriately too.

All the best,
Timothy

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-09-18  5:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-26 12:18 org-cite: enable inserting citation (org-cite-insert) after list bullet [9.5 (9.5-7c78aca @ /home/yuu/.config/emacs/straight/build/org/)] Yuu Yin
2021-08-31 10:24 ` Timothy
2021-08-31 11:41   ` Bruce D'Arcus
2021-09-01 16:05   ` Yuu Yin
2021-09-18  5:40     ` Timothy

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).