emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Tianshu Wang <wang@tianshu.me>
To: emacs-orgmode@gnu.org
Subject: Re: Lazy load of org-protocol (Max Nikulin)
Date: Sun, 06 Feb 2022 10:40:24 +0800	[thread overview]
Message-ID: <m2a6f4d8b7.fsf@tianshu.me> (raw)
In-Reply-To: <mailman.61.1644080429.31515.emacs-orgmode@gnu.org>


I have a similar demand that I implemented through the following and it
is currently working well.

(defadvice server-execute (before enable-org-protocol activate)
  (unless (featurep 'org-protocol) (require 'org-protocol)))

emacs-orgmode-request@gnu.org writes:

> Send Emacs-orgmode mailing list submissions to
> 	emacs-orgmode@gnu.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
> 	https://lists.gnu.org/mailman/listinfo/emacs-orgmode
> or, via email, send a message with subject or body 'help' to
> 	emacs-orgmode-request@gnu.org
>
> You can reach the person managing the list at
> 	emacs-orgmode-owner@gnu.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Emacs-orgmode digest..."
>
>
> Today's Topics:
>
>    1. Re: [BUG] loading ol-gnus returns an error [9.5
>       (release_9.5-194-gdb302d @
>       /home/oub/emacs/site-lisp/packages/org/)] (Ihor Radchenko)
>    2. [SOLVED] (was: [BUG] loading ol-gnus returns an error [9.5
>       (release_9.5-194-gdb302d @
>       /home/oub/emacs/site-lisp/packages/org/)]) (Uwe Brauer)
>    3. Re: [BUG] org-bibtex-yank does not recognise bibtex entry
>       [9.6 (9.6-??-e7ea951 ] (Ihor Radchenko)
>    4. Re: Problem with org-babel and geiser (Ihor Radchenko)
>    5. Lazy load of org-protocol (Max Nikulin)
>    6. Re: Shell SRC blocks under Windows (H. Dieter Wilhelm)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Sat, 05 Feb 2022 17:37:01 +0800
> From: Ihor Radchenko <yantar92@gmail.com>
> To: Uwe Brauer <oub@mat.ucm.es>
> Cc: emacs-orgmode@gnu.org
> Subject: Re: [BUG] loading ol-gnus returns an error [9.5
> 	(release_9.5-194-gdb302d @ /home/oub/emacs/site-lisp/packages/org/)]
> Message-ID: <87tudd64ea.fsf@localhost>
> Content-Type: text/plain
>
> Uwe Brauer <oub@mat.ucm.es> writes:
>
>> Running a more or less recent master commit of org-mode and GNU emacs
>> when loading the ol-gnus file I receive the following error
>>
>>
>> Debugger entered--Lisp error: (void-variable file)
>>   (load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el")
>>   eval((load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el") nil)
>>   elisp--eval-last-sexp(nil)
>>   eval-last-sexp(nil)
>>   funcall-interactively(eval-last-sexp nil)
>>   call-interactively(eval-last-sexp nil nil)
>>   command-execute(eval-last-sexp)
>
> When does the error occur? Judging from the backtrace, you tried to
> evaluate some kind of elisp expression manually with eval-last-sexp. The
> expression appears to be
> (load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el")
>
> Indeed, file is undefined. I am not sure what Org has to do with the
> error.
>
> Best,
> Ihor
>
>
>
> ------------------------------
>
> Message: 2
> Date: Sat, 05 Feb 2022 11:30:08 +0100
> From: Uwe Brauer <oub@mat.ucm.es>
> To: emacs-orgmode@gnu.org
> Subject: [SOLVED] (was: [BUG] loading ol-gnus returns an error [9.5
> 	(release_9.5-194-gdb302d @ /home/oub/emacs/site-lisp/packages/org/)])
> Message-ID: <87y22pk3m7.fsf_-_@mat.ucm.es>
> Content-Type: text/plain; charset="utf-8"
>
>>>> "IR" == Ihor Radchenko <yantar92@gmail.com> writes:
>
>> Uwe Brauer <oub@mat.ucm.es> writes:
>>> Running a more or less recent master commit of org-mode and GNU emacs
>>> when loading the ol-gnus file I receive the following error
>>>
>>>
>>> Debugger entered--Lisp error: (void-variable file)
>>> (load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el")
>>> eval((load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el") nil)
>>> elisp--eval-last-sexp(nil)
>>> eval-last-sexp(nil)
>>> funcall-interactively(eval-last-sexp nil)
>>> call-interactively(eval-last-sexp nil nil)
>>> command-execute(eval-last-sexp)
>
>> When does the error occur? Judging from the backtrace, you tried to
>> evaluate some kind of elisp expression manually with eval-last-sexp. The
>> expression appears to be
>> (load file "/home/oub/emacs/site-lisp/packages/org/ol-gnus.el")
>
> Shame on me: it should be load-file
>
> I am very sorry. Forget it
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: smime.p7s
> Type: application/pkcs7-signature
> Size: 5673 bytes
> Desc: not available
> URL: <https://lists.gnu.org/archive/html/emacs-orgmode/attachments/20220205/d40c7d0c/attachment.bin>
>
> ------------------------------
>
> Message: 3
> Date: Sat, 05 Feb 2022 19:22:59 +0800
> From: Ihor Radchenko <yantar92@gmail.com>
> To: Günter Lichtenberg <mail@guenterlichtenberg.de>
> Cc: emacs-orgmode@gnu.org
> Subject: Re: [BUG] org-bibtex-yank does not recognise bibtex entry
> 	[9.6 (9.6-??-e7ea951 ]
> Message-ID: <87r18h5zho.fsf@localhost>
> Content-Type: text/plain; charset=utf-8
>
> Günter Lichtenberg <mail@guenterlichtenberg.de> writes:
>
>> In short:
>> Expected: Bibtex text is yanked as an orgmode entry
>> Actually Happening: Error thrown, nothing yanked
>
> Thanks for the report!
> Fixed on bugfix via 7543da99.
>
> Best,
> Ihor
>
>
>
> ------------------------------
>
> Message: 4
> Date: Sat, 05 Feb 2022 19:39:16 +0800
> From: Ihor Radchenko <yantar92@gmail.com>
> To: Bob Heffernan <bob.heffernan@gmail.com>
> Cc: emacs-orgmode@gnu.org
> Subject: Re: Problem with org-babel and geiser
> Message-ID: <87o83l5yqj.fsf@localhost>
> Content-Type: text/plain; charset="utf-8"
>
> Bob Heffernan <bob.heffernan@gmail.com> writes:
>
>> Thank you for your response.
>> The patch you linked does seem to be intended to fix this issue.
>>
>> However, I have no experience with applying a patch (to Emacs or anything else).
>> On my system, ob-scheme.el.gz can be found at
>> /usr/share/emacs/27.2/lisp/org
>> can I uncompress the file, patch that, then compress again?
>>
>> Or, would I need to download the Emacs source, apply the patch and then recompile?
>
> It's not a good idea to modify Org packaged together with Emacs. For
> testing, you can just use the attached version of ob-scheme.el. Load
> your Emacs and Org mode, open the attached ob-scheme.el, and run M-x
> eval-buffer. That should be sufficient to test the proposed patch on
> your side.
>
> If the patch solves the problem you are experiencing, let us know. I
> will then apply the proposed patch upstream.
>
> Note that even if I apply the patch, it will only be available on the
> latest version of Org mode (Org 9.5.2). It is _not_ what is shipped
> together with your Emacs. You will need to upgrade your Org mode using
> M-x package-install. See
> https://orgmode.org/manual/Installation.html#Installation for details.
>
> Best,
> Ihor
>
> -------------- next part --------------
> An embedded and charset-unspecified text was scrubbed...
> Name: ob-scheme.el
> URL: <https://lists.gnu.org/archive/html/emacs-orgmode/attachments/20220205/50e255a6/attachment.ksh>
>
> ------------------------------
>
> Message: 5
> Date: Sat, 5 Feb 2022 18:54:37 +0700
> From: Max Nikulin <manikulin@gmail.com>
> To: emacs-orgmode@gnu.org
> Subject: Lazy load of org-protocol
> Message-ID: <stlohv$17d8$1@ciao.gmane.io>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
> Hi.
>
> I would prefer to avoid
>     (require 'org-protocol)
> in emacs init file and to postpone loading till invocation of
> emacsclient with org-protocol URI.
>
> The problem is a hack in org-protocol. URIs are actually treated as
> (relative) file names and magic is achieved in an advice for
> `server-visit-files' function. So the advice must be installed in advance.
>
> My first idea was to avoid such magic and to create autoload function
> org-protocol-from-argv with body similar to that advice. If it were
> possible to get arguments from `command-line-args-left' then invocation
> would look like
>
>     emacsclient --eval '(org-protocol-from-argv)'
> 'org-protocol:/store-link?url=u1&title=t1'
>
> Unfortunately it is against design of emacs server protocol. If --eval
> option is given than everything other is considered as independent
> expressions. At the lower level there is no way to transfer `argv` as a
> list from client to server process.
>
> It seems, it works if I add another advice to init.el that loads
> org-protocol on demand:
>
> (defadvice server-visit-files (before org-protocol-lazy-load activate)
>    (and (not (featurep 'org-protocol))
>         (memq nil
> 	     (mapcar (lambda (loc)
> 		       ;; loc: (file-name . (line . column))
> 		       (not (string-match-p "\\(?:^\\|[/\\\\]\\)org-protocol:" (car
> loc))))
> 		     (ad-get-arg 0)))
>         (progn
> 	 (require 'org-protocol)
> 	 ;; copy of org-protocol-detect-protocol-server advice,
>           ;; move to a dedicated function
> 	 (let ((flist (if org-protocol-reverse-list-of-files
> 			  (reverse  (ad-get-arg 0))
> 			(ad-get-arg 0)))
> 	       (client (ad-get-arg 1)))
> 	   (catch 'greedy
> 	     (dolist (var flist)
> 	       ;; `\' to `/' on windows.  FIXME: could this be done any better?
> 	       (let ((fname  (expand-file-name (car var))))
> 		 (setq fname (org-protocol-check-filename-for-protocol
> 			      fname (member var flist)  client))
> 		 (if (eq fname t) ;; greedy? We need the t return value.
> 		     (progn
> 		       (ad-set-arg 0 nil)
> 		       (throw 'greedy t))
> 		   (if (stringp fname) ;; probably filename
> 		       (setcar var fname)
> 		     (ad-set-arg 0 (delq var (ad-get-arg 0))))))))))))
>
> I hope, copy of original advice may be avoided by moving its body to a
> separate function in org-protocol.
>
> Do you have have better ideas how to avoid eager loading of org-protocol
> from init file?
>
>
>
>
> ------------------------------
>
> Message: 6
> Date: Sat, 05 Feb 2022 16:48:02 +0100
> From: "H. Dieter Wilhelm" <dieter@duenenhof-wilhelm.de>
> To: Michael Powe <powem@ctpowe.net>
> Cc: emacs-orgmode@gnu.org
> Subject: Re: Shell SRC blocks under Windows
> Message-ID: <xm46pmo1gvrh.fsf@duenenhof-wilhelm.de>
> Content-Type: text/plain
>
> Michael Powe <powem@ctpowe.net> writes:
>
>> On 2/4/2022 15:15, H. Dieter Wilhelm wrote:
>>> Hello
>>>
>>> I installed the software distribution MSYS2 https://www.msys2.org/.  And
>>> I'd like to call its various shells in org src blocks.  First I tried to
>>> set explicit-shell-file-name but then my LaTeX exports don't work any
>>> longer.
>>>
>>> Is is it possible to extend org-mode's src blocks with
>>> org-babel-shell-names to use either MSYS2 or MinGW shells (instead of
>>> cmd.exe)?  Unfortunately ob-shell.el doesn't guide me further and I
>>> can't find examples or the respective lisp files on how to define the
>>> execution functions.
>>>
>>> GNU Emacs 28.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30,
>>> cairo version 1.15.10) of 2022-01-14
>>>
>>> Org mode version 9.4.6 (9.4.6-13-g4be129-elpaplus @
>>> /home/dieter/.emacs.d/elpa/org-plus-contrib-20210920/)
>>
>> I'm not aware that I did anything special to get these results, except
>> add `(shell . t)` to `org-babel-load-languages`. I mean, it is entirely
>> possible that I did, in some other context. I think it's just a matter
>> of having bash in your path.
>
> Yes, you are right, when using
>
>> #+begin_src sh
>
> It seems that I'm also running some bash shell! :-) Previously I was
> using the src block in this way:
>
>   #+begin_src shell
>
> and here the shell seems to be com.exe.
>
> But I'm not sure if I'm halfway there with "sh"?  I need to run the
> following MSYS2 command AND switch between two arguments (for building
> Emacs).
>
>   \MSYS2\msys2_shell.cmd -mingw64
>
> and
>
>   \MSYS2\msys2_shell.cmd -msys.
>
> How could I achieve this within a src block?
>
> Thanks
>
>
>
> End of Emacs-orgmode Digest, Vol 192, Issue 6
> *********************************************


--
Tianshu Wang


           reply	other threads:[~2022-02-06  7:14 UTC|newest]

Thread overview: expand[flat|nested]  mbox.gz  Atom feed
 [parent not found: <mailman.61.1644080429.31515.emacs-orgmode@gnu.org>]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m2a6f4d8b7.fsf@tianshu.me \
    --to=wang@tianshu.me \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).