I don’t recall the details of this, but you may need to disown the quarto process so that bash doesn’t wait around for it to finish before exiting.

P.S.: Shell scripting is a minefield and I suggest taking a look at [shellcheck](https://www.shellcheck.net/) if you haven’t already.

Cheers,
-sam

On 23 Mar 2022, at 4:55, Rainer Krug wrote:

Thanks Jean - these sound interesting options and definitely worth
following. But thew (especially the launch agent approach) made me
thinking: what if I background the quarto process?

I have now written the following script to start the previewer:

#!/bin/bash

quarto preview $BB_DOC_PATH &
pid=$!
pidfile=$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid
echo pid: $pid
echo pidfile: $pidfile
echo $pid > $pidfile

But it has two problems:

1) I still have to click "cancel", but the previewer continues running,
which is nice.
2) the file .pid does not contain the pid of the quarto process

The second one, I will solve with quarto, and the first one, I can live with. It would be nice, to have a message pops up which tells the user to
close the dialog once the preview is visible?

Thanks,

Rainer


On Tuesday, March 22, 2022 at 8:12:56 PM UTC+1 jj wrote:

Hi Rainer,

I suspect that BBEdit's Script menu will always be blocking because as far as I know it uses an XPCService. (This should be checked with Bare Bones
support though!)

I think of 2 other options that you could try:


*Option 1. Use the menubar Script Menu.*
• Activate the menubar Script Menu in Script Editor > Preferences >
General > Script Menu.

  • Create BBEdit's application scripts directory :

    % mkdir -p ~/Library/Scripts/Applications/BBEdit

• Scripts placed in this directory should appear in the menubar Script Menu when BBEdit is the frontmost application. Generally they act as if
they where run from the Script Editor.

• Sometimes this allows you to do things you couldn't do from BBEdit's
Script menu (like restarting BBEdit for example).

*Option 2. Create a launchAgent that watches the folder containing your quarto files and that executes a script whenever a file is saved and thus refreshes the preview. *(Replace '<rainer>' with your user account in the
below paths.)

• Save this launchAgent in ~/Library/LaunchAgents/quarto_watcher.plist

        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
    http://www.apple.com/DTDs/PropertyList-1.0.dtd>
        <plist version="1.0">
        <dict>
            <key>Label</key>
            <string>quarto_watcher</string>
            <key>ProgramArguments</key>
            <array>
                <string>/Users/<rainer>/Library/Application
Support/BBEdit/Scripts/quarto_previewer.sh</string>
            </array>
            <key>WatchPaths</key>
            <array>
                <string>/Users/<rainer>/Documents/Quarto</string>
            </array>
        </dict>
        </plist>

  • Save this script in ~/Library/Application
Support/BBEdit/Scripts/quarto_previewer.sh and give it the execution
permission.

        #!/usr/bin/env sh

DOCPATH=$(osascript -e 'tell application "BBEdit" to (URL of first
document) as string')
        EXTENSION="${DOCPATH##*.}"

        #echo $DOCPATH
        #echo $EXTENSION

        if [ $EXTENSION == "quarto" ]; then
            /usr/bin/open -a quarto "$DOCPATH"
        fi

• Create the /Users/<rainer>/Documents/Quarto directory. (Or some other
directory and change the launchAgent accordingly.)

  • Start the launchAgent in the terminal with:

     % launchctl load
/Users/<rainer>/Library/LaunchAgents/quarto_watcher.plist

  • Now whenever a file with extension ".quarto" is saved in the
~/Documents/Quarto directory, the quarto_previewer.sh script should
execute and open or reload this file in quarto.

HTH

Jean Jourdain

On Tuesday, March 22, 2022 at 2:52:19 PM UTC+1 Rainer Krug wrote:

I have an using quarto <https://quarto.org> to render technical
documents (it is very nice!) and writing them in BBEdit.

Now I have a script which I want to start from BBEdit as I do with all scripts, but this script runs continuously and updates the preview. I would very much like to have this in BBEdit (in the Scripts Menu), but when I
start this script, it blocks BBEdit.

Is there a way of having that dialog non-blocking? Or is there another way of running that script (at the moment I am running it from a different
terminal)?

Thanks.

--
This is the BBEdit Talk public discussion group. If you have a feature request or need 
technical support, please email "[email protected]" rather than posting here. 
Follow @bbedit on Twitter: <https://twitter.com/bbedit>
--- You received this message because you are subscribed to the Google Groups "BBEdit Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/bbedit/D0C60BA9-F758-41FD-BC56-1D4222E07CE5%40munkynet.org.

Reply via email to