CotEditorの環境設定値(plist)から表示用フォント名を取得するAppleScriptです。
本来であれば、CotEditorのwindowオブジェクト自体に属性値として表示用フォント名がついているのが(GUI側からWindowごとに表示フォントを指定できるので)理想的ですが、そういう機能は実装されていないので、無理やりplistから読み取ってみました。
CotEditorの表示用フォントは、環境設定で指定したものがデフォルトで用いられ、個別のウィンドウごとに任意のフォントを指定できるようになっています。本Scriptで取得できるのは、個別のウィンドウの設定値ではなく、環境設定値のほうです。
defaultsコマンドでplistを読むのはあまりおすすめできない方法ですが、できないよりはマシというところです。
まっさらな(macOSをインストールしたての)環境にCotEditorをインストールして一度も環境設定でフォントを指定していない環境だとエラーになる(項目が存在しない)ので、その場合に備えてエラートラップを仕掛けています。
▲環境設定から表示フォント名を取得して、各行をプロポーショナルフォント使用時の画面描画幅をもとにソートする処理を書いたときに利用
AppleScript名:CotEditorの表示用フォント名を環境設定から取得する |
— – Created by: Takaaki Naganoya – Created on: 2019/10/15 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" use scripting additions use framework "Foundation" set fName to getCotEditorFontName() of me –> "HiraginoSans-W3" –CotEditorのplistから表示用のフォント設定(PostScript名)を取得する on getCotEditorFontName() try set fnRes to do shell script "defaults read com.coteditor.CotEditor | grep fontName" on error return "" –インストール後に表示フォントの環境設定を一度も行っていないときにはエラーになる end try set fName to extractStrFromTo(fnRes, "= \"", "\";") of me return fName end getCotEditorFontName –指定文字と終了文字に囲まれた内容を抽出 on extractStrFromTo(aParamStr, fromStr, toStr) set theScanner to current application’s NSScanner’s scannerWithString:aParamStr set anArray to current application’s NSMutableArray’s array() repeat until (theScanner’s isAtEnd as boolean) set {theResult, theKey} to theScanner’s scanUpToString:fromStr intoString:(reference) theScanner’s scanString:fromStr intoString:(missing value) set {theResult, theValue} to theScanner’s scanUpToString:toStr intoString:(reference) if theValue is missing value then set theValue to "" –>追加 theScanner’s scanString:toStr intoString:(missing value) anArray’s addObject:theValue end repeat if anArray’s |count|() is not equal to 1 then return "" return first item of (anArray as list) end extractStrFromTo |
hiro さんのコメントから、defaultsコマンドのオプション追加でずいぶんと簡潔に書けるようで、書き直しておきました。
AppleScript名:CotEditorの表示用フォント名を環境設定から取得する v2 |
use AppleScript version "2.4" use scripting additions use framework "Foundation" set fName to getCotEditorFontName() of me –> "HiraginoSans-W3" –CotEditorのplistから表示用のフォント設定(PostScript名)を取得する on getCotEditorFontName() try set fnRes to do shell script "defaults read com.coteditor.CotEditor fontName" on error return "" –インストール後に表示フォントの環境設定を一度も行っていないときにはエラーになる end try return fnRes end getCotEditorFontName |
More from my site
(Visited 572 times, 1 visits today)
hiro says:
こんな感じで、もっと簡単にできますよ。
do shell script “defaults read com.coteditor.CotEditor fontName”
Takaaki Naganoya says:
コメントありがとうございます。defaultsコマンド、最近ほとんど使わないので詳細を忘れていました。
たしかにその書き方のほうがシンプルで安全に実行できますね!
hiro says:
defaults の 結果を plutil で xml (plist) か json に変換すれば Objective-C で解析できるようになり、より高度な処理が可能となります。
xml に変換
defaults read com.coteditor.CotEditor | plutil -convert xml1 -o – — –
json に変換
defaults read com.coteditor.CotEditor | plutil -convert json -o – — –
以上追加情報でした。
PS: 本件とは無関係ですが、ASOC による特殊なダイアログはとても便利なので使わせてもらってます。ありがとうございます。