Comments (17)
ありがとうございます.こちらの設定で上手く動作しますね.
(defun skk-set-display-table ()
(walk-windows
(lambda (w)
(let ((disptab (make-display-table)))
(aset disptab ?\▼ (vector (make-glyph-code ?# 'escape-glyph)))
(aset disptab ?\▽ (vector (make-glyph-code ?@ 'escape-glyph)))
(set-window-display-table w disptab)))))
(add-hook 'window-configuration-change-hook #'skk-set-display-table)
もし,@conao3さんの方で正攻法が思いつきそうな場合は,しばらく,このIssueをOpenにしておきたいです.
そうでない場合は,Closeして頂いても構いません.
この度は本当にありがとうございました.これでTUIでも快適なSKK生活を送ることが出来ます.
from ddskk.
それはマークに続いて文字が入力されているので、単体の文字になっていないからだと思います。
今はこちらの方を調査していて、多分これで出来る気がします。
https://ayatakesi.github.io/lispref/26.2/elisp-ja.html#Character-Display
from ddskk.
window-configuration-change-hook
に(walk-windows)を引っかければ抜けはなくなる気がします。対症療法ですが。
from ddskk.
更新しておきました。
from ddskk.
いろんなところにハードコードされてしまっているので、マーカーをカスタマイズできるようにするのは難しそうです...
from ddskk.
やはり、そうですよね。何度かGrepで検索したとき、これらがハードコートされている雰囲気は感じていて一斉置換を試したのですが、あまりうまく出来ず悪戦苦闘しまして。その末の質問でした。
では、アプローチを変えてDDSKKーEmacs間でマーカーを置換するのではなく、Emacs−NCurses間で表示文字を変えるAPI等に心当たりはありませんでしょうか?
入力文字の場合はキーマップを上書きすることで、たとえば¥を\に置き換えることが出来ますよね。同じように出力文字を変えることは可能でしょうか?
from ddskk.
(setq prettify-symbols-alist
'(
("lambda" . 955) ; λ
("->" . 8594) ; →
("=>" . 8658) ; ⇒
("map" . 8614) ; ↦
("▼" . 35)
("▽" . 64)))
;;=> (("->" . 8594) ("=>" . 8658) ("map" . 8614) ("▼" . 35) ("▽" . 64))
(vconcat "#@")
;;=> [35 64]
心あたりあるのはこれです。試していたのですが、シンボルと認識されないようでうまくいきませんでした。
http://ergoemacs.org/emacs/emacs_pretty_lambda.html
from ddskk.
探していたものはまさにこれですね.今手元で実験したところ,
Control-y
やCommand-v
で文字を貼り付けたときは,#や@に置換される- DDSKKで変換を指示したときは,置換されない
ということでした.Emacsの文字コード事情は詳しくないのですが,DDSKKは全般的にEUC-JPでエンコーディングされていますよね.ご提示頂いた設定例やControl-yやCommand-vで貼り付けた文字はUTF-8で統一されていたので上手く動作し,SKKはEUC-JPで文字を出力したため動作しなかったということは考えられませんでしょうか?
追記:実験してみましたが,うまくいきませんね.なぜシンボルと認識されないのでしょうか...
$ cat prettiy-file-symbols-alist.el | nkf -e | sponge prettiy-file-symbols-alist.el
$ emacs # (load prettiy-file-symbols-alist.el) (prettify-symbols-mode)
from ddskk.
素晴らしいです!私の方でも当該箇所を理解するよう努めさせていただきます.
from ddskk.
とりあえずこれで上手くいくことが確認できました。
ただ、現在のウィンドウだけなので、新しく開くウィンドウだと元に戻ってしまう。。
(let ((disptab (make-display-table)))
(aset disptab ?\▼ (vector (make-glyph-code ?# 'escape-glyph)))
(aset disptab ?\▽ (vector (make-glyph-code ?@ 'escape-glyph)))
(set-window-display-table (selected-window) disptab))
from ddskk.
今手元で試してみたところ,macOSのTerminal.appでも上手く動作することが確認できました.
ひとまず,skk-mode-hookにこれを設定することで,SKKを有効化するときにディスプレイテーブルを更新するようにしてみました.
(defun skk-set-display-table ()
(let ((disptab (make-display-table)))
(aset disptab ?\▼ (vector (make-glyph-code ?# 'escape-glyph)))
(aset disptab ?\▽ (vector (make-glyph-code ?@ 'escape-glyph)))
(set-window-display-table (selected-window) disptab)))
(add-hook 'skk-mode-hook #'skk-set-display-table)
しかし,そのような状況があるか分かりませんが,SKKモードを維持したままウィンドウを切り替える場合,hookが発火されない恐れがあるので,恒久的に有効化できる方法がほしいですね.
from ddskk.
etc/dot.skk に記載しておきました。
from ddskk.
@tkita 更新ありがとうございます.ところで私の意味したところでは,私が上げた2つの設定例を記述すると上手くいくということなので,お時間があるときに次のように更新していただければと思います.
(defun skk-set-display-table ()
(walk-windows
(lambda (w)
(let ((disptab (make-display-table)))
(aset disptab ?\▼ (vector (make-glyph-code ?# 'escape-glyph)))
(aset disptab ?\▽ (vector (make-glyph-code ?@ 'escape-glyph)))
(set-window-display-table w disptab)))))
(add-hook 'window-configuration-change-hook #'skk-set-display-table)
(add-hook 'after-init-hook #'skk-set-display-table)
from ddskk.
手元で確認せずに投稿しますが(すみません)、skk-set-display-table() による設定は、▽|▼ を含む候補や文書を正しく表示するものでしょうか?(Sankaku SPC の際の候補「▽」表示にも影響をおよぼしませんか?)
さんかく /三角/参画/△/▽/▲/▼/∴/∵/贊畫;旧字/3角/
from ddskk.
実験してみました.ご指摘の通り影響を及ぼしますね.したがって,マーカーの変更というよりはマーカーで使用される文字の表示グリフの変更というのが正しいですね.背に腹は変えられないので,私としてはこの設定だけでも便利なのですが,本来ならば,ハードコートされている文字を逐一変数化して変更可能にすべき問題だと思います.
from ddskk.
@tani さま、実験ありがとうございます。skk-set-display-table() はその影響を十分に理解した上で使う必要ありますね。
etc/dot.skk の記載も、もうちょっと影響を書き加えておこうと思います。
なお、パッチ書いたことがあるのを思い出しました。こんなんでも良ければ取り込みたいと思います。
https://gist.github.com/tkita/1e9f8baf2939a5dedfc22cac99924ff7
from ddskk.
お手数をおかけしますが、そのように更新のほどよろしくお願いします。
パッチについては取り込まれた際には積極的にフィードバックさせていただきますね。
from ddskk.
Related Issues (20)
- skk-autoloadsのrequireについて HOT 7
- nicola/skk-nicola.elのnext-command-eventについて HOT 1
- skk-get-current-candidate: Symbol’s function definition is void: skk-henkan-count HOT 7
- skk-jisyo の standard value について HOT 1
- trailing space HOT 4
- 「う゛」から「ゔ」使用に切り替えるパッチ HOT 1
- Multiple Cursorsと一緒使えない HOT 1
- MELPAでddskkではなくskkとして配布する HOT 7
- Markdown-modeの表中でddskkを使うと▼マーカーが削除されない HOT 4
- skk-undo-kakutei-return-previous-point non-nil の時の挙動 HOT 2
- skk-azikの「tU」->「っ」定義について HOT 2
- (void-function facemenu-color-equal) in Emacs-28 HOT 1
- Cursor colour no longer changes to match hiragana/katakana mode. HOT 18
- void-function facemenu-color-equal in Emacs-28.0 HOT 2
- sticky-key使用時、まだ消費されていない文字が消える
- make info で error HOT 2
- Emacs 29.0.50: Wrong type argument: listp, 1000000000 HOT 1
- '(setq skk-use-azik t)' in ~/.skk causes error 'Symbols' definition is void: del-alist` HOT 1
- emacs-29とddskk masterでisearchを使えば「Lisp error: (void-function nil)」が出ます HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ddskk.