Comments (15)
確かに、 :update はほとんど使ってないので、提案していただいた内容でも悪くないかもと思いました。
そもそも、この「各ウインドウへの更新通知」のメカニズムはシンプルすぎて、「更新の理由が分からないため各プラグインが更新すべきかしないべきかを判断することが出来ずに、毎回描画し直すことしかできない」ことが問題かなと思っています。最初に作った時からここは改善したいと思っていて、concurrent.elのcc:channelが完成したら、このあたりの通知を非同期イベントにしてしまおうと思っていました。
そうすると、更新イベントをパースペクティブ自体がsubscribeして各プラグインバッファをまとめて更新し、各プラグインは更新通知が来てもバッファを表示するだけ、ということが出来るかなと思っています。
ただ、この非同期イベント修正はちょっと時間がかかりそうなので、もしtkfさんの方でこちらの修正がすぐ出来て pull request いただけたら取り込みたいと思いますが、お願いしてもよろしいでしょうか?
from emacs-window-manager.
時間あるときにやってみます。パースペクティブのprefixは e2wm:dp-base- で良いですか?
非同期イベント化は楽しみです! monky みたいにプロセスをひとつしか持てないようなやつが各 plugin をバラバラに更新した時にどうなるかがちょっと怖いですが。
from emacs-window-manager.
変数名とか直したほうがよければ、またpull request入れます。
最後のコミット(0fa0549ceaadc046502f3d86f4e61b97decaa132)はもし要らなければ外しても機能は変わらないはずです。
from emacs-window-manager.
最後のコミット修正しました: a9bf7f0
from emacs-window-manager.
すごい!早い!
ありがとうございます!
すぐ確認して取り込みます。
from emacs-window-manager.
問題ないようでしたので取り込みました。
ウインドウ4列とか自分よりもかなり使いこなしてらっしゃるようで、有難い限りです。
from emacs-window-manager.
pull ありがとうございます!意外と単純な変更で済んだので何か見落としてないか心配でした。
from emacs-window-manager.
そういえば e2wm:dp-doc-update 内で super の関数よんでないですが、 doc perspective では plugin 使ってないので今のところ問題無いはずです。ただ、将来的に base perspective を拡張するかもしれないことを考えると super よんだほうが良いかもです。
from emacs-window-manager.
#20 ですが、後方互換性のない変更になっているので、自分でパースペクティブ定義しているユーザーが不便に思うかもしれません。 最近 @myuhe さんがリリースした e2wm-R.el が被害にあいそうです。
解決法として #22 を書いてみました。ただ、この解決法を適用すると base に依存しないクラスをかきたい時に自分で抽象クラスを作ってそれを継承するとうまどろっこしいことをすることになります。個人的にはこのパッチ適用しないほうが良いんじゃないかと思うんですが、互換性を守る重要性が高ければpullしてください。ご迷惑をおかけします。。。
あと、意外と複雑な関数になってしまったので、精査お願いします。
from emacs-window-manager.
#23 は2つ前のコメントの e2wm:dp-doc-update に関する fix などで、後方互換性に関するやつとは無関係です。
from emacs-window-manager.
ちょっと調べてみます
from emacs-window-manager.
なんだか、気を使わせてしまってすみません。。。
後方互換性はなくなりますが、僕もtkfさんが言うように現在のままで良いんじゃないかと思います
現在のバージョンに合わせた変更もそこまで大変なものでもなさそうですし。
from emacs-window-manager.
#23を取り込まない方針で考えています。
その際、問題になる継承の階層の制限をなくしてみました。
70ac168
手元では動作確認できていますが、内部用の関数である 'e2wm:$pst-get-prop' と 'e2wm:method-call' の関数のインタフェースを変えたので、これらを使っている場合はもしかしたらみなさんのパースペクティブ定義で問題が出るかもしれません。
よろしければご確認をよろしくお願いします。
from emacs-window-manager.
'e2wm:$pst-get-prop' と 'e2wm:method-call' を含んだものではありませんが自作のパースペクティブに新しいbase class定義に関連する修正を加えたところ、問題なく動作しているようです。
いちお報告まで
from emacs-window-manager.
ご確認ありがとうございます!
from emacs-window-manager.
Related Issues (20)
- 提案: e2wm:c-recordable-buffer-p から window 情報にアクセス可能に HOT 7
- Feature request: make e2wm:dp-code-popup-sub and similar extendable HOT 1
- Problem when opening the same buffer in multiple windows HOT 1
- ドキュメント HOT 15
- Base class update function is not functional from a grandchild class HOT 7
- e2wm の拡張集(ne2wm)を作ってみての提案など HOT 5
- Problem with comint-dynamic-list-completions HOT 3
- emacsclient --tty disables e2wm:pst-minor-mode HOT 9
- imenuが表示されない HOT 1
- e2wm:$pst-class-extendが未定義 HOT 3
- main windowからフォーカスが外れる。 HOT 8
- e2wm in terminal? HOT 4
- Is there the web page that announces the third-party extensions of e2wm.el? HOT 1
- e2wm:def-plugin-svn-logsのbuffer-disable-undoの引数 HOT 5
- Adding new window to e2wm:c-*-winfo does not work HOT 3
- svn/magitパースペクティブにdiff専用の窓があった方が良い気がします HOT 6
- ewwバッファをドキュメントバッファに HOT 2
- Buffer size HOT 4
- Layout bug when Emacs built with GTK3 HOT 3
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 emacs-window-manager.