本家 Sphinx Advent Calendar 2012 10日目 ~サクラエディタから make html~

9日目の 波田野さん ( @tcsh )から受け取りました。

ドキュメント作成の歴史を紐解きながら、ドキュメントの構造化~システマティックなドキュメント作成への期待を語られていて興味深く感じました。

さて 本家 Sphinx Advent Calendar 2012 の10日目です。全部俺版とは別に投稿したいと思います。

サクラエディタとマクロ

最近では VimSublime Text 2Emacs だとかが流行っているらしいですが、Windows使ってるなら サクラエディタ でしょう。

仕事柄、色々な現場に入るのですが、どこでも サクラエディタ は必ず使われています。かくいう私も10年程 サクラエディタ を使っておりました。 第3日目 Sphinxドキュメントを書く道具 も参照して頂けると幸いです。

この サクラエディタ 、マクロが PPA と WSHが使えます。 詳しくは こちらへ

makeからブラウザ確認までを1動作で

  • タイトルの通りです。サクラエディタで編集する際に 編集 -> make html -> ブラウザを起動して確認 ..... というサイクルの手間を少し省く事ができます。

使い方

  1. これ をダウンロードし、任意のディレクトリに配置します。

    例:

    C:\tools\Editor\macro\build_and_browsing.vbs
    
  2. 設定 -> 共通設定 -> マクロ タブにて マクロ一覧 にマクロを配置したディレクトリを指定します。

    ../../../_images/make_on_sakura01.png
  3. マクロの登録一覧の空欄の部分を選択します。初めて登録するならば 0 を選択しましょう。

    ../../../_images/make_on_sakura03.png
  4. 名前 に任意の名前を付けます。とりあえず make html としておきましょう。

    ../../../_images/make_on_sakura04.png
  5. File にてドロップダウンメニューからマクロのファイルを選択します。

    ../../../_images/make_on_sakura05.png
  6. 設定 をクリックします。

    ../../../_images/make_on_sakura06.png
  7. マクロ一覧0make html が登録された事を確認します。

    ../../../_images/make_on_sakura07.png
  8. キー割り当て タブをクリックします。

    ../../../_images/make_on_sakura071.png
  9. 種別外部マクロ にします。

    ../../../_images/make_on_sakura08.png
  10. make html をクリックします。

../../../_images/make_on_sakura09.png
  1. 任意のキーを割付して下さい。

    Alt + B を設定する場合

    1. Alt にチェックを入れる

      ../../../_images/make_on_sakura10.png
    2. キー欄をスクロールして Alt+B をクリック

    ../../../_images/make_on_sakura11.png
    1. 割付 を押下します。

    ../../../_images/make_on_sakura12.png
    1. 機能に割り当てられているキーAlt+B が、 機能に割り当てられている機能make html が表示されている事を確認し OK をクリックします。

    ../../../_images/make_on_sakura13.png
  2. プロジェクト 内のreSTファイルをサクラエディタで開き、おもむろに割付したキー(例では Alt+B )を押しましょう。

  3. make html の結果がポップアップされ、編集している reSTファイル のhtmlがWebブラウザで開かれれば成功です。

../../../_images/make_on_sakura14.png

マクロの中身

 1Option Explicit
 2
 3Dim objWshShell
 4Dim objFso
 5Dim objFile
 6Dim inFileName
 7Dim objParentFolder
 8Dim parentfolder
 9Dim makebat
10Dim objFolder
11Dim bat
12Dim WshScriptExec
13
14Set objWshShell = CreateObject("WScript.Shell")
15Set objFso = CreateObject("Scripting.FileSystemObject")
16
17Function getParentFolder()
18    inFileName = ExpandParameter("$F")
19    If objFso.FileExists(inFileName) = True Then
20        Set objFile = objFso.GetFile(inFileName)
21        getParentFolder = objFile.ParentFolder
22    End If
23End Function
24
25
26Function existsMakebat(parentfolder)
27    bat = true
28    Do until (bat = false)
29        makebat = parentfolder & "\make.bat"
30        set objFolder = objFso.GetFolder(parentfolder)
31        If objFso.FileExists(makebat) Then
32            objWshShell.CurrentDirectory = parentfolder
33            existsMakebat = makebat
34            exit function
35        ElseIf objFolder.IsRootFolder Then
36            existsMakebat = false
37            bat = false
38            exit function
39        Else
40            parentfolder = objFolder.ParentFolder
41        End If
42    loop
43End Function
44
45
46Function main()
47    parentfolder = getParentFolder
48    makebat = existsMakebat(parentfolder)
49    if makebat = false Then
50        msgbox "makeに失敗しました", 16, "Result"
51    Elseif makebat = null Then
52        msgbox "makeに失敗しました", 16, "Result"
53    Else
54        Set WshScriptExec = objWshShell.Exec("make.bat html")
55        Do While (WshScriptExec.Status = 0)
56            objWshShell.run "ping -n 2 localhost", 0, True
57        loop
58        objWshShell.run("_build\html\" & ExpandParameter("$g") & ".html")
59        msgbox WshScriptExec.StdOut.ReadAll, 64, "Result"
60    End If
61End Function
62
63
64main
65
66
67Set objWshShell = nothing
68Set objFso = nothing
69Set objFile = nothing
70Set objFolder = nothing
71Set WshScriptExec = nothing

さ~て、明日のSphinxアドベントカレンダーは?

  • 明日は @grimroseさん担当 です。手順書を作成した時の過程を書かれるそうです。楽しみですね!