2

TextWrangler (A Mac アプリ) から Lilypond ファイルをタイプセットできるシェル スクリプトが必要です。これまでのところ、私はこれを思いつきました:

#!/bin/sh
/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1

もちろん、これは機能しません。(それが私が Stack Overflow にいる理由です。)

TextWrangler のシバン メニューからそのスクリプトを実行すると、次の出力が得られます。

/Applications/LilyPond.app/Contents/Resources/bin/lilypond: option faultpaper,
--output'' requires an argument

何を与える?

Snow Leopard、TextWrangler、Lilypond を実行しています。助けていただければ幸いです。

4

2 に答える 2

1

編集: TextWrangler によって起動された Unix スクリプトでドキュメント パスを取得する方法を見つけたので、これを書き直しました。

# ! どのメニューを使用しようとしているのかわかりません。ただし、LilyPond ドキュメントを変換する Unix スクリプトを作成しようとしているように見えます。

エラーが示唆しているように、残念ながら Unix スクリプトには引数がまったく与えられていないため、$1空になります。ただし、最近のバージョンの BBEdit/TextWrangler では、スクリプトを実行する前にいくつかの環境変数が設定されていることがわかりました ( BBEdit 9.3 リリース ノートを参照し、変更点までスクロールしてください)。特に、次の環境変数を使用できます。

BB_DOC_PATH            path of the document (not set if doc is unsaved)

したがって、このスクリプトをに保存すると、準備~/Library/Application Support/TextWrangler/Unix Support/Unix Scripts完了です。

これを実行しようとしているがうまくいかない他の方法:

  • Unix フィルタの使用:これを行うには、ドキュメント内のすべての LilyPond コードを選択する必要があり、スクリプトに引数として渡される一時ファイルに保存されます。OK、これで入力ファイル名を取得できますが、手間がかかります。しかし、そのスクリプトの出力 (つまり、LiiyPond コンパイラの出力) は、デフォルトで、あなたが選択したものを置き換えます。仕事のための間違ったツール。
  • 使用#! → LilyPond ファイルで実行:これには、ファイルの先頭に行を追加し、スクリプト インタープリターを選択するためのガイドとして#!使用して、TextWrangler にスクリプトとしてファイルを実行させようとすることが含まれます。#!残念ながら、この#!行は特定のスクリプト言語でしか機能せず、LilyPond (スクリプト言語ではない) はその言語の 1 つではありません。これは Peter Hilton がやろうとしていることです。彼が指摘しているように、#!を追加しようとすると LilyPond 構文エラーが発生します。LilyPond ファイルの先頭に行を追加します。(興味のある方は、技術的に# を取得する方法があります! → 実行これは、ヒアドキュメント構文を使用して、実行可能なシェルまたは perl スクリプト内に LilyPond コードを埋め込むことです。しかし、これはすぐに手に負えなくなるひどいハックです。)

上記のリンクのスクリプトにはいくつかの制限があります。

  • LilyPond を実行する前に文書を保存したかどうかはチェックしません。LilyPond を実行する前に TextWrangler が自動的に保存されると便利です。
  • テキストのスニペットや保存されていないドキュメントを入力として受け取ることはできず、保存されたドキュメントのみを使用できます。

AppleScript を使用することで、これらに対処するより洗練されたソリューションを作成できます。これを行う 2 つの方法:

  • TextWrangler に固有のスクリプトを作成し、 にドロップし~/Library/Application Support/TextWrangler/Scriptsます。その後、AppleScript メニュー (奇妙なスクロール S) に表示されます。または、 Window → Palettes → Scriptsを開くことでアクセスできます。2 人の人々がこの道をたどり、その結果を共有したと思います。
  • Mac OS サービスを作成します。これは、ほぼすべてのテキスト エディターで再利用できるメソッドになる可能性があります。これは、NeXT 時代に Common Music ファイルをコンパイルするために使用した方法であり、その優雅さを証明することができます。残念ながら、これに関する最新の良い例はありません。
于 2012-01-06T08:52:29.203 に答える
0

良い質問。これを行うと、実際に私のシステムで Lilypond が実行されます。

#!/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1

…しかし は行コメント文字ではないため失敗し#、Lilypond は行を解析しようとします。

TextWrangler が「shebang」行を見つけられないため、ブロック コメントで囲むと失敗します。

%{
#!/Applications/LilyPond.app/Contents/Resources/bin/lilypond -o $1
%}

別の方法として、キーボード ショートカットで実行できるように定義できるSmultron 3を使用することもできます。commands

于 2011-09-26T10:14:54.413 に答える