2009-12-06 7 views
5

this questionの回答は問題の中心には達しませんでした。 CLIベースのPythonプログラムでは、ユーザーがファイルを編集してからプログラムに戻ることができるようにしたいと考えています。帰国する前に、彼らは彼らの編集をキャンセルすることができるようにします。これは、Subversionのコミットノート編集機能のように感じるはずです。Python CLIプログラムの内部からデフォルトのエディタをインテリジェントに起動しますか?

このタイプのタスクの現在のベストプラクティスは何ですか?

+0

ユーザーは、プラグイン(またはプログラム全体!)を編集して、その編集内容を破棄したり、それらを「コミット」したり、同時に新しいプログラムをリロードしたりすることができます。これはあなたが達成しようとしているものですか? – badp

答えて

2

Subversionなどは、$ EDITOR環境変数を使用してテキストファイルの編集に使用するプログラムを決定します。もちろん、$ EDITORは、シェル内のunixyプラットフォーム上にいる場合にのみ機能します。 Windows(cmd /c start tempfile.txt)またはMac OS X(open tempfile.txt)では何か別の処理を行う必要があります。

しかし、これは本質的にあなたの他の質問に対する答えと関連する答えです。

編集を「キャンセル」できるようにしたい場合は、ファイルの一時的なコピーを作成し、そのエディタを起動します。プログラムは、一時ファイルの内容を実際のファイルにコピーしたり、ユーザーがキャンセルした場合は、そのファイルをコピーしたりすることはできません。これは基本的にSubversionがそれを行う方法です。

10

Pythonで書かれたMercurialのソースを調べることができます。

これらは、環境変数HGEDITOR,VISUAL、およびEDITORの値を読み込み、デフォルトでviにします。次にos.systemを使用してtempfile.mkstempで作成した一時ファイルでエディタを起動します。エディタが終了すると、ファイルが読み込まれます。実際のコンテンツがある場合は操作が続行され、それ以外の場合は中止されます。

Mercurialがどのように機能しているかを確認したい場合は、詳細はui.pyutil.pyです。

関連する問題