I was looking into that but I didn't think about using a quarto project, 
but wanted to use the "preview" with the name of the file. I think that 
"render" would work as well as I assume tat BBEdit is calling the rendere 
east time the document changes, and there would be no process left over.

But can is the file name of the source file available as a variable?
On Friday, March 25, 2022 at 5:49:07 PM UTC+1 jj wrote:

> Hi Rainer,
>
> I just discovered that you can use the quarto renderer directly from 
> BBEdit.
>
>  1. BBEdit > Preferences > Languages
>     
>     Add a Custom filename extension mapping 
>  
>     Extension       Language
>     ---------       --------
>     .qmd            Markdown
>  
>  2. BBEdit > Preferences > Languages > Language-specific settings > 
> markdown
>  
>     If it does not exist, add the markdown language with the [+] button.
>     Double-click on the Markdown row to open the Markdown configuration 
> pane.
>  [image: Screen Shot 2022-03-25 at 17.20.52.png]
>  3. Go to the Markdown tab and define the quarto render as a custom 
> renderer.
>  
>     Markdown processor: Custom
>     Command: quarto
>     Arguments: render --output -
>     [image: Screen Shot 2022-03-25 at 17.21.07.png]
>  4. From the terminal, create a quarto test project on the desktop and 
> open a *.qmd file:
>  
>     % quarto create-project ~/Desktop/quarto
>     % bbedit ~/Desktop/quarto/quarto.qmd
>     
>  5. Use the BBEdit > Markup > Preview menu item to render your file.
>  
>     Your document should be rendered and re-rendered whenever you save the 
> file in BBEdit.
>
>     ⚠️  Apparently for this to work the *.qmd file has to be in a quarto 
> project directory.
>
>
> HTH
>
> Jean Jourdain
>
> On Friday, March 25, 2022 at 11:45:35 AM UTC+1 Rainer Krug wrote:
>
>> Thanks Jean - `nohup` is the solution.
>>
>> I changed your scripts a bit, so that the starts is restarting quarto if 
>> it is running:
>>
>> #!/bin/bash
>> pid=$(ps -A -mm | grep -v grep | grep "quarto.js preview ${BB_DOC_PATH}" 
>> | awk '{print $1}')
>>
>> if [ -z "$pid" ]; then
>>     pkill -F "$pidfile"
>> fi
>>
>>
>> nohup quarto preview "$BB_DOC_PATH" >& /dev/null &  
>>
>> and to stop:
>>
>> #!/bin/bash
>> pid=$(ps -A -mm | grep -v grep | grep "quarto.js preview ${BB_DOC_PATH}" 
>> | awk '{print $1}')
>> kill -9 $pid
>>
>>
>> Thanks a lot for your input,
>>
>> Rainer
>>
>> On Thursday, March 24, 2022 at 5:03:58 PM UTC+1 jj wrote:
>>
>>> Added a test to 00) Start Quarto Preview.sh so the previewer will not be 
>>> launched more than once.
>>>
>>>     #!/bin/bash
>>>     pid=$(ps -A -mm | grep -v grep | grep 
>>> "/Applications/quarto/bin/quarto.js preview ${BB_DOC_PATH}" | awk '{print 
>>> $1}')
>>>     if [ -z "$pid" ]; then
>>>
>>>         nohup quarto preview "$BB_DOC_PATH" >& /dev/null & 
>>>     fi
>>>
>>> Jean
>>> On Thursday, March 24, 2022 at 4:48:57 PM UTC+1 jj wrote:
>>>
>>>> Hi Rainer,
>>>>
>>>> Good to see your are getting somewhere.
>>>>
>>>> I tested this on my setup and it seems to do what you are after (no pid 
>>>> file needed, no dialog):
>>>>
>>>> Start quarto preview:
>>>>
>>>>     #!/bin/bash
>>>>     nohup quarto preview "$BB_DOC_PATH" >& /dev/null & 
>>>>
>>>> Stop quarto preview:
>>>>
>>>>     #!/bin/bash
>>>>     pid=$(ps -A -mm | grep -v grep | grep 
>>>> "/Applications/quarto/bin/quarto.js preview ${BB_DOC_PATH}" | awk '{print 
>>>> $1}')
>>>>     kill -9 $pid
>>>>
>>>> HTH,
>>>>
>>>> Jean Jourdain
>>>> On Thursday, March 24, 2022 at 11:51:17 AM UTC+1 Rainer Krug wrote:
>>>>
>>>>> OK - Please see the scripts here: 
>>>>> https://github.com/rkrug/R-BBEdit/tree/main/R.bbpackage/Contents/Scripts/Quarto
>>>>>
>>>>> Start quart preview:
>>>>> ```
>>>>> #!/bin/bash
>>>>> quarto preview "$BB_DOC_PATH" & 
>>>>>
>>>>> pid=$(ps -A -mm | grep -v grep | grep "quarto" | grep "preview 
>>>>> ${BB_DOC_PATH}" | awk '{print $1}')
>>>>>
>>>>> pidfile=$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid 
>>>>>
>>>>> echo pid: $pid 
>>>>>
>>>>> echo pidfile: "$pidfile"
>>>>> ```
>>>>>
>>>>> and
>>>>>
>>>>> Stop quarto preview:
>>>>> ```
>>>>> #!/bin/bash
>>>>>
>>>>> pidfile="$(dirname "${BB_DOC_PATH}")/quarto.$BB_DOC_NAME.pid"
>>>>>
>>>>> pkill -F "$pidfile"
>>>>>
>>>>> rm -f "$pidfile"
>>>>> ```
>>>>>
>>>>> They run nicely, only the initial backgrounding is not working and I 
>>>>> have to Cancel the dialog box.
>>>>>
>>>>> Also, I do not see a dialog box in the Stop script.
>>>>>
>>>>> But I am happy with how it works (although automatic backgrounding ad 
>>>>> closing ot=f the dialog box would be nice).
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Rainer
>>>>> On Thursday, March 24, 2022 at 10:30:44 AM UTC+1 Rainer Krug wrote:
>>>>>
>>>>>> Shellcheck is great - thanks. I am using it now!
>>>>>>
>>>>>> Concerning disown: I tried to add the `disown -a` command, but still 
>>>>>> had to quit with the Cancel button.
>>>>>>
>>>>>> On Wednesday, March 23, 2022 at 7:10:23 PM UTC+1 Sam Hathaway wrote:
>>>>>>
>>>>>>> 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/7b97ba16-52bd-4a37-ae36-759c49a4594fn%40googlegroups.com.

Reply via email to