FoldingText

FoldingTextによる「優先度で順次絞り込み」するタスクリスト

優先度の範囲指定をしたい

世の中にタスク管理サービス・アプリは数多あり、その中には、タスクの優先度管理ができるものもあります。

で、優先度が1とか10とか、(A)とか(F)とかするわけですが、優先度3以上といった条件で絞り込みができるものはあまりありません。

そこで、FoldingTextを利用して、優先度による順次絞り込みを行う方法を考えてみました。

インデントで優先度を表現する

以下のようなtodo.txtがあるとします。

スクリーンショット

今回は単純なMarkdownリストで、@doneタグで完了管理をしていますが、todo modeとかGithubフォーマットのタスクリストでもいいです。とにかく、優先度が低いものはインデントを深くすることにします。

なお、todo modeを利用する場合、インデントがちと面倒です。

ここで、1行目(全体の親アイテム)でCollapse by Levelを行うことで、優先度の低いものから順に隠していくことができます。

スクリーンショット

スクリーンショット

FoldingTextの操作方法全般については、以下の記事をご参照ください。

FoldingTextで編集中のファイルを削除する

FoldingTextで編集中のファイルをゴミ箱に入れたいことけっこうあるんだけどなーFinderで開いて捨てるのめんどいなーと思っていたのですが。

1.メニューバーから

Move to…

スクリーンショット

Trash

スクリーンショット

Move

スクリーンショット

やったぜ。

これで削除できました。あとはウインドウを閉じればOK。

スクショにも写っているように、「システム環境設定>キーボード」でショートカットキーを割り振っておくともっと楽です。

2.Alfred Workflow(AppleScript)

とはいえ、まだ微妙にかったるいのでAppleScriptでやります。

スクリーンショット

AppleScriptの内容は以下の通り。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
on alfred_script(q)
tell application "FoldingText"
set lstDocs to documents -- 開いているドキュメント一覧を取得
set {strName, dFile} to {name, file} of item 1 of lstDocs --最前面ドキュメントの名前・ファイルを取得
close window 1 -- 最前面ウインドウを閉じる
end tell
---- Delete file
tell application "Finder"
delete dFile -- ファイルを削除
end tell
do shell script "echo deleted: " & strName -- 名前を含む通知テキストをエコー
end alfred_script

(追記)こっちでもいけます。FoldingTextから取得できるファイルパスをシェル(POSIX)式のファイルパスに変換してrm。こっちのが速い。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
on alfred_script(q)
tell application "FoldingText"
set lstDocs to documents -- 開いているドキュメント一覧を取得
set {strName, dFile} to {name, file} of item 1 of lstDocs --最前面ドキュメントの名前・ファイルを取得
close window 1 -- 最前面ウインドウを閉じる
end tell
---- Delete file
set dFile to POSIX path of dFile -- ファイルパスをシェル方式に変換
do shell script "rm " & quoted form of dFile --ファイルを削除。パスにスペースを含む場合に備えてクォート付きにする
do shell script "echo deleted: " & strName -- 通知テキストをエコー
end alfred_script

無料Markdownプレビューアプリ「Marko」でFoldingTextからプレビューしてみた

Marked 買いたくないねん!

この世の中にはMarkdownドキュメントを書くときプレビュー派と生派がいるのですが、私は後者のシンタックスハイライト分派です。

Markdownというのはソースのままでも読みやすいようにうんぬんかんぬんというのもあるのですが、それよりプレビューとソースの間で首振りながら執筆ってシャビかと思うので。

しかし、たまーにはプレビューしたいときもあります。特にHTMLタグ直書きしなきゃいけないとき。しかしたまーにしかないので、そのためにMarked買いたくないのです。というかこの手のアプリに課金することが何かに負けたように感じる。

Markoあった!


ver. 1.2 - 無料( 仕事効率化 )
TXTLABS

無料で似たようなことできるやつおらんのかと思ったらおった。

こいつでMarkdownファイル開くとプレビューしてくれて、HTMLとかで保存もできる模様。

FoldingTextからAlfred Workflowで開いてみた

上記ページにあるFoldingText Workflowのうち、ft:markedを書き換えたら普通に動きました。


