[▲前のスレッド]

2008/5/25 (日) 03:26:55 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5299] 水平スクロールバーを常にテキストの幅に合わせる
A) 水平スクロールバーを常にテキストの幅に合わせる
B) 常にウィンドウの幅で折り返す

上記の機能を実験的に作ってみました(ダウンロードページの10-5.)
しかし、速度の問題と分割ウィンドウでの表示の問題があります。

■速度の問題
A:入力毎に全ラインを走査してテキストの最大幅を求めています。そしてAdjustScrollBars()でそれを使っています。
B:OnSize()にて折り返し位置の変更を呼び出しています。こちらの方が負荷が高いです。

これをAthlonXP-M3000, mem DDR1GB, Win2k SP4のデスクトップ環境で試してみました。
A:10万行程度までなら使えそうな感じ。
B:1万行までなら大丈夫そう、2万行あると遅さが分かる。
  5万行では明らかに遅い。書き直しに1秒程掛かる。

■分割ウィンドウの問題(Bのみ)
左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。
折り返し幅は1つしかないので処理順の都合でこの様になります(と思う)
こちらは今のままだとちょっと致命的ですかね?左右に分割すると問題ありますよ、で押し通したい所ですが……


一応タイプ別オプション→スクリーン→レイアウトの所にオプションを追加して選択できるようにしてみました。
また、Ctrl+Alt+Uでの折り返しの変更については、AまたはBが選択されている時はA,Bのトグルとしました。

こんな感じですが、この機能使えると思います?
Patchesに載せる価値あるでしょうか?

http://www.geocities.jp/nasukoji_7/download/download_sakuraeditor.html


2008/5/27 (火) 18:46:44 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5303] 問題について
▼ なすこじさん
> A:入力毎に全ラインを走査してテキストの最大幅を求めています。そしてAdjustScrollBars()でそれを使っています。

他エディタではどれも、
・最大幅の拡大を監視してスクロール幅をそれにあわせて拡大する
・最大幅の縮小は監視せずスクロール幅を縮小することはしない

になっていると思います。
たいてい、長ーい行を貼り付けるとスクロール幅が広がりますが、削除しても狭くはなりません。
つまり、スクロール幅は常に全ラインを走査して現在の最大幅に合わせるのではなく、変更された行だけを走査して編集開始以後に記録した過去最大幅に合わせておくこと(ある意味手抜き)で性能を確保しているような気がしますが、違いますかね?

> B:OnSize()にて折り返し位置の変更を呼び出しています。こちらの方が負荷が高いです。

常に折り返すのは、どっちかというと付加的な機能ですし性能にさほど過敏になる必要はないと思いますけど...

> ■分割ウィンドウの問題(Bのみ)
> 左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。


どちらかのビュー幅の桁数に他方の桁数をあわせるので良いと思います。同時スクロールはそのほうが見やすい、とも。EmEditorだと左側のビューの桁数に右側の桁数を合わせているみたいですね。

2008/5/27 (火) 18:50:28 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5304] 仕様について
▼ なすこじさん
> A) 水平スクロールバーを常にテキストの幅に合わせる
> B) 常にウィンドウの幅で折り返す


ちょっとだけ触ってみました。
常に折り返しのとき、右側に少し空白が欲しいかな。ぶら下げ文字+改行文字くらいは見せてほしいですね〜。
…って、細かい。(^^;

Aは特に欲しいとは思ったこと無いです。でも、性能低下が無ければ全タイプ(!)の設定をこれにして使うと思います。桁数を考える必要が無いしスクロールバーのつまみ部分も長めになって楽ちん。
Bは欲しいと思うときがあります。ワープロや掲示板投稿用の文章の下書きをするときとか。

この件については、細部まで仕様を練って他の人たちと調整するのがなんだか面倒に感じていたので手をつけていませんでした。この機会に、自分が期待する仕様(現在のところ)を書いておきます。まぁ、割と変哲のない仕様だとは思いますが...

折り返しモードの名称は、
「折り返さない」  <--- A相当
「指定幅で折り返す」
「右端で折り返す」 <--- B相当
のように他エディタでも使われているような簡潔でありふれた表記に。
※「折り返さない」は限度を超えたら折り返しちゃうじゃない?とかいう突っ込みは置いといて。

設定UIや設定の引き継ぎについては以下のとおり。

・各タイプ別設定に3択の「折り返し方法」コンボボックスを1個だけ置く(「折り返し桁数」の上あたり)
・メニューコマンドは個別に3つ(折り返さない/指定幅で折り返す/右端で折り返す)を用意する
・折り返し方法(3種)はタイプ別設定とコマンドとでは対象範囲と有効期間が違うだけで機能的には同じ
・コマンドでの変更はその画面だけに適用される一時設定で、元のタイプ別設定は変更しない
・タイプ別設定を変更しても一時設定になっている画面には反映しない(一時設定未適用の画面には反映)

※完全代用とはいかないかもしれないけど、上記仕様になれば従来のトグル式メニューと挙動は不要(僕には)

ちょうど VxEditor あたり(秀丸も?)がこれと同様の感じになってたような気がします。

同じ.txt拡張子のファイルでも、折り返さないほうが見やすいものと、右端で折り返したほうが見やすいものとがあって、同時に2つ開いているときは別々の設定にして使いたいのです。基本は「折り返さない」設定で使い、右端で折り返したほうが見やすいものに出くわしたらその画面だけ一時的に「右端で折り返す」設定に変更、という具合に。逆に、「右端で折り返す」が基本で「折り返さない」は一時使用という人もいるかもしれませんね。

●補足:一時設定の適用中/未適用の制御方法
コマンドで現在の設定がタイプ別設定と異なる設定に変更されたら一時設定適用中、逆にコマンドでタイプ別設定と同じ設定に変更されたら一時設定未適用、という扱いでOK。同じ画面で対象ファイルが変更されるとき(閉じて無題、閉じて開く)は一時設定未適用にして新たなファイルに対応するタイプ別設定を適用。

2008/5/29 (木) 00:41:46 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5305] Re:仕様について
▼ ryojiさん
レスどうもありがとうございます m(_ _)m

拡大縮小については、Notepad以外は意識して確認しない様にしていたので分かりません (^^;
ただ、パフォーマンスを確保するために全ラインの走査はしていないだろうなぁとは思っていました。

> > 左右に分割すると、左側のウィンドウが右側のウィンドウサイズで折り返されます。
>
> どちらかのビュー幅の桁数に他方の桁数をあわせるので良いと思います。同時スクロールはそのほうが見やすい、とも。EmEditorだと左側のビューの桁数に右側の桁数を合わせているみたいですね。


確かに左右の折り返しが一致していた方が見やすいかもしれませんね。
そもそも同時スクロールの場合、別々の折り返し位置だと制御が難しいかな?

と言う事で、折り返しやスクロールバーの制御については基本的にこの動作のまま行こうと思います。

設定変更処理については、私も文書毎に一時設定できた方が良いかも?と思っていましたので、ryojiさん提案の方法をとってみようと思います。

> 折り返しモードの名称は、
> 「折り返さない」  <--- A相当
> 「指定幅で折り返す」
> 「右端で折り返す」 <--- B相当


> ・各タイプ別設定に3択の「折り返し方法」コンボボックスを1個だけ置く(「折り返し桁数」の上あたり)
> ・メニューコマンドは個別に3つ(折り返さない/指定幅で折り返す/右端で折り返す)を用意する
> ・折り返し方法(3種)はタイプ別設定とコマンドとでは対象範囲と有効期間が違うだけで機能的には同じ
> ・コマンドでの変更はその画面だけに適用される一時設定で、元のタイプ別設定は変更しない
> ・タイプ別設定を変更しても一時設定になっている画面には反映しない(一時設定未適用の画面には反映)


> コマンドで現在の設定がタイプ別設定と異なる設定に変更されたら一時設定適用中、逆にコマンドでタイプ別設定と同じ設定に変更されたら一時設定未適用、という扱いでOK。同じ画面で対象ファイルが変更されるとき(閉じて無題、閉じて開く)は一時設定未適用にして新たなファイルに対応するタイプ別設定を適用。

■その他
・S_WrapWindowWidth()マクロはそのまま。
・「折り返し方法」変更用(一時設定)のマクロは1個+引き数で処理。引き数が無理なら3つ準備する。
・従来のトグル式メニューは折り返し方法が「指定幅で折り返す」の時有効とする(一時設定時を含む)
・折り返し方法のデフォルトは「折り返さない」とする。


※デフォルトを「折り返さない」にして新仕様での使用を促すか、「指定幅で折り返す」にして新しい仕様を隠した状態とするかは悩ましいですが、取りあえず新仕様をデフォルトにしてみようと思います。

ではでは。

2008/5/31 (土) 06:44:32 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5307] 作ってみました
>>dev:5305の仕様で作ってみました。

mytool.bmpを修正したのですが、TortiseSVNのパッチ作成ではbmp部分は当然面倒見れないという事で不完全な差分となってしまったので、今回も自分のwebページに置きました(ダウンロードページ 10-7)

bmpを修正した場合の差分はどのように作成すれば良いのでしょうか?

以下動作について:
タイプ別設定以外で折り返しの設定を変更した場合、一時設定となります。
一時設定状態の時は、複数画面で作業している時にタイプ別設定にて折り返し方法を変更しても、タイプ別設定を呼び出したウィンドウ以外は一時設定のままとなります。
タイプ別設定を呼び出したウィンドウについては強制的にタイプ別設定で選んだ方法とします(上の発言から少し変更)

・メニュー
  「設定」→「テキストの折り返し方法変更」
・ツールバー対応
・ショートカット対応

  Ctrl+Alt+X:折り返しなし
  Ctrl+Alt+S:指定幅で折り返し
  Ctrl+Alt+W:右端で折り返し
・マクロ対応「S_TextWrapMethod()」
  0:折り返しなし
  1:指定幅で折り返し
  2:右端で折り返し


現在の問題
・テキスト最長行の右端に移動しバックスペースで文字を削除するとカーソルがウィンドウの左へ移動するが、ここでスクロールバーのつまみをクリックするとテキスト表示エリアが切り替わりカーソルおよび表示テキストが画面右側へ飛ぶ。
・デバッグモードで実行すると新規に追加したメニューの字が青いんですが、理由が分かりません (^^;


2008/5/31 (土) 12:48:24 神楽  
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
[5308] Re:作ってみました
▼ なすこじさん> ・ショートカット対応
>   Ctrl+Alt+X:折り返しなし
>   Ctrl+Alt+S:指定幅で折り返し
>   Ctrl+Alt+W:右端で折り返し
> ・マクロ対応「S_TextWrapMethod()」
>   0:折り返しなし
>   1:指定幅で折り返し
>   2:右端で折り返し


横槍失礼します。
上記は既存の以下の機能と等価でしょうか?
http://sakura-editor.sourceforge.net/htmlhelp/HLP000184.html
(ショートカットキーは、Ctrl+Alt+Uです)

2008/5/31 (土) 13:11:17 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)
[5310] Re2:作ってみました
▼ 神楽さん
> 上記は既存の以下の機能と等価でしょうか?
> http://sakura-editor.sourceforge.net/htmlhelp/HLP000184.html
> (ショートカットキーは、Ctrl+Alt+Uです)


Ctrl+Alt+Uの機能はサクラだけの特殊機能で、自画面の「折り返し桁数」を変更するものですね。
で、なすこじさんがやっているのは、他エディタ(メモ帳含む)によくあるのと等価な「折り返し方法」を変更するものです。

2008/5/31 (土) 17:48:46 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5312] Re2:作ってみました
説明が変で申し訳ないです m(_ _)m

「折り返しなし」「右端で折り返し」は新規機能となります。

A:折り返しなし(水平スクロールバーがテキストの幅に動的に追従)
B:指定幅で折り返し(既存機能)
  B1:折り返さない
  B2:タイプ別設定の幅で折り返し
  B3:現在のウィンドウ幅で折り返し
C:右端で折り返し(折り返し位置がウィンドウサイズに動的に追従)

上記Bが今までと同じ動作となっています。
B選択中のみCtrl+Alt+Uが使用可能で動作も今まで通りです。

2008/5/31 (土) 12:54:22 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)
[5309] Re:作ってみました
▼ なすこじさん
> >>dev:5305の仕様で作ってみました。

ありがとうございます。
ソースを見るのは余力があるときにでも…、となりそうですが、使いながら操作感や動作の確認をしてみたいと思います。(^^;

> bmpを修正した場合の差分はどのように作成すれば良いのでしょうか?

Patchesのサイズ制限でも特に問題なくUPできると思います。
パッチ本体とあわせてzipにまとめるのでも、別メッセージでUPするのでも、どちらでもよろしいかと。

> 以下動作について:
> タイプ別設定以外で折り返しの設定を変更した場合、一時設定となります。
> 一時設定状態の時は、複数画面で作業している時にタイプ別設定にて折り返し方法を変更しても、タイプ別設定を呼び出したウィンドウ以外は一時設定のままとなります。
> タイプ別設定を呼び出したウィンドウについては強制的にタイプ別設定で選んだ方法とします(上の発言から少し変更)


明示的に折り返しを変更しなくても、OKボタンで閉じただけで強制的に変更されてしまうのがちょっと悲しいかなぁ?
Windows画面プロパティの[テーマ]欄で「変更されたテーマ」が表示されるように、自画面が一時設定中のときは、折り返し方法に「一時設定適用中」とでも表示しておいて、そこが変更されなければ他画面も一切変更しない、という具合にすることは可能でしょうか?
単なる思い付きで言ってますが…(^^;

> ・デバッグモードで実行すると新規に追加したメニューの字が青いんですが、理由が分かりません (^^;

これはヘルプIDを割り当てていないと、忘れてるんじゃない?という確認の意味で青表示されるようになっています。
HLP000340〜342あたりの連番を振っておけばいいと思います。あとはヘルプメンテの方がうまくやってくれている、という感じです。

他に気づいた点:
「右端で折り返し」のときに1桁分だけ右余白がつくようになった?
「改行ぶら下げ」や「句読点ぶら下げ」を設定しているときは各々で2桁づつ、折り返し記号の1桁をあわせると、おそらく最大5桁は桁オーバーで表示されることになると思います。
設定に合わせて余白も自動調整されるといいのですが…
メニューアイコンの左右上端にゴミが残っていますね。(アイコン追加する際のガイド用に予備部分に点々をつけているのだと思いますが、これは消しておかないと)

2008/5/31 (土) 14:52:44 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
[5311] Re:作ってみました
分割ビューの場合なんですが、「右端で折り返す」はアクティブなビューの画面幅が変化するとそれに合わせて変化してますね。左右どちらかに固定した方が扱いやすいような気がします。左上のビュー(インデックス0番)のサイズ変更に合わせるのがソースコード記述上でも楽なんじゃないでしょうか?

2008/5/31 (土) 17:49:25 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5313] Re2:作ってみました
▼ ryojiさん

沢山のご助言ありがとうございます m(_ _)m

> 明示的に折り返しを変更しなくても、OKボタンで閉じただけで強制的に変更されてしまうのがちょっと悲しいかなぁ?
> Windows画面プロパティの[テーマ]欄で「変更されたテーマ」が表示されるように、自画面が一時設定中のときは、折り返し方法に「一時設定適用中」とでも表示しておいて、そこが変更されなければ他画面も一切変更しない、という具合にすることは可能でしょうか?


現在の状態が一時設定なのかどうかが分からないのはあまり良くないですね。
メニューの「テキストの折り返し方法変更」を、一時設定適用中は「折り返し方法(一時設定適用中)」にしてみます。
タイプ別設定の適用の動作については検討してみます。

> 「右端で折り返し」のときに1桁分だけ右余白がつくようになった?
> 「改行ぶら下げ」や「句読点ぶら下げ」を設定しているときは各々で2桁づつ、折り返し記号の1桁をあわせると、おそらく最大5桁は桁オーバーで表示されることになると思います。
> 設定に合わせて余白も自動調整されるといいのですが…


あうっ、全く分かっていませんでした (^^;
1桁分余裕を入れれば良いと思ってた……、修正し直します。

> メニューアイコンの左右上端にゴミが残っていますね。(アイコン追加する際のガイド用に予備部分に点々をつけているのだと思いますが、これは消しておかないと)

こっちは悩んだ挙げ句に残したのですが、上の点はガイドだったんですね。
それと「右端で折り返し」は「現在のウィンドウ幅で折り返し」のアイコンをコピーして使っているので、両方ツールバーに置くと区別できなくなります。
なので「右端で折り返し」のアイコンをほんの少しですが変更します。

> 分割ビューの場合なんですが、「右端で折り返す」はアクティブなビューの画面幅が変化するとそれに合わせて変化してますね。左右どちらかに固定した方が扱いやすいような気がします。左上のビュー(インデックス0番)のサイズ変更に合わせるのがソースコード記述上でも楽なんじゃないでしょうか?

右側で統一されている予定でしたが間違いでした。おっしゃる通り左上が最も楽なので左上のビューに合わせることにします。

ではでは。

2008/5/31 (土) 21:07:30 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5314] Re2:作ってみました
▼ ryojiさん
「改行ぶら下げ」をマニュアルで確認してみましたが、文字通り改行マークを右にぶら下げると言う事のようですので1桁分の幅ですよね。

従って、折り返し位置より右側に出るのは、
 句読点ぶら下げによる句読点(2桁)+ 折り返し記号(1桁)
 または
 句読点ぶら下げによる句読点(2桁)+ 改行ぶら下げによる改行マーク(1桁)
の3桁になると思います。

折り返し記号はオプションの選択状態によらず発生しますので、結局右側に必要なマージンはデフォルト1桁、「句読点ぶら下がり」選択時3桁で良さそうな感じですがどうでしょう?

2008/5/31 (土) 23:51:25 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)
[5315] Re3:作ってみました
> 「改行ぶら下げ」をマニュアルで確認してみましたが、文字通り改行マークを右にぶら下げると言う事のようですので1桁分の幅ですよね。

CRLFなどの改行マークは2桁幅でないと記号全体が見えないので、

句読点ぶら下げによる句読点(2桁)+ 改行ぶら下げによる改行マーク(2桁)
(このときは折り返し記号はつかない)

で最大は4桁かしら?

2008/6/2 (月) 04:26:08 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5316] Patchesにアップしました
Patches #1981460 テキスト折り返し方法の追加

色々修正しました。
ただし、タイプ別設定画面に「一時設定適用中」を表示するのは未実装です。
CShareDataにフラグを追加しそのON/OFFによって文字列を変更するくらいしか思い付かないのですが、セマフォみたいなことが必要でしょうかね?
もっと良い方法があったらお願いします m(_ _)m

2008/6/2 (月) 22:44:25 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SV1; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022)
[5317] Re:Patchesにアップしました
▼ なすこじさん
> 色々修正しました。

設定画面で折り返し方法の変更が無ければ、自画面の一時設定は解除しないようにされたのですね。良い感じです。

> ただし、タイプ別設定画面に「一時設定適用中」を表示するのは未実装です。

これについては、設定無変更なら一時設定解除はしないで欲しいという、そのついでにふと思いついたことです。表示の無い現状でも十分かな?と思います。

その他:
「折り返さない」設定のときの動作でいくつか気になる点があります。
1.置換画面で置換実行した場合、最大幅の更新に水平スクロールバーが追随しないみたいです
2.1行が最大幅を超える場合、水平スクロールバーのつまみを最右端にすることができない
 例えば、折り返しで3行になるような場合は最右端にしようとしても半分以下までに引き戻される
3.変更のたびに全行走査、というのでは単独で動かしているときには問題にならないレベルでも、別アプリと同時動作の場合に応答が悪くならないか?あるいは別アプリのほうの性能を極端に下げたりしないか?
 例えば、プログラムのコンパイル中にサクラで文字入力した場合とか、(まだ試していないけど)ちょっと気がかりです。なんだか必要以上にCPUを使ってしまう気がして。

2008/6/3 (火) 13:10:55 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5318] Re2:Patchesにアップしました
▼ ryojiさん

> 「折り返さない」設定のときの動作でいくつか気になる点があります。
> 1.置換画面で置換実行した場合、最大幅の更新に水平スクロールバーが追随しないみたいです
> 2.1行が最大幅を超える場合、水平スクロールバーのつまみを最右端にすることができない
>  例えば、折り返しで3行になるような場合は最右端にしようとしても半分以下までに引き戻される


ありがとうございます。確認・修正します。

> 3.変更のたびに全行走査、というのでは単独で動かしているときには問題にならないレベルでも、別アプリと同時動作の場合に応答が悪くならないか?あるいは別アプリのほうの性能を極端に下げたりしないか?
>  例えば、プログラムのコンパイル中にサクラで文字入力した場合とか、(まだ試していないけど)ちょっと気がかりです。なんだか必要以上にCPUを使ってしまう気がして。


負荷が高くなるのは間違いないので問題となるかもしれませんね。
数千行あるとカーソル行アンダーラインのちらつきも感じるようになりますし。

『負荷を上げずに「折り返しなし」を使う』オプションを追加して、オプションがチェックされている場合はメモ帳と同様に行長の拡大のみ監視するようにするというのはどうでしょう?(初期値はチェック入)
ryojiさんが>>dev:5303で上げられているように、編集した行だけをチェックすれば良いので相当負荷は軽くなると思います。

2008/6/3 (火) 22:27:08 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
[5319] Re3:Patchesにアップしました
▼ なすこじさん
> 『負荷を上げずに「折り返しなし」を使う』オプションを追加して、オプションがチェックされている場合はメモ帳と同様に行長の拡大のみ監視するようにするというのはどうでしょう?(初期値はチェック入)

僕としては、さほど大きな魅力を感じているわけでもない「折り返しなし」機能にそこまで細かい設定は要らないかな、と思いますけど...
特に欲しいと考えている人たちが機能・性能バランスを考慮して「こっちが妥当だ」と決めてくれるなら、そっちの意見に従いたいところです。

2008/6/4 (水) 09:46:24 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5320] Re4:Patchesにアップしました
> 機能・性能バランス

機能/性能バランス、ということについて少し考えてみました。
現状のサクラでは、対括弧の強調表示は画面可視範囲内しかサーチしない、カラー表示の上塗りはしないなど、実用範囲でOKなら無理にハードに負担はかけないようにしているところが多々見られます。
個々の機能で見るともっと完全なものにするのが良いのでしょうが、他機能のために余力を残すという意味では妥当なことなのかな〜、とも思います。
エディタ機能全体として、既存機能の強化、新機能の追加まで含めたハード的な余力って、どのくらいあるんでしょうかね??

2008/6/4 (水) 12:57:28 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5321] Re5:Patchesにアップしました
▼ ryojiさん
> エディタ機能全体として、既存機能の強化、新機能の追加まで含めたハード的な余力って、どのくらいあるんでしょうかね??

私自身は余力があり余っていると思うのですが、使用者のPCや使用方法で変わってくるので中々定量的に示すのは難しいですね。

ただ、常に全ライン走査というのはかなりパワーを必要とするので余り良い方法ではないとは思います。
現にカーソル行アンダーラインがちらつくなどの影響が出ています。
単純なコーディングで済まそうとしていたからなのですが、上記のような見た目の問題を軽減するために現在はもう少し複雑な判定を考えています。

逆に、見た目の性能劣化が少なければ少々要求パワーが上がっても良いかなという感じです。
気になる方はオプションを切って今まで通りの状態で使用してもらうということで……

複雑なコーディングをすると後々の不具合の元になるのでできるだけ単純にしたかったのですが、私のレベルではもう無理、どんどん汚くなっていく (^^;

あと>>dev:5317の、
> 「折り返さない」設定のときの動作でいくつか気になる点があります。
> 1.置換画面で置換実行した場合、最大幅の更新に水平スクロールバーが追随しないみたいです


上記現象の発生条件がわかりません。
文書が編集されたときに下記の関数のどれかが呼ばれれば大丈夫なつもりなんですが、呼ばれないルートがあるのでしょうかね?
 CEditView::InsertData_CEditView()
 CEditView::DeleteData2()
 CEditView::ReplaceData_CEditView()

ではでは。

2008/6/4 (水) 19:15:13 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5322] Re6:Patchesにアップしました
▼ なすこじさん
> 現在はもう少し複雑な判定を考えています。

if(変更行長>最大長)
 最大長=変更行長
else if(最大長だった行が短くなった)
 全行再スキャン

てな感じの細工でもかなり負荷緩和されそうですね。

> > 1.置換画面で置換実行した場合、最大幅の更新に水平スクロールバーが追随しないみたいです
>
> 上記現象の発生条件がわかりません。


普通に「置換」ボタンで置換実行するだけです。
例えば、改行のみがいくつか存在するテキストに1行だけスクロールバーが表示されるような長い行を追加しておいて、その行データを空文字列に置換するとスクロールバーが追随しません。
その後、置換ダイアログを閉じてビューをクリックしたり、矢印キーでカーソル移動すると、そのときにスクロールバーが追随します。

>  CEditView::InsertData_CEditView()
>  CEditView::DeleteData2()
>  CEditView::ReplaceData_CEditView()


「置換」ボタンでの置換動作は、検索でカーソル移動/選択したのち選択範囲の文字列を入れ替えるという連続動作になっています。
検索でのカーソル移動では画面がスクロールしますが、文字列入れ替えは描画OFFで行ってから全体再描画してます。
描画OFFでMoveCursor()が実行されるときはスクロールOFFになっているため現状のコードでは最大幅のスキャンが行われません。
最後の全体再描画では更新されていない昔の最大幅のままでスクロールバーが再描画されます。

MoveCursor()ではなく、MoveCursor()の中で呼び出しているAdjustScrollBars()のほうに最大幅計算の処理も入れてしまえば、最後の全体再描画(こちらでもAdjustScrollBars()を呼び出している)で正しく表示されるんじゃないでしょうか。

2008/6/4 (水) 21:17:01 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5324] Re7:Patchesにアップしました
▼ ryojiさん
どうもありがとうございます。現象確認できました。
相変わらずソースが読み切れてませんでした (^^;

修正の方なんですが、最大幅の算出の呼び出しを if( bScroll ){ の上に出してしまうというのではまずいですかね?

2008/6/4 (水) 20:05:58 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5323] Re:水平スクロールバーを常にテキストの幅に合わせる
ツリーが深いのでここへ繋げます。
修正版をアップしました。
 080604_01_TextWrapControl_a1364.zip

1.1行が最大幅を超える場合、水平スクロール バーのつまみを最右端にすることができない不具合を修正しました。

2.以下の操作を除いて全ラインの走査をしないようにしました。
・最大幅の行で改行を入力する
・最大幅の行を含んで削除を実行する


Undo, Redoや置換で発生する操作も対象に含まれます。
普通に入力するぶんには今まで殆ど変わらない負荷となると思います。

高負荷となるような操作例:
・最大幅の行の行頭でEnterキーをリピートする
・最大幅の行でDeleteキーまたはBackSpaceキーをリピートする


2008/6/5 (木) 17:51:44 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5325] 修正版アップしました
以下の修正を行いました。

1.置換ダイアログで置換を実行したとき、スクロールバーの幅が更新されない不具合を修正(dev:5322,5324)
2.最大幅の行での文字削除によるカーソル行アンダーラインのちらつきを軽減した
3.最大幅の行で改行を入力した場合でも、行頭かつ文字列非選択の場合は全ラインの走査を実行しないようにした(負荷軽減)

2008/6/5 (木) 20:54:51 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5326] Re:修正版アップしました
ざっとソースコードも眺めてみました。
それで、いくつか疑問・コメントがあります。

1.
テキスト最大幅の算出をテキスト変更直後ではなく CEditView::MoveCursor() で遅延実行するのはなぜですか?
その場で計算させれば、
m_bCalTextWidth
m_nCalTextWidthLinesFrom
m_nCalTextWidthLinesTo
といったややこしいメンバー変数も不要になると思うのですが…
あと、以前の計算要求が実行される前に次のテキスト変更があった場合、新たな変更を加えてしまった後で以前の計算要求を実行しているように見えますが、これは何?

2.
テキスト最大幅の算出を CEditView::OnSize() で実行するのはなぜですか?
テキスト最大幅は画面サイズには関係無いと思うのですが…
CEditView::OnSize() は各ビューのサイズ変更で呼ばれるので、画面を4分割して分割バーを動かすと1度に4回も計算しなおすことになるのでは?
テキスト変更時と SetLayoutInfo() のときくらいだけで済ませられないのでしょうか?

3.
CEditView::GetRightEdgeForScrollBar()は「折り返しなし」のときしか使われていないのですが、全モード共通でスクロール最右端の計算をするのに使えれば、もっとすっきりしたものができるかな?と思います。
指定幅で折り返す場合にも指定幅ぴったりではなく、右余白(改行/句読点ぶら下げ)が見えるところまでスクロールバーでスクロールできるようになると嬉しいですね。

2008/6/6 (金) 12:54:49 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5330] Re:修正版アップしました
コードを眺めていて思ったんですが、今は「折り返さない」については最低限の実装(最大長の拡大方向のみ追従)に止めておきませんか?
設定やコマンドの追加だけでも結構な量なのに、動作まで厳密さを求めていたらレビュー/テストは滞るばかりで、そのうちまたお蔵入りになってしまいそうな予感。
そんなことになるくらいなら、最低限の実装で固めておいて、追加分は追加分としてあとでじっくり煮詰めていくのが良いように思いますけど。今考えているよりも良い案が浮かぶかもしれませんし。

・最大長の縮小方向への追従
・どんなに長くなっても折り返さない
・スクロールなしのときはスクロールバーを消す


といったあたりは後付けでも…
#「読み切れない/意欲が追い付かない」いうのが本音だったりしますけど(^^;

2008/6/6 (金) 21:46:12 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5331] Re2:修正版アップしました
▼ ryojiさん
> コードを眺めていて思ったんですが、今は「折り返さない」については最低限の実装(最大長の拡大方向のみ追従)に止めておきませんか?

私はそれでかまいません。
ただ、私の中では「最大長の拡大方向のみ追従」というのが「折り返さない」からほんの少し変更しただけの状態なので、いっその事出来の悪い「折り返さない」を削除してしまった方が良い気がしています。

以下>>dev:5326に対して
> 1.
> テキスト最大幅の算出をテキスト変更直後ではなく CEditView::MoveCursor() で遅延実行するのはなぜですか?


元々は1回の操作に対して何度も全ライン走査が走らない様にする事を考えていたのですが、負荷軽減をした事で不要になったと思います。

> あと、以前の計算要求が実行される前に次のテキスト変更があった場合、新たな変更を加えてしまった後で以前の計算要求を実行しているように見えますが、これは何?

バグです (^^;
ループした時のために辻褄を合わせようとして変な事になってます。

> 2.
> テキスト最大幅の算出を CEditView::OnSize() で実行するのはなぜですか?
> テキスト最大幅は画面サイズには関係無いと思うのですが…


最大幅が未算出の時に算出されるようにしていますが、手抜き……かもしれない。
未算出の時だけなので、アプリ起動時/ファイル読み込み/設定変更などで最大幅がクリアされなければ殆ど実行されないです。
ただ、OnSize()を利用するのは確かに変ですね。
SetLayoutInfo()は印刷プレビューとの絡みで躊躇しました。

ということで、「折り返さない」を削除したものを作成しても良いでしょうか?

2008/6/6 (金) 22:07:13 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
[5333] Re3:修正版アップしました
▼ なすこじさん
> ということで、「折り返さない」を削除したものを作成しても良いでしょうか?

当面は「折り返さない」を選択したら最大幅(10240桁)が適用されるようにしておくのでもいいんじゃないでしょうか?
まだ本格的に手をつける人がいないから最大幅で代用してるだけ、というつもりで。
他エディタにそういう実装のものもちょくちょく見かけますし、あとで変更の話が出たとしてもUI部の作り込みの手間が省けると思います。

2008/6/7 (土) 22:40:20 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5335] Re4:修正版アップしました
修正版をアップしました。

080607_01_TextWrapControl_a1372
 >>dev:5326の1,2の取り込みなど。

080607_02_TextWrapControl_a1372
 上記から「折り返しなし」機能を10240桁で折り返しに機能縮小した。
 折り返し方法の初期値を「指定幅で折り返す」に変更した。

「折り返しなし」機能は開発中ということにして、080607_02を使って「右端で折り返す」機能の完成を目指すことにします。
でも差分が1300行近い……

2008/6/10 (火) 21:06:55 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; InfoPath.2; .NET CLR 1.1.4322; .NET CLR 3.5.21022)
[5340] Re5:修正版アップしました
▼ なすこじさん
> 修正版をアップしました。

基本路線としてなすこじさんのパッチで筋の良い感じだったので、それをもとに既存機能も含め細部に修正を加えてみました。

詳細はPatchesのほうをご覧頂くとして、自分なりにですが、これでおおむね満足なものになったと思ってます。

2008/6/12 (木) 00:14:41 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5343] Re6:修正版アップしました
▼ ryojiさん
> 詳細はPatchesのほうをご覧頂くとして、自分なりにですが、これでおおむね満足なものになったと思ってます。

080611_02版で確認しました。
私も十分満足のいくものだと思います。

後は、折角作ったので使ってくれる人がいるといいなぁって感じです (^^;

2008/6/18 (水) 22:18:06 kobake  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[5345] ユーザ視点的な感想
今更ですが、試用してみました(ryojiさんに作成いただいたUNICODE版パッチにて動作を試させていただきました)。
今のところこの件の作業のお手伝いはできそうにないですが、
ユーザ視点な感想だけ、勝手ながら述べさせてください。長文失礼致します。。

◆メニュー文言について

 「折り返し桁数: XX桁 (XX)」というメニューの意味がわからなかった。
 ↓
 ちょっと考えて、「あぁ、現在の折り返しステータスが表示されているのか」と思ったが、違った。
 ↓
 さらに考えて、「これをクリックすると、このステータスになるのか」という正確な理解にやっとたどり着いた。
 ↓
 「折り返し桁数: XX桁 (XX)」にはわざわざ数字を出しているのに「折り返し方法」のサブメニューには数字が出ていなく、文言の不整合が気持ち悪く感じた。
 ↓
 個人的には「折り返し方法の順次切替」のような文言が直感的かな、と思っています。


◆「指定桁で折り返す」について

 「指定桁で折り返す」を押すと、桁数入力ダイアログが出て任意の桁数が入力できるのかな、と思ったが、違った。
 ↓
 動作だけを見ると、正直、「折り返さない」と何が違うの?と思った。
 ↓
 どっかに桁数設定があるのかと思い、探した。ちょっと時間かかった。(実はズルしてソースを眺めて探した)
 ↓
 共通設定的な要素だと思ったが、タイプ別設定であることを知って、ちょっと戸惑った。

一般的なユースケースかは分かりませんが、自分は以下のような使い方をよくします。
・「メールの下書きだから72桁で折り返す設定で文章を書こう」
・「コマンド文が含まれる文書だから80桁で折り返す設定で文章を書こう」
・「50文字で折り返される掲示板への発言の下書きだから、50桁で折り返す設定で文章を書こう」


今までは、上記目的を果たすために、ウィンドウ幅を目的の桁数に合わせて、
「現在のウィンドウ幅で折り返し」をしてから、作業していました。
作業中は、他のウィンドウを見ながら作業する等の理由で、
状況に応じてウィンドウサイズを変更していました。

「目的の桁数(桁数は場面によりけり)に折り返し設定をしてから、
折り返し位置を保ったままウィンドウサイズを変更する」という操作が
以前よりも手軽にできなくなってしまった(毎回設定を変更しなければならない)のが、
ちょっと残念です。

可能であれば、「指定桁で折り返す」のときは毎回、
桁数をダイアログ問い合わせするような機能も付けていただけると嬉しいです。


上記機能が付かないにしても、
「指定桁で折り返す」の「指定桁」って何?という疑問を多くの方が抱かれる気がするので、せめて「タイプ別設定の指定桁で折り返す」などの文言にしておいたほうが、混乱が起きにくいかな、と思いました。

さらに言うと、デフォルト設定の「指定桁」が10240なので、
「折り返さない」と「指定桁で折り返す」の動作の違いって何?という疑問を抱く方もけっこう出てくると思います。
デフォルト値を100などにしておき、「折り返されたことに気づける」ようにしておくと、
少しは機能の理解の助けになると思いますが、どうでしょう。

(文字数オーバーしちゃいましたので、分割投稿させていただきます)

2008/6/18 (水) 22:18:48 kobake  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[5346] ユーザ視点的な感想 つづき
(文字数オーバーしちゃいましたので、分割投稿させていただきます)

◆折り返し設定の保存について

「折り返し方法」「折り返し桁数」を「タイプ別設定」で保持する利点がよくわかりませんでした。
・「設定」メニューの「折り返し方法」から折り返し方法を変更した場合はタイプ別設定にまで影響しちゃうのかしら…。
・このウィンドウでは折り返し無し、あのウィンドウでは折り返しあり、でも両者は同タイプの文書…。

などなど、なんだかユーザ視点的にはモヤモヤする印象です。

このモヤモヤは、保存場所が「タイプ別設定」だろうが「共通設定」だろうが変わらないと思います。

アプリ起動時(ウィンドウオープン時)のデフォルト折り返し設定が、
設定 (タイプ別設定 or 共通設定) として保存されている、
という動作であれば、個人的には一切のモヤモヤが消えます。

#ちなみに、タイプ別設定 or 共通設定どちらが良いかと聞かれたら、すみませんが自分は共通設定を推しちゃいます。。


-- -- --
以上、こんなところです。
なんだか否定的なことばかり多く書いてしまったように見えて恐縮ですが、ピュアなフィードバック、ということでご参考いただければ、と思います(時期的に今更ですけど)。

ウィンドウ追従の折り返し機能は、自分も前々から欲しいなぁ、とは思っていたので、
今回の対応には感謝しております。よりよい機能に洗練されれば、と思い、
辛口ですが純粋な感想を書き残しました。

2008/6/18 (水) 23:51:50 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5347] Re:ユーザ視点的な感想 つづき
▼ kobakeさん
ご意見どうもありがとうございますm(_ _)m

> ◆メニュー文言について
>
>  「折り返し桁数: XX桁 (XX)」にはわざわざ数字を出しているのに「折り返し方法」のサブメニューには数字が出ていなく、文言の不整合が気持ち悪く感じた。


折り返し桁の変更と折り返し方法の変更なので意味自体がちょっと違うのですが、言われてみれば確かに気持ち悪いかもですね。

>  個人的には「折り返し方法の順次切替」のような文言が直感的かな、と思っています。

ここはちょっと判断がつかないです。
ただ、「折り返し方法の順次切替」だと文字列が長いので、この後に数字を付けるとメニューが大きくなりすぎるような気はします。
例えば「折り返し方法の順次切替(次は10240桁)」とか (^^;

> ◆「指定桁で折り返す」について
>
>  「指定桁で折り返す」を押すと、桁数入力ダイアログが出て任意の桁数が入力できるのかな、と思ったが、違った。
>  ↓
>  動作だけを見ると、正直、「折り返さない」と何が違うの?と思った。


「指定桁で折り返す」が既存機能そのままという事と、「折り返さない」がまだ育成途中という事があります。
「折り返さない」は、スクロールバーがテキストの幅に一致するようになる予定です。

(省略)
> 「目的の桁数(桁数は場面によりけり)に折り返し設定をしてから、
> 折り返し位置を保ったままウィンドウサイズを変更する」という操作が
> 以前よりも手軽にできなくなってしまった(毎回設定を変更しなければならない)のが、
> ちょっと残念です。


「指定桁で折り返す」が既存機能そのままなので、それを選べばいままで通りです。

> 可能であれば、「指定桁で折り返す」のときは毎回、
> 桁数をダイアログ問い合わせするような機能も付けていただけると嬉しいです。


これはあり得る対応ですね。ウィンドウ幅とは関係なく折り返し桁を指定したいという事はあるかもしれません。

> ◆折り返し設定の保存について
>
> 「折り返し方法」「折り返し桁数」を「タイプ別設定」で保持する利点がよくわかりませんでした。


(省略)

> アプリ起動時(ウィンドウオープン時)のデフォルト折り返し設定が、
> 設定 (タイプ別設定 or 共通設定) として保存されている、
> という動作であれば、個人的には一切のモヤモヤが消えます。


すみません、ここ意味が読み取れません m(_ _)m

通常の使用で折り返し方法を頻繁に変更するというのは無いような気がするのですが、どうなんでしょうね?

そのウィンドウの設定が一時的に変更できる、というのが重要だと思います。
問題は、一時設定になっている事をメニューの中でしか表示していない事ではないでしょうか?
そのウィンドウを見て一時設定適用中である事が判断できないと私も混乱しそうです。

> #ちなみに、タイプ別設定 or 共通設定どちらが良いかと聞かれたら、すみませんが自分は共通設定を推しちゃいます。。

私は、基本を1024桁、テキストを120桁、C/C++を512桁の設定にしていたので、タイプ別設定にないと困ります (^^;

ただ、「折り返さない」が完成した後は、テキスト以外は「折り返さない」に設定予定なので共通設定でもOKですが……

ではでは。

2008/6/20 (金) 00:16:11 kobake  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[5351] Re2:ユーザ視点的な感想 つづき
▼ なすこじさん
> > ◆メニュー文言について
> >
> >  「折り返し桁数: XX桁 (XX)」にはわざわざ数字を出しているのに「折り返し方法」のサブメニューには数字が出ていなく、文言の不整合が気持ち悪く感じた。

>
> 折り返し桁の変更と折り返し方法の変更なので意味自体がちょっと違うのですが、言われてみれば確かに気持ち悪いかもですね。


むむむ、さらに自分は勘違いをしていたようです。
Ctrl+Alt+U は桁数の切替のみなのですね。。。説明されてやっと理解した…気がします。
ただ、理解した(?)後でも、実際にメニューを使う度に「どんな仕様だったっけ」と説明を読み直しています。。

考えられる折り返しパターン(折り返し方法と折り返し桁のポリシー)を
簡潔に説明できますか?(「簡潔さ」は設計においてもユーザの理解においても重要です)


> >  個人的には「折り返し方法の順次切替」のような文言が直感的かな、と思っています。
>
> ここはちょっと判断がつかないです。
> ただ、「折り返し方法の順次切替」だと文字列が長いので、この後に数字を付けるとメニューが大きくなりすぎるような気はします。
> 例えば「折り返し方法の順次切替(次は10240桁)」とか (^^;


上で気づきましたが、順次切替では無いのですね (もともとのCtrl+Alt+Uの挙動と同じだという思い込みがありました)。
なので、この文言はどっちみち誤りなので取り下げます。ちなみに、「折り返し方法の順次切替」の後に数字を付ける想定ではなく、単に「折り返し方法の順次切替」とするだけの想定で提案しました。


> > ◆「指定桁で折り返す」について
> >  動作だけを見ると、正直、「折り返さない」と何が違うの?と思った。

> 「指定桁で折り返す」が既存機能そのままという事と、「折り返さない」がまだ育成途中という事があります。
> 「折り返さない」は、スクロールバーがテキストの幅に一致するようになる予定です。


なるほど、「折り返さない」の挙動は了解です。


> > 「目的の桁数(桁数は場面によりけり)に折り返し設定をしてから、
> > 折り返し位置を保ったままウィンドウサイズを変更する」という操作が
> > 以前よりも手軽にできなくなってしまった(毎回設定を変更しなければならない)のが、
> > ちょっと残念です。

>
> 「指定桁で折り返す」が既存機能そのままなので、それを選べばいままで通りです。


「桁数を変える度に」「毎回設定を変更しなければならない」のは変わりませんよね?(自分はそのことを、「手軽でなくなった」と言いました)


(文字数制限につき投稿を分割します)

2008/6/23 (月) 01:48:59 なすこじ  
Mozilla/4.8 (Macintosh; U; PPC)
[5361] Re3:ユーザ視点的な感想 つづき
見落としてました m(_ _)m
必要そうなとこだけコメントします。

> ただ、理解した(?)後でも、実際にメニューを使う度に「どんな仕様だったっけ」と説明を読み直しています。。
>
> 考えられる折り返しパターン(折り返し方法と折り返し桁のポリシー)を
> 簡潔に説明できますか?(「簡潔さ」は設計においてもユーザの理解においても重要です)


A:折り返さない(現在は不完全対応)
 折り返さずに改行までを1行で表示する。
 スクロールバーがテキストの最大幅に一致する。
 利点としては
  ・スクロールバーからそのテキストの横幅が大体判る
  ・余分な領域へスクロールする事が少ない
  ・横幅が長くなっても折り返し桁の再調整が不要

B:指定幅で折り返す(既存機能)
 ユーザが指定した幅で折り返す。
 折り返し位置を動的に変更はしない。

C:ウィンドウ幅で折り返す
 ウィンドウ幅の変更に追従して折り返し位置を変更する。
 利点としては
  ・テキストが横にはみ出ないので横スクロールする必要がない

上記の通りです。
元々処理能力の問題からBのみ存在していたと思います。
Bの中で、
 B1:アプリの最大幅(10240桁)に折り返し位置を設定する
 B2:タイプ別設定の桁数に折り返し位置を設定する
 B3:現在表示中のウィンドウ幅に折り返し位置を設定する
があり、AをB1で、CをB3で代用していた様な状態ですね。

2008/6/20 (金) 00:16:35 kobake  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[5352] Re2:ユーザ視点的な感想 つづき
(文字数制限につき投稿を分割します)

> > アプリ起動時(ウィンドウオープン時)のデフォルト折り返し設定が、
> > 設定 (タイプ別設定 or 共通設定) として保存されている、
> > という動作であれば、個人的には一切のモヤモヤが消えます。

>
> すみません、ここ意味が読み取れません m(_ _)m


具体的に説明しますと、以下のような感じです。

・折り返し方法は、ウィンドウ毎に個別に一時的に設定するポリシー。
・タイプ別設定は「デフォルトの折り返し方法」を保持する。
・ウィンドウが生成された時点での折り返し方法は、タイプ別設定が保持する「デフォルトの折り返し方法」に従う。
・タイプ別設定の「デフォルトの折り返し方法」を変更した場合、それはあくまでもウィンドウ生成時に用いられるデフォルト値であるため、既に存在するウィンドウには影響を与えない。
・ウィンドウ個別の折り返し方法を変更した場合、それはあくまでもウィンドウ個別の設定であるので、他の既存のウィンドウにも、タイプ別設定にも、影響は与えない。



> 通常の使用で折り返し方法を頻繁に変更するというのは無いような気がするのですが、どうなんでしょうね?

とりあえずユーザのうちの1人の自分は、
割と頻繁に折り返し方法を変更します。


> > #ちなみに、タイプ別設定 or 共通設定どちらが良いかと聞かれたら、すみませんが自分は共通設定を推しちゃいます。。
>
> 私は、基本を1024桁、テキストを120桁、C/C++を512桁の設定にしていたので、タイプ別設定にないと困ります (^^;


なるほど。では反対はしません。


2008/6/19 (木) 02:15:13 ryoji  
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506; InfoPath.2)
[5349] Re:ユーザ視点的な感想 つづき
▼ kobakeさん

ご意見ありがとうございます。

表記については、自分としては、それなりに考えてとりあえず今の形にしました。
観点としては、簡潔で、他エディタと似通った表記を採用する、というくらいでしょうか。
自分では違和感を感じないものにしたつもりではありますが、モヤモヤするというのも、さもありなんという感じです。
直感的か、好みに合うか、については個人差が大きく出るので何とも言えません。
これまでも、些細なことでどうにも意見がかみ合わない、参加する人の数だけ提案がある、ということは何度もありまして。

ほんの少し慣れてもらえば済む程度、ちょっと変えても現実問題として大差無かったなぁ、みたいなことも。
今回のは従来機能との絡みもあって、少々ややこしくなっているのかな?と思います。

>>dev:5304 でも述べたとおり、「細部まで仕様を練って他の人たちと調整するのが面倒」なので、とりあえず自分仕様で作って投下するので、特に強いこだわりがあるようなら、以後はその人が他の人たちの意見をとりまとめていただけたらなぁ、と思っております。

タイプ別設定か共通設定か、ということについては、他エディタもほとんどタイプ別のほうですし、自分もそれで何の違和感もありませんけど、どうなんでしょう?
たとえば「右端で折り返す」を好んで使う人は、どんな文書でも必ず、まずはそれで開いてほしいと思っているんでしょうかね?
自分は「右端で折り返す」や「折り返さない」はコマンドからの一時設定でしか使わないと思うので、自分用途に限れば設定として保存できる必要はまったくありません。従来通りタイプ別設定で折り返し桁数が指定できれば十分です。

最近ではだいぶ試用者が見込めるようになったUNICODE版に入れてしまって評価してもらうのがいいのかしら?

2008/6/20 (金) 00:16:51 kobake  
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
[5353] Re2:ユーザ視点的な感想 つづき
▼ ryojiさん
> 表記については、自分としては、それなりに考えてとりあえず今の形にしました。
> 観点としては、簡潔で、他エディタと似通った表記を採用する、というくらいでしょうか。
> 自分では違和感を感じないものにしたつもりではありますが、モヤモヤするというのも、さもありなんという感じです。
> 直感的か、好みに合うか、については個人差が大きく出るので何とも言えません。
> これまでも、些細なことでどうにも意見がかみ合わない、参加する人の数だけ提案がある、ということは何度もありまして。
>
> ほんの少し慣れてもらえば済む程度、ちょっと変えても現実問題として大差無かったなぁ、みたいなことも。
> 今回のは従来機能との絡みもあって、少々ややこしくなっているのかな?と思います。


議論を煮詰めるあまり、進行が遅くなるのは避けたいところです。
ただ、簡単な変更で大きな効果を得られる(かもしれない)提案項目に関しては
前向きにご検討いただければ幸いです。


> タイプ別設定か共通設定か、ということについては、他エディタもほとんどタイプ別のほうですし、自分もそれで何の違和感もありませんけど、どうなんでしょう?
> たとえば「右端で折り返す」を好んで使う人は、どんな文書でも必ず、まずはそれで開いてほしいと思っているんでしょうかね?


たぶんトリッキーな使い方なので、あえて説明はしませんが
場面によっては「どんな文書でもそれで開いてほしい」ことは、自分の場合、あります。

逆に、自分は、タイプ別設定で折り返し情報を保存することの利点が分からなかったから、「共通設定でいいじゃん」的に単純に思っただけなのですが、少なくとも、それ(タイプ別設定での保持)を必要とする方がおられることが分かりましたので、今の時点での自分の意見は「タイプ別設定で良い」です。


> 最近ではだいぶ試用者が見込めるようになったUNICODE版に入れてしまって評価してもらうのがいいのかしら?

個人的には、コミットしてしまって良いと思います。
第三者のフィードバックほど貴重なものはないので。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81
[ut:0.030][st:0.010]