リンキング&ナビゲーション構造

  1. リファレンス → リファレント〈referent〉
  2. エントリー → オカレンス

参照関係は関数になる必要がある。出現関係は任意の関係でよい。参照関係も反転可能である。

リファレントはセクションノードまたはブロックノードであり、オカレンスはデータレンジ(ミクスチャーの一部)である。ノードの種類は:

  1. セクション
  2. ブロック
  3. ミクスチャー

すべてのセクション/ブロックノードには、タグを付けることができる。タグは属性に統合される。単なるタグは「値を持たない属性」と解釈する。

次は、ランダムアクセス・ナビゲーションを提供する。

  1. リファレンスのリスト
  2. エントリーのリスト
  3. タグ検索

ノードとデータレンジは区別しないほうがいいかもしれない。

日本語入力(IME)の状態

https://webrandum.net/google-ime-word-registration/ より:

まとめてみると下のような感じでしょうか?

  • 直接入力(DirectInput) テンキーからの入力が「直接入力」で入力している際に機能する
  • 入力文字なし(Precomposition) 何も文字を入力していない際に機能する
  • 変換前入力中(Composition) 入力時、変換する前の状態の時に機能する
  • 変換中(Conversion) 変換中に機能する
  • ジェスト表示中(Viewing suggestion) サジェストボックスが表示されている際に機能する。
  • サジェスト選択中(Selectiong suggestion) 表示されたサジェストを選択している際に機能する。

直接入力という部分は「一般(General)」パネルの「基本設定(Basics)」の一番下にある「テンキーからの入力(Input from numpad keys)」が直接入力(DirectInput)になっている状態で入力した時に機能するキー設定だと思います。

最初見た時に、Windowsなら直接入力ってあるけどMacの直接入力ってなんだ?と結構考えてました。入力ソースにも直接入力なんて無かったですし…

プロトコル

  • BSP〈Book Server Protocol〉
    • BSVP〈Book Server Viewing Protocol〉
    • BSEP〈Book Server Editing Protocol〉
    • BSFP〈Book Server Federation Protocol〉

カレントブック、カレントノード、ルートノードがあり、そのポインタを移動することができる。コンテンツとメタデータに対する閲覧と編集をサポートする。チャンクとチャンクリストが基本データ構造。プロトコルAPI)はできるだけシンプルに。

xgerbyの基本概念

gerbyシステムは良くできていると思うけど、LaTeXSQLiteの実装に依存しすぎで、抽象的な構造が不明。xgerby はgerbyシステムの抽象化、一般化になるようにする。

  1. 原稿の基本単位は記事またはエントリー
  2. 原稿から作られたノードデータをチャンクと呼ぶ。
  3. チャンクにはIDが付く。IDは、サイトスコープで一意でなくてはならない。
  4. サイト(=ブック)となるディレクトリが特定できなくてはならない。
  5. 原稿は、サイトルートディレクトリから下のディレクトリツリーに配置された記事ファイル群。
  6. ノードは、メタデータとコンテントからなる。
  7. 管理データとして、IDとラベルの相互対応テーブル、チャンクの親子関係テーブルを持っている。
  8. 原稿データ、メタデータ、管理データ、チャンク、それ意外に生成コンテンツを持つ。
  9. チャンクと管理データがあれば、原稿は不要。原稿とチャンクツリーが持つ抽象的情報は同値である。
  10. 生成コンテンツはいつでも再現できる。

原稿をMarkdownで書くときのマークアップ

  1. #foo ID指定。#[id] のほうが安全かも。
  2. [ [ラベル] ] 参照。(実際は空白なし)
  3. # , ## など。階層付きのタイトル。一般セクション。
  4. :::Name, ::: 特殊ブロック。

emacsとIME

こういうことが出来るんだよな、Emacsは。VSCodeでは現状絶望的。ベースになっているChromium/Electronのレベルで日本語入力の状態変更に対する通知を取れてないから、Electron上に居るVSCodeでは如何ともし難いのだろう。

https://www.yokoweb.net/2017/06/23/msys2-emacs-ime-cursor/ より:

;;
;; Windows IME設定
;;

(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[--]")
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(w32-ime-initialize)
;; 日本語入力時にカーソルの色を変える設定 (色は適宜変えてください)
(global-set-key [kanji] 'toggle-input-method)
(add-hook 'w32-ime-on-hook '(lambda () (set-cursor-color "coral3")))
(add-hook 'w32-ime-off-hook '(lambda () (set-cursor-color "orchid")))

;; 以下はお好みで設定してください
;; 全てバッファ内で日本語入力中に特定のコマンドを実行した際の日本語入力無効化処理です

;; ミニバッファに移動した際は最初に日本語入力が無効な状態にする
(add-hook 'minibuffer-setup-hook 'deactivate-input-method)

;; isearch に移行した際に日本語入力を無効にする
(add-hook 'isearch-mode-hook '(lambda ()
         (deactivate-input-method)
         (setq w32-ime-composition-window (minibuffer-window))))
(add-hook 'isearch-mode-end-hook '(lambda () (setq w32-ime-composition-window nil)))

;; helm 使用中に日本語入力を無効にする
(advice-add 'helm :around '(lambda (orig-fun &rest args)
           (let ((select-window-functions nil)
              (w32-ime-composition-window (minibuffer-window)))
           (deactivate-input-method)
           (apply orig-fun args))))

悲しいニュース:

ハイパーキー

抽象キー名 実際のキー
C Ctrl
M Meta Alt, Ctrl+[
s Super Windows, Command
H Hyper ?

ハイパーキーを導入して次のようにする。

操作 小さい範囲 大きい範囲 備考
右へ C-F H-F 一文字/行
左へ C-B H-B 一文字/行
上へ C-P H-P 行/ページ
下へ C-N H-N 行/ページ

これによって、次のキーは不要になる。

  1. emacs C-E 特に恩恵なし
  2. emacs C-A 全選択に使える
  3. emacs C-V コピーに使える
  4. emacs M-V 特に恩恵なし

カットをC-Xに割り当てると、C-Wが空くので、「現在の文書を閉じる」に使える。ただし、emacs system prefixは諦める。

それでも、C-a の全選択をどうするか問題はある。

[追記]

https://mathrelish.com/electronic-kit/ctrl-shift-meta-super-hyper-top-front

(現代の) ハイパーキーとはコントロールキー,シフトキー,オルトキー,スーパーキーの同時押しのことをいう.

[/追記]

悩みどころ

機能 Windows emacs 備考
全選択 C-A キーバインドなし emacs C-A は先頭へ移動
コピー C-C M-W emacs C-C はプレフィックスキー
カット C-X C-W emacs C-X はプレフィックスキー
ペースト C-V C-Y emacs C-V はページスクロール
検索開始 C-F C-S, C-R emacs C-Aは右へ移動
検索次 C-G C-S emacs C-G は中断
検索前 Shift C-G C-R emacs Shiftでも C-G は中断

基本カーソル移動はemacsバインドを使いたい。

  1. C-F 検索開始とバッティング、悩みどころ
  2. C-B
  3. C-E
  4. C-A 全選択とバッティング、悩みどころ
  5. C-P (プリンタとバッティング、無視可能)
  6. C-N (新規とバッティング、無視可能)

コピー・カット・ペーストは、Windows方式にして、ユーザー・プレフィックスキー、システム・プレフィックスキー、下スクロールを諦めるか? vscodeでツーストロークキーをどこまで使うか? ウーン悩む。

VSCodeのストレス

  1. IMEの変換時に文字が消える → Awesome Emacs Keymap のせいだった。
  2. IMEの下線などが見えない → カラーテーマを白系統にして解決。
  3. IMEの状態を文字カーソルに反映できない。かなりシンドい。
  4. emacs anything/helm 相当機能(コマンドパレット)が貧弱
  5. swithc-to-buffer 相当の機能が貧弱。helmのようなインターフェイスがないから。
  6. 小さなコードを用いたカスタマイズがしにくい。
  7. インクリメンタル検索が使いにくい。辛い。
  8. 範囲指定とインクリメンタル検索を併用できない。とても辛い。
  9. 状況によっては、emacsキーバインドが無効になる。Ctrl+N で新規ファイルになったりする。
  10. Ctrl+G があまり機能しない。
  11. Undo/Redoがイマイチ不安。単に理解してないのかも。
  12. diredがない(vscode-diredは代替にならない)。
  13. Lispが使えるバッファがない。他言語でもいいけど。
  14. emacs friendly keymap に C-X C-X がない。
  15. 行の折り返し記号がない。

Ctrl+B の処遇

#If WinActive("ahk_class MozillaWindowClass") && WinActive("ahk_exe firefox.exe")
!b::Send ^!b
#IF

vscodeへの移行の課題(順不同)

順不同:

  1. 自作の文字を実体参照やパーセントエスケープに置き換えるやつ。
  2. 自作の日時時刻文字列を挿入するやつ。
  3. orgモードで作っていたメニューみたいなやつ。
  4. Lispインタープリタ
  5. キーバインドで、Ctrl+N, Ctrl+P が期待通りではないこと。検索ボックスや拡張機能ドキュメント表示のとき。
  6. Gtrl+G が期待通りではないこと。
  7. Ctrl+V, Ctrl+X, Ctrl+Y を Windows標準にしようか?問題。
  8. Undoが思い通りではないこと。
  9. MetaキーがAltである問題。
  10. 日本語入力のON/OFFと状態が目視で分かりにくい。
  11. インクリメンタル検索がだいぶ違うし、検索ボックスではキーバインも変わってしまう問題。
  12. 色が有りすぎる。うざい!

環境変数

環境変数の設定は、時代と共にどんどん不便になっていく感じがする。

Windows+R で cmd.exe を起動すれば、昔ながらの方法で環境変数をセットできる。setxというコマンドは新しい。

コントロールパネルでは、「環境変数」で検索するのが早い。今や、階層メニューを辿るのは困難で、インターネット同様、検索無しでは何もできない。

Powershellを使えば、柔軟に環境変数を操作できるけどね。

特殊フォルダ Camera Roll, Saved Pictures, Searches

しつこく、特殊フォルダの用途について:

What Are the Camera Roll and Saved Pictures Folders?

Take a look inside your Pictures folder and you will see the Camera Roll and Saved Pictures folders. These are created automatically if you have Windows 10.

The Camera Roll folder is used by the Camera app to store all created photos and videos. The Saved Pictures folder is used by the Photos app. These two apps are the reason these annoying folders exist.

Searches/ については、What is the Purpose of the "searches" folder? - (新) 檜山正幸のキマイラ飼育記 メモ編 参照。

The folder contains shortcuts to search results. You can revisit the file by clicking on the shortcut. The total space usage, notwithstanding the number of shortcuts, is tiny. My folder is 20 kb. You can delete the contents if you wish. I suppose someone investigating the files accessed could gather information if they wanted.