1-- In this file, change "/path/to/" to the path where you installed clang-format 2-- and save it to ~/Library/Application Support/BBEdit/Scripts. You can then 3-- select the script from the Script menu and clang-format will format the 4-- selection. Note that you can rename the menu item by renaming the script, and 5-- can assign the menu item a keyboard shortcut in the BBEdit preferences, under 6-- Menus & Shortcuts. 7on urlToPOSIXPath(theURL) 8 return do shell script "python -c \"import urllib, urlparse, sys; print urllib.unquote(urlparse.urlparse(sys.argv[1])[2])\" " & quoted form of theURL 9end urlToPOSIXPath 10 11tell application "BBEdit" 12 set selectionOffset to characterOffset of selection 13 set selectionLength to length of selection 14 set fileURL to URL of text document 1 15end tell 16 17set filePath to urlToPOSIXPath(fileURL) 18set newContents to do shell script "/path/to/clang-format -offset=" & selectionOffset & " -length=" & selectionLength & " " & quoted form of filePath 19 20tell application "BBEdit" 21 -- "set contents of text document 1 to newContents" scrolls to the bottom while 22 -- replacing a selection flashes a bit but doesn't affect the scroll position. 23 set currentLength to length of contents of text document 1 24 select characters 1 thru currentLength of text document 1 25 set text of selection to newContents 26 select characters selectionOffset thru (selectionOffset + selectionLength - 1) of text document 1 27end tell 28