property pTitle : "Open FoldingText file in Marked"
property pVer : "0.02"
property pAuthor : "Robin Trew"

property pblnPositionWindows : true -- Set this to false to disable the window positioning at the end of the script

on alfred_script(q)
    tell application "FoldingText"
        set lstDocs to documents
        if lstDocs = {} then return
        set {strName, oFile} to {name, file} of item 1 of lstDocs
        activate
        if oFile is missing value then
            display dialog "The document: " & return & return & strName & ¬
                return & return & "needs to be saved before Marked can preview it." buttons {"OK"} ¬
                default button "OK" with title pTitle & "  ver. " & pVer
            return
        end if
    end tell

    ---- Marked
    tell application "Marko.app"
        activate
        open oFile
    end tell

    -- Try to position windows left and right (to disable this, if it doesn't suit your workflow or your screen setup,
    -- set pblnPositionWindows at the top of the script to false )
    if pblnPositionWindows then
        set lngWidth to (do shell script "system_profiler SPDisplaysDataType | awk '/Resolution/{print $2}'")
        set lngHeight to (do shell script "system_profiler SPDisplaysDataType | awk '/Resolution/{print $4}'")
        set lngHalf to lngWidth / 2
        set lngHeight to lngHeight - 22

        tell application id "sevs"
            tell process "Marko" to tell window 1 to set {position, size} to {{lngHalf, 22}, {lngHalf, lngHeight}}
            tell process "FoldingText" to tell window 1 to set {position, size} to {{0, 22}, {lngHalf, lngHeight}}
        end tell
    end if
end alfred_script

カレントファイルをMarkoで開いた後、ウインドウの左半分にFoldingText、右半分にMarkoを配置します。要はAppleScriptからカレントファイルを取得して渡しているだけですね。

なお、下記のスクリプトも見つけましたが、古いのか、ウインドウ移動ができないようです。(Mac OS X 10.9.3)

色んなエディタでMarkedでプレビューするよ系のスクリプトが公開されてますが、全部置き換えられるんじゃないでしょうか。

なおMarkedはこちら。


ver. 2.4 (846) - ¥1,400( 仕事効率化 )
Brett Terpstra

FoldingTextでToDoリストをインデントする方法


ver. 2.0.2 - ¥3,000( 仕事効率化 )
Hog Bay Software

FoldingTextにはTodo modeというものがあり、以下のような記法でチェックボックス付きのタスクリストを作成することができます。

1
2
3
今日のタスク.todo
- aaa
- bbb

それがこんなふうに表示されます。

スクリーンショット

要するに、なんとかかんとか.todoという行の下にMarkdownフォーマットのリストを書けばよいのですが、このリストをインデントすると、チェックボックスが付きません。

こういうのはダメだということです。

1
2
3
4
今日のタスク.todo
- aaa
- bbb
- ccc

Githubスタイルのタスクリストも解釈できるので、そっちならインデントできるのですが、そもそもチェックボックスが付きません。

スクリーンショット

この完了を示すx書いてやらないといけないので、Githubとかに書くための下書きとしてはともかく、FoldingText上で使うのはちょっとどうかという感じです。

どうにかショートカットキーで完了にできないか考えてみましたが、無理でした。AppleScriptでできそうな気はするのですが。

フォーラムで教えてもらった

要するに、「親」になるアイテムに全部.todoを書けばいいわけです。

1
2
3
4
5
今日のタスク.todo
- 筋トレ
- 買い物.todo
- ゴミ袋
- 歯ブラシ

これは、以下のように表示され、クリックして完了できます。

スクリーンショット

ちょっとめどいのは確かですが、いちおうできました。

ともーじゃん?

いやいや、昔はフツーにインデントできたし!

かつての姿

iPhoneの写真漁ってたら出てきた! そうだよなあ、できたよなあ! できたほうが便利なのになあ、なんでできなくなったのかなあ……

(2014-12-13)やっぱできるじゃん!

上記記事を見てやってみたら普通にできました。なんだったんだろう……。

Alfred2が謎のキーリマップを見せて泣いた

Alfred2を導入した

昨日書きましたが、Alfred2のPowerpackがずっと求めていたものであることが分かり、色々追記したいことがあったのでFoldingTextでブログ記事を書き直していました。

ところが、FoldingTextの一部キーバインドが機能しません。なにをしても治らず、なにが原因なのかと頭を抱えていたところ、Alfred2を終了したらあっさりと解決したのです。

症状

FoldingTextのデフォルトキーバインドでは、⌥⌘]でカーソル行(または選択行)を下に移動する機能(メニューバーでいう「Organize>Move Down」)が割り当てられています。このキーバインドが機能しなくなりました。⌥⌘[(Organize>Move Up)は正常です。

当然、Alfred2の各種呼び出しキー、登録したワークフローのホットキーでも⌥⌘]は利用していません。というか、別にAlfred2が立ち上がったりするわけでもなく、テキスト選択状態ではなぜかメニューバーのEditが反応しているのだからワケが分かりません。言うまでもなく、Editメニューにこのキーバインドが割り当てられた項目はありません。

その様子をGifアニメにしてみました。

Alfred1の場合(正常)

Alfred1の場合(正常)

Alfred2の場合(症状発生)

Alfred1の場合(正常)

再現条件

一度Alfred2をAppCleanerでアンインストールしたところ、症状は解消しました。

しかし、Powerpackを有効化した時点で、再現することが分かりました。

Powerpackインストール後も、メニューバーからトラックパッドで実行する限りはMove Downできます。

キーがリマップされている!

メニューバーをクリックしたらいいのだから、BetterTouchToolで⌥⌘]にメニューアイテムの実行を割り当ててやろうと設定に取り掛かったところ、原因らしきものに気付きました。

というのも、BetterTouchToolで⌥⌘]を押したところ、キーコンビネーションが⌘Cと表示されたのです!

違うキーが表示される!

⌥⌘]⌘Cにリマップされているわけです。つまりFoldingTextなら「Edit>Copy>Copy」が実行されるわけで、なるほどEditが反応するわけです。

なお、この現象はFoldingText以外でも発生します。FoldingTextは特に関係ないようです。

対策

このキーコンビネーションさえ使わなければよいので、「環境設定>キーボード>ショートカット」で、このメニューに別のキーバインドを割り当てることで解決しました。

原因は謎に包まれている

上記ページより、Powerpackの機能は以下の通りです。

  • Create and Import Workflows
  • Clipboard & Snippets
  • Theming
  • File Navigation
  • iTunes
  • Recent Documents
  • Email
  • 1Password
  • Syncing
  • Fallback Searches

この中で影響していそうなのはWorkflowによるホットキーと、せいぜいクリップボード管理くらいですが、なにがどう影響してこんなことになっているのか、さっぱり理解できません。

この件については、Alfredのフォーラムに投げるなりして根本的な解決を図っていこうと思います。

おまけ:FoldingTextテメーもだ

というわけで、この件についてはFoldingTextに一切の責はなかったと言えるのですが、検証中に恐ろしいことに気付きました。

Mac App Storeからインストールしたバージョン2.0.2で、⌘Cによるコピーができないのです。これは、Alfred2の状態に全く関係なく発生します。

現在、FoldingTextの導入(購入)方法は2通り用意されています。

  • Mac App Storeで購入
  • 公式サイトから無料でダウンロードし、Paddle Checkoutでライセンスを購入する。(7日間の試用期間あり)

両者の違いについては、以下のように説明されています。

  1. The Mac App Store version is Sandboxed, the Paddle version is not.

  2. The Mac App Store version (should) support iCloud, the Paddle version will not… only apps sold through Mac App Store can support iCloud. Also there is a bug in the App Store 2.0 release where iCloud is not enabled. Submitting a fix for that soon.

要するに、Mac App Store版でのみiCloud同期が可能。後は、Mac App Store版はサンドボックス化(Mac App Storeでのサンドボックス必須化から2カ月、開発者の反応は | マイナビニュース)が必要だから機能削れたりするかもね、というところでしょうか。

そこで、公式サイトからダウンロードした2.0.2でも試してみましたが、こちらではこの症状は発生しませんでした。値動きに躍らされてMac App Storeライセンスを購入したことを、これほど後悔したことはない。

Paddleライセンスに切り替えられないか、聞いてみようかな……

(2014-12-16追記)その後

Yosemiteでクリーンインストールしたあと、Mac App Store版で普通にコピーできるようになりました。なんだったんだろう。

FoldingTextを黒板みたいな色にしたら、文字が見えなくなった件

FoldingTextの色を変更する

最近、黒っぽいテーマでSublime Textを使いまくっていたので、FoldingTextも黒っぽくしたくなり、背景色と文字色をいじりました。

FoldingTextのUIはLESS形式のCSSでコントロールされており、user.lessを編集することで外観を変更することができます。方法は以下ドキュメントに書きました。

関係ないですが、Github PagesめっちゃGoogleに引っかかりますね。

以下のような指定を付け加えると、黒板っぽいカラーにすることができます。

@inkColor: white;
@paperColor: #393939;

しかしまたも日本語つらたん案件

しかしながら、この@inkColor指定は、未確定テキストには反映されません。そのため、以下のような表示になります。

変換後テキストと変換前テキストの違い

日本語つらたん。そっと涙を拭いてデフォルトに戻す。

FoldingTextの行頭スペース問題は次回リリースで修正されるらしい

FoldingTextの行頭スペース問題

FoldingTextは、テキスト構造のコントロールにすぐれた、Mac用テキストエディタです。

Scrivenerのリッチテキストっぷりにウンザリして代わりを探していた私は、FoldingTextで小説本文を執筆することを目論みました。ところが、そこで持ち上がってきたのがこの問題。

行頭に全角スペースを入力すると、以下のように、行末で折り返されたテキストが行頭揃えされてしまうのです。(バージョン2.0.2)

折り返されたテキストが行頭揃えされる

これは小説を書くにはツラい。ということでフォーラムに投げたところ、以下のように回答がありました。

I’ve changed this behavior for the next release. Text will only be wrapped to match with tab or 4 spaces in a row.

(適当訳:次回、タブか半角スペース4個のときだけ行頭揃えするように修正しとくわ。)

Indent by whitespace - FoldingText Support Forums

やったーーーー!

2.1開発版でさっそく解決!

以下の通り、小説も書けるようになりました!

タブの場合のみ行頭揃えされる

なお、半角スペース4個の場合、 コードブロックとしてマークアップされることになります。

nvALTをめぐるタブとソフトタブの混乱

(はてなブログからの移行記事です。正常に表示されていない場合、ご連絡いただけると助かります。)

nvALT

nvALT

  • ElasticThreads and Brett Terpstra
  • 無料(執筆時点)

現在、MacのメモアプリとしてnvALTを利用しています。SimplenoteにもDropboxにも同期できて、Markdownも書けて検索も速くて他のアプリにも渡せるすごいアプリです。

ただし、ものすっごく挙動が怪しい点がいくつかあります。中でもかなりどうしようもないのが、Soft Tabs設定にまつわる問題です。

Soft Tabsとは?

MacでもWindowsでも、テキストエディタ等でタブキーを押すと、タブが入力されインデントされます。しかし、諸々の事情により、タブではなく半角スペースでインデントしたい場合があります。そのために、タブキーで半角スペースを入力する機能のことを、一般にSoft Tabsと言います。

多くの場合、Soft Tabs機能を持つアプリでは、挿入される半角スペースの数を指定できます。たとえばMarkdownリストのネストのためにSoft Tabsを利用する場合、半角スペースの数は4個であるべきです。

nvALTにおけるSoft Tabs問題

しかし、nvALTにおいては、Soft Tabsで挿入される半角スペースの数を指定することができません。まあ、それが2個とか4個で固定なら別にいいのですが、実際やってみると、その時の気分で3個とかになります。本当にいい奴なんだけれど、そこだけは本当に理解できない。

さすがにバグだろうと思ってググってはみたものの、全く情報が出てきませんでした。少なくともうちの環境では、nvALTのSoft Tabsは使い物になりません。

まあ、それならそれで使わなければいいんです。nvALTだけの話なら。

TabsとSoft Tabsの混乱

しかし、同じドキュメントを色んなアプリの間でぐるぐるしていると、逆にSoft Tabsしかできない奴がいたり、Tabsじゃないと不具合出す奴がいたりします。

  • Byword for Mac
    • 強制Soft Tabs
    • 読み込んだドキュメントのタブを半角スペースに強制変換
  • FoldingText
    • Soft Tabs不可
    • 半角スペースでネストされたリストを正常にハイライトできない
  • MarkdownPad2
    • タブでネストされたリストを正常にハイライトできない

nvALTを中心にドキュメントをぐるぐる回していると、ドキュメント内でタブと半角スペースが混じったりします。そうすると、リストの表示がガタガタになって大変困ります。

というか、Bywordに渡した覚えもないドキュメントに半角スペースが入ってたりするので、nvALT自体にそういう不具合があるような気も……。

困ったので、とりあえず全部タブに変換できるように、Automatorでサービスを作ってみました。これについては次回。

追記(2014/07/16)

Simplenoteとの同期をやめたら発生しなくなったので、どうやらSimplenote絡みの問題である模様。

「FoldingText 2 概論」の公開と、StackEditによる目次生成

(はてなブログからの移行記事です。正常に表示されていない場合、ご連絡いただけると助かります。)


ver. 2.0.2 - ¥3,000( 仕事効率化 )
Hog Bay Software

長い戦いだった……

FoldingText2の公開以来取り組んでいた、解説記事をようやく公開できました。

ご覧のとおり、wordpress.comに新規ブログを立ち上げて、そちらで公開する運びとなりました。なぜそんな面倒なことをするハメに陥ったのかというと、死ぬほど長くなったからです。

長文にはリンク付きの目次が必要だ

これまたご覧のとおり、「FoldingText 2 概論」には全ての見出しを網羅した目次(Table of Contents)を付けてあります。自分で書いておいてなんですが、さすがにこの量のテキストをウェブで読むのに、見出しでもなければ筆者でもメゲます。執筆中だって、FoldingTextの見出しフォーカス機能を活用しなければ気が狂うところでした。(と軽く宣伝)

とはいえ、この量の目次を自力で書くのはそれはそれで気が狂う。大方を書き終えたところで、目次をどうやって調達するかという問題が持ち上がったわけです。

はてな記法で目次あるとおもったら、はてなグループ限定だし。(目次記法とは - はてなキーワード

色々検討したのですが、現実的に満足のいく目次を生成する方法は、StackEditに頼る他ありませんでした。

StackEditによる目次生成

StackEditは、超強力なウェブベースMarkdownエディタです。ブラウザさえあれば環境を問わずに利用できる上、そんじょそこらのローカルアプリを上回る機能を持っています。

ざっと挙げますと……

  • 編集系
    • オートバレット
    • タブキーインデント
      • しかも完全な――カーソル位置を問わず実行可能
    • スマートハイライト
    • ショートカットでのシンタックス追加
      • プレビュートグル
      • テーマカスタマイズ
      • ファイル管理
      • 独自のファイルマネージャ
    • Dropbox/Google DriveへのSave/Open
    • ローカルファイルのSave/Openも可能
  • Publishによる外部公開
    • Blogger
      • Pages
    • Dropbox
    • Gist
    • Github
    • Google Drive
    • SSH Server
    • Tumblr
    • Wordpress
  • 多様な文法対応
    • Markdown Extra
    • LaTeX mathematical
    • ダイアグラム
    • [TOC]

といった具合です。なお、一部はβ限定で、UIも整理されているしバグもかなり修正されているので、βの利用を強く推奨します。

上記の通り、StackEditには目次生成機能がありまして、文中に[TOC]と書いておくと、見出し項目を検出して目次を自動生成し、ページ内リンクも張ってくれます。一瞬です。もうスクリプトで云々とか考えらんない。

なお、編集中のスクリーンショットがこちらです。
StackEditによるTOC生成

Publish

で、まあ、HTML変換してここに貼ろうとか、Evernoteに投げてインポートとか考えないでもなかったのですが。(Evernoteと連携してノベルティをゲット! Evernoteで保存したノートをブログで活用できる「Evernote貼り付け機能」をリリースしました - はてなブログ開発ブログ

しかし、他の記事と毛色も分量も違うし、今後似たようなの書くたびにやるのはめんどいので、おとなしくStackEditからPublishすることにしたわけです。

最初はTumblrにしようと思ったんですが、なぜか何度やっても弾かれる。短文だと通るので、なんぞ上限でもあるのでしょう。というわけでボツ。

Githubって内容でもないし、BloggerよりはまあWordPressか。

WordPressだと「ブログ!!!」って感じで、ポツーンというかドスーンと単発長文置いてあると変な感じですが、まあ日本語URLも通るしもう考えたくないしそれでいいかとブン投げました。

おや、できた? ってことで、コチョコチョっと「続きを読む」とカテゴリだけ付けて公開。終わってみれば簡単でした。

(実際にはソースの修正にけっこう手間取ることになったのですが。それは別項にて)

コンテンツ管理システムとしてのStackEditの可能性

今回使ってみて、StackEditをハブにしたコンテンツ管理はけっこうイケてるのではないかと思いましたね。

別にMarkdown書くだけならWordPressで書いたっていいわけですが、StackEditのほうがエディタとしては上だし、そもそもWordPressの管理画面は煩雑すぎます。ほんとにバリバリ書くならMarsEditなり使ったほうがいいのでしょうが、なんといっても無料だしウェブベースだし、StackEditでのブログライティングも検討の余地はあるのではないでしょうか。

FoldingText 2.0 の「Expand / Collapse By Level」について検証してみた

(はてなブログからの移行記事です。正常に表示されていない場合、ご連絡いただけると助かります。)


ver. 2.0.2 - ¥3,000( 仕事効率化 )
Hog Bay Software

関連

実は2.0はまだ正式リリースされていないのだが、それもそろそろみたいですよ!

Expand / Collapse By Levelって結局どういう挙動になるの?

前回記事の該当部分を引用する。

  • 見出しセクションで有効
  • 従来のFold(⌘/)では、カーソル行のアイテムの子アイテム全てをFoldする
    • 例えば、見出しレベル1(#)の行で実行した場合、下の見出しレベル2〜6(########)のセクションは全てFoldされる
  • Expand / Collapse By Level(⌥⌘→/⌥⌘←)では、カーソル行のアイテムの子アイテムのうち、最も遠い子から順にFold/展開する
    • 例えば、見出しレベル2〜3のセクションを内包する見出しレベル1セクションで「Collapse By Level」を実行した場合、まずレベル3セクションが、次いでレベル2セクションがFoldされる
      • インデントされたリストブロック/パラグラフが内包される場合、リストブロック/パラグラフのインデントレベルの高い行からFoldされる

オーケーわからん!

簡単にいえば子孫アイテムから順に畳んでいくということなのだが、実際どういう挙動になるのかわかりづらすぎるので検証してみた。

以下、キャプチャー画像多数。

原文

  • スクリーンショット
  • カーソル位置は# 見出しレベル1の行
  • 挙動をわかりやすくするため、あえて見出しレベル2/3の位置を逆にした。

順番にCollapse By Levelを実行する

  • スクリーンショット
  • スクリーンショット
  • スクリーンショット
  • スクリーンショット
  • スクリーンショット
  • スクリーンショット
  • Expandはこの逆回し。

Paragraph(通常の行)とListを比較すると、n回インデントされたListは、n+1回インデントされたParagraphと同じLevelとしてfoldされている。つまり、ドキュメント全体の構造レベルで見ると、リストブロック全体が、Paragraphより1レベル低い扱いを受けていることになる。

なお、引用ブロックの構造レベルはParagraphと同様の扱いである。つまり、「引用ブロック内の引用ブロック」と、「1回インデントされたパラグラフ」が同レベルになる。

実用的な例:Expand By Levelで文書を読んでいく

  • このようなドキュメントがあるとする。
  • スクリーンショット
  • セクション「献立」「買い物」がFoldしてあるとする。
  • スクリーンショット
  • 「買い物」セクションを読んでいく。
  • スクリーンショット
  • スクリーンショット
  • スクリーンショット
  • スクリーンショット

どんな時に有効なのか?

CollapseよりExpandが重要そう。

ユーザーガイドにもあるが、ドキュメントの大半をFoldしておいて、必要なセクションのみを掘り下げていくような使い方が適しているのではないか。

文書構造をきちんと組んでおく必要はあるが、重要度の低い情報を自然とFoldしておける点は便利そうに思える。