goleftkakkoの仕様No.19998
Kamonohasi さん 05/09/19 00:00
 
過去ログなどを検索したのですが、いまいちわからないので質問します。
**********************************
a{cde}gh
A{}DEFGH
**********************************
こんな文章でカーソルが
・「{c」の間にある場合、goleftkakko が失敗
・「{}」の間にある場合、goleftkakko が成功
・「}g」の間にある場合、goleftkakko が成功
・「gh」の間にある場合、goleftkakko が失敗
します。
統一されていないように感じるのですが、どこか設定があるのでしょうか?
ヘルプを読む限りでは「成功、成功、失敗、失敗」になるような気がします。

こんなマクロで試しました。
disableerrormsg;
goleftkakko;
if(!result){
 message "移動不可";
}
endmacro;
マクロが悪いのでしょうか?

[ ]
RE:19998 goleftkakkoの仕様No.20008
秀丸担当 さん 05/09/20 12:20
 

>**********************************
>こんな文章でカーソルが
>・「{c」の間にある場合、goleftkakko が失敗
>・「{}」の間にある場合、goleftkakko が成功
>・「}g」の間にある場合、goleftkakko が成功
>・「gh」の間にある場合、goleftkakko が失敗
>します。
>統一されていないように感じるのですが、どこか設定があるのでしょうか?
>ヘルプを読む限りでは「成功、成功、失敗、失敗」になるような気がします。

「対応する括弧に移動」「{に移動」「}に移動」は、カーソル位置の左側に括弧
があっても認識しています。
なので、「{c」の間と「}g」の間にある場合は、カーソル位置の左側にある括弧
を認識して、このようになっています。
この動作を変更する設定はないです。
ヘルプにはそのことも書いておくようにしようと思います。

[ ]
RE:20008 goleftkakkoの仕様No.20010
Kamonohasi さん 05/09/20 13:41
 
>「対応する括弧に移動」「{に移動」「}に移動」は、カーソル位置の左側に括弧
>があっても認識しています。
>なので、「{c」の間と「}g」の間にある場合は、カーソル位置の左側にある括弧
>を認識して、このようになっています。
というとそちらの環境では『「{c」の間』は成功しているのでしょうか?
『「}g」の間』つまり『括弧の外から括弧の始まりへ移動』に関してはそうい
う機能だ、ってので問題ないと思います。

問題点を絞りますと、私の環境では、括弧が空のときと中に何かがある場合で
動作が違っているので、それは仕様なのかお聞きしたいです。

>>・「{c」の間にある場合、goleftkakko が失敗
>>・「{}」の間にある場合、goleftkakko が成功
>>・「}g」の間にある場合、goleftkakko が成功
>>・「gh」の間にある場合、goleftkakko が失敗
上の二行で失敗と成功とに別れるのは変ですよね?
******************
unntara{
}kanntara
******************
unntara{}kanntara
******************
の二種類のテキストで「{」の右隣でgoleftkakkoをすると上では失敗して、下
では成功します。
同様にキー割り当てで「{に移動」でも動作に差があります。

>この動作を変更する設定はないです。
>ヘルプにはそのことも書いておくようにしようと思います。
よろしくお願い致します。

[ ]
RE:20010 goleftkakkoの仕様No.20012
アルビレオ さん 05/09/20 14:30
 
横から失礼します。ユーザーのアルビレオです。

基本的に「カーソル位置の文字」とは|の右隣にある文字を指します。
このことは「文字コード表示」などで確認できますが、Insertキーを押してカー
ソル形状を■にすると簡単に確認できます。(上書きモードになるので注意)
そのため、カーソル位置の両側に括弧がある場合は右側の文字の方が優先される
ようです。

それを踏まえて整理すると
>・「{c」の間にある場合、goleftkakko が失敗
カーソル位置に括弧がない→カーソル位置の左隣はすでに左括弧なので失敗

>・「{}」の間にある場合、goleftkakko が成功
カーソル位置は右括弧→左括弧へ移動→成功

>・「}g」の間にある場合、goleftkakko が成功
カーソル位置に括弧がない→カーソル位置の左隣は右括弧→左括弧へ移動→成功

>・「gh」の間にある場合、goleftkakko が失敗
カーソル位置ににも、その左隣にも括弧がないので失敗

という一貫した解釈になっていますね。

[ ]
RE:20012 goleftkakkoの仕様No.20013
秀丸担当 さん 05/09/20 14:47
 

アルビレオさんありがとうございます。
アルビレオさんの言われる通りでして、先に右側の括弧をチェックして、無けれ
ば左側をチェックします。

こちらで動作が違うわけではなく、
>・「{c」の間にある場合、goleftkakko が失敗
>・「{}」の間にある場合、goleftkakko が成功
>・「}g」の間にある場合、goleftkakko が成功
>・「gh」の間にある場合、goleftkakko が失敗
この通りになり、これが現状では仕様どおりということになります。


「{c」の間にある場合は、「{」の左にカーソルがあるときと同じ動作で、
「}g」の間にある場合は、「}」の左にカーソルがあるときと同じ動作というこ
とです。

「{}」の間にある場合は、左側はチェックされず、右側にカーソルがある場合の
みのチェックになります。

[ ]
RE:20013 goleftkakkoの仕様No.20022
Kamonohasi さん 05/09/20 22:47
 
アルビレオさんありがとうございます。
↓が秀丸の判定方法では正しい動作だということは理解できました > 秀丸担当さん
>こちらで動作が違うわけではなく、
>>・「{c」の間にある場合、goleftkakko が失敗
>>・「{}」の間にある場合、goleftkakko が成功
>>・「}g」の間にある場合、goleftkakko が成功
>>・「gh」の間にある場合、goleftkakko が失敗
>この通りになり、これが現状では仕様どおりということになります。

つまり、現在のカーソルを含むブロックの「{」に移動しようとすると
************************************************************
#x = x; #y = y;

disabledraw;
disableerrormsg;
#fLeftKakko = false;
if(column != 0){
 left;
 if( (colorcode != 3) && (code == ascii("}")) ){
  right;
  goleftkakko;
  if(result){
   goleftkakko;
   if(result){
    #fLeftKakko = true;
   }
  }
 }else if( (colorcode != 3) && (code == ascii("{")) ){
  #fLeftKakko = true;
 }else{
  right;
 }
}

if(!#fLeftKakko){
 goleftkakko;
 if(result){
  #fLeftKakko = true;
 }
}
enabledraw;
enableerrormsg;
if(#fLeftKakko){
 message "ココが移動先";
}else{
 moveto #x,#y;
 message "移動に失敗--文法的におかしいかトップレベル又はプリプロセッサ系";
}
************************************************************
なマクロでいいのでしょうか?

いくらなんでもって気がしますが……

[ ]
RE:20022 goleftkakkoの仕様No.20023
Kamonohasi さん 05/09/20 22:54
 
間違い&補足です
>つまり、現在のカーソルを含むブロックの「{」に移動しようとすると
カーソルが所属するネストの始まりの部分です。

>if( (colorcode != 3) && (code == ascii("}")) )
ここに文字列定数の判定を忘れました
if( (colorcode != 3) && (colorcode != 20) && (code == ascii("}")) )
ですね。

[ ]
RE:20023 goleftkakkoの仕様No.20024
Kamonohasi さん 05/09/20 22:56
 
さらに補足です
colorcodeはマスクしなきゃいけませんね。
たびたびの補足で申し訳ありません。

[ ]
RE:20022 goleftkakkoの仕様No.20026
アルビレオ さん 05/09/20 23:04
 
アルビレオです。

>つまり、現在のカーソルを含むブロックの「{」に移動しようとすると
(略)
>なマクロでいいのでしょうか?
>
>いくらなんでもって気がしますが……

えーと、私は(たしか)デフォルトキー設定の
 Ctrl+[ {に移動
 Ctrl+] }に移動
を使っています。

Kamonohasiさんが望んでいるものとは微妙に違うのかな…?

[ ]
RE:20026 goleftkakkoの仕様No.20027
Kamonohasi さん 05/09/20 23:19
 
>えーと、私は(たしか)デフォルトキー設定の
> Ctrl+[ {に移動
> Ctrl+] }に移動
>を使っています。
>
>Kamonohasiさんが望んでいるものとは微妙に違うのかな…?
そうなんです。
******************************
if(column != 0){
}
******************************
こんな文書の一行目の行末で「Ctrl+[」は失敗してしまいます。

[ ]
RE:20027 goleftkakkoの仕様No.20031
秀丸担当 さん 05/09/21 10:27
 

>なマクロでいいのでしょうか?
>
>いくらなんでもって気がしますが……

いろいろと細かな動作も考慮すると、それくらいのマクロにはなると思います。
簡単に済ますのであれば以下のような感じでもそれなりに使えるかもしれません。
disableerrormsg;
if( code == '{' || code == '}' ) {
 goleftkakko;
} else {
 gorightkakko;
 goleftkakko;
}

[ ]
RE:20031 goleftkakkoの仕様No.20044
Kamonohasi さん 05/09/22 00:39
 
>いろいろと細かな動作も考慮すると、それくらいのマクロにはなると思います。
そうですか。
この仕様が変わって私のマクロのような動作になって、困る場合は少ないよう
に思えますが、いかがでしょうか。
せめて「{へ移動」やgoleftkakkoのヘルプに分かりやすい説明をお願い申し上
げます。出来れば機能の変更をお願いしたいですが。


>簡単に済ますのであれば以下のような感じでもそれなりに使えるかもしれません。
あ、シングルクォートがありましたか。マクロで使えるのを失念していました。

[ ]
RE:20044 goleftkakkoの仕様No.20048
秀丸担当 さん 05/09/22 11:08
 

>この仕様が変わって私のマクロのような動作になって、困る場合は少ないよう
>に思えますが、いかがでしょうか。
>せめて「{へ移動」やgoleftkakkoのヘルプに分かりやすい説明をお願い申し上
>げます。出来れば機能の変更をお願いしたいですが。

「{へ移動」だけの動作を捉えると違和感を感じますが、「}へ移動」と「対応す
る括弧へ移動」の動作も考えると、変更すると一貫性が無いことになってしまい
そうです。

行末に括弧があってカーソル位置も行末にあるときや、括弧を入力した直後など、
カーソルの左側をチェックすることに意味があると思います。

1|{
2|    if(xxx){
3|        xxx
4|    }
5|}

というような感じの場合、4行目の}を入力した直後に「{へ移動」または「対応
する括弧へ移動」をすると、カーソルの左側の括弧に対応して、2行目に移動し
ます。

また、「{へ移動」だけの特例を作ってしまうと、マクロを使ったカスタマイズ
も特例を考慮しながら作らなくてはいけないので、マクロが作りにくくなってし
まうのではないでしょうか。

[ ]
RE:20048 goleftkakkoの仕様No.20052
Iranoan さん 05/09/22 17:32
 
 秀丸担当さん今日は、Iranoan です。
> 「{へ移動」だけの動作を捉えると違和感を感じますが、「}へ移動」と「対応す
> る括弧へ移動」の動作も考えると、変更すると一貫性が無いことになってしまい
> そうです。
 私も仕様自体は今のままで良いと思います。ただ
> >「{へ移動」やgoleftkakkoのヘルプに分かりやすい説明をお願い申し上
> >げます。
には賛成です。またヘルプには、
> 現在のカーソル位置からもっとも内側に位置する大括弧(“{”や“}”)に移動しま
>す。
>                       ^^^^^^^^^^^^^
と有りますが、
    a{bcd}efg{hij{klm{}nop}qrs}tuv
とある時、o の位置で「{ に移動」を実行すると、j{k の { に移動します。
これは「もっとも内側」といえるのでしょうか? 「もっとも内側」は {} で、
むしろ「一つ外側」に移動なのではないでしょうか?

[ ]
RE:20052 goleftkakkoの仕様No.20053
アルビレオ さん 05/09/22 18:21
 
アルビレオです。

>> 現在のカーソル位置からもっとも内側に位置する大括弧(“{”や“}”)に移動しま
>>す。
>>                       ^^^^^^^^^^^^^
>と有りますが、
>    a{bcd}efg{hij{klm{}nop}qrs}tuv
>とある時、o の位置で「{ に移動」を実行すると、j{k の { に移動します。
>これは「もっとも内側」といえるのでしょうか? 「もっとも内側」は {} で、
>むしろ「一つ外側」に移動なのではないでしょうか?

うーん、そっちの方がおかしな表現のように感じます。
今の表記のあいまいなところを書き換えるとすれば
 「現在のカーソル位置<を含む>もっとも内側〜」
とした方がより明確になるんじゃないでしょうか。

[ ]
RE:20053 goleftkakkoの仕様No.20056
秀丸担当 さん 05/09/22 18:52
 

確かに、現在のカーソル位置からもっとも内側という表現は誤解を招くかもしれ
ません。
「現在のカーソル位置を含むもっとも内側〜」だと誤解が無いでしょうか。それ
にしてみようと思います。

[ ]
RE:20056 goleftkakkoの仕様No.20060
Iranoan さん 05/09/22 19:30
 
 秀丸担当さん今日は、Iranoan です。
> 「現在のカーソル位置を含むもっとも内側〜」だと誤解が無いでしょうか。それ
> にしてみようと思います。
 私は感覚的に、、最も多くの括弧に挟まれた部分を中心として
{{{{...←外側..内側→..←内側...外側→...}}}}}
なので、どんな修飾をしようと、「もっとも内側」と書かれていたら、先の例
なら「m{}n」と感じます。
 皆さんはどうなんでしょう?

[ ]
RE:20056 goleftkakkoの仕様No.20062
Kamonohasi さん 05/09/22 19:38
 
こんばんは、いつもお世話になっております、カモノハシです。

私は、goleftkakkoはてっきり↓だと思って最初の質問となったわけですが、
>「現在のカーソル位置を含むもっとも内側〜」だと誤解が無いでしょうか。それ
>にしてみようと思います。
これだと、
> 1|{
> 2|    if(xxx){
> 3|        xxx
> 4|    }
> 5|}
の例で4行目行末では1行目行頭に行くことになってしまい、カーソル位置、ひ
とつ左によって動作が変わることが分からないままです。

「カーソル位置を含むブロックの始まり/終わりへ移動」
但し始まりへ移動するときは
・カーソル位置のひとつ左が{ならカーソルはそのブロックのひとつ上に含ま
 れるとする
・カーソル位置のひとつ左が}ならカーソルは左のブロックに含まれるとする
の二条件が優先し、優先条件が重なった場合後者が優先される。
そして、移動先が見つからない場合は移動しない。

って理解ですが、間違ってます?

[ ]
RE:20062 goleftkakkoの仕様No.20064
Kamonohasi さん 05/09/22 19:55
 
あ、足りなかった(汗)
>但し始まりへ移動するときは
>・カーソル位置のひとつ左が{ならカーソルはそのブロックのひとつ上に含ま
> れるとする
>・カーソル位置のひとつ左が}ならカーソルは左のブロックに含まれるとする
>の二条件が優先し、優先条件が重なった場合後者が優先される。
>そして、移動先が見つからない場合は移動しない。
>
>って理解ですが、間違ってます?
・カーソル位置が}ならカーソルはその}で括られるブロックに含まれるとする
が必要ですよね。

[ ]
RE:20060 goleftkakkoの仕様No.20065
アルビレオ さん 05/09/22 20:04
 
アルビレオです。

> 私は感覚的に、、最も多くの括弧に挟まれた部分を中心として
>{{{{...←外側..内側→..←内側...外側→...}}}}}
>なので、どんな修飾をしようと、「もっとも内側」と書かれていたら、先の例
>なら「m{}n」と感じます。
> 皆さんはどうなんでしょう?

こういう文脈での内側/外側は「括弧の内側」「括弧の外側」という意味で、同
じ括弧に含まれているもの同士の間には内/外の関係はないと考えるのが一般的
じゃないかなぁと思います。
 {...←外側{内側→..←内側}外側→...}

Iranoanさんの解釈だと
 abc{def{ghi}jkl{mno}pqr}stu
で k から見た場合の「内側」ってどっち?みたいなケースも出てきますし。

[ ]
RE:20060 goleftkakkoの仕様No.20066
Kamonohasi さん 05/09/22 20:06
 
こんばんは、いつもお世話になっております、カモノハシです。
>> 「現在のカーソル位置を含むもっとも内側〜」だと誤解が無いでしょうか。それ
>> にしてみようと思います。
> 私は感覚的に、、最も多くの括弧に挟まれた部分を中心として
>{{{{...←外側..内側→..←内側...外側→...}}}}}
>なので、どんな修飾をしようと、「もっとも内側」と書かれていたら、先の例
>なら「m{}n」と感じます。
> 皆さんはどうなんでしょう?
括弧ってのは括られた中身をまとめて、外にある物1つと同等の物にする、も
のだと思っています。
a{bcd}efg{hij{klm{AB}{C}nop}qrs}tuv
だと、「k」、「{AB}」、「{C}」などは同列で透過的に括弧がないものとして
扱われると感じます。
変なんでしょうか……(汗)

[ ]
RE:20065 goleftkakkoの仕様No.20067
Iranoan さん 05/09/22 20:54
 
 アルビレオさん、カモノハシさん今日は、Iranoan です。
> 同
> じ括弧に含まれているもの同士の間には内/外の関係はないと考えるのが一般的
> じゃないかなぁと思います。
 例の書き方が悪かったと思いますが、この点は同じで、
>  {...←外側{内側→..←内側}外側→...}
の通り、内/外側の方向の考え方は同じです。ただ私は
> こういう文脈での内側/外側は「括弧の内側」「括弧の外側」という意味
とはとらえません。私は「内/外側の括弧」と解釈します。そうでないと、
「もっとも内側」が何を意味するのか解りません。

>  abc{def{ghi}jkl{mno}pqr}stu
> で k から見た場合の「内側」ってどっち?みたいなケースも出てきますし。
 私の間隔だと、「内側はない」ということになります。だから逆に「一つ外
側の」と表現しました。

 ##現在の仕様は至極真っ当な気がしていますし、使いやすいのですが、それ
を過不足無く、解り易い文章で説明するには、どう表現すればよいのやら。
 ##http://www.maruo.co.jp/turukame/3/ に移った方がよいのかも(^^;。

 以下カモノハシさんへ
 折角回答していただいたのですが、
http://www.maruo.co.jp/hidesoft/2/x19998_.html#20066
は理解できませんでしたm(__)m。
 あと別のスレッドですが、
http://www.maruo.co.jp/hidesoft/2/x20045_.html#20063

> ちなみに、ぶら下がり字種の機能が5.04で追加されませんでしたが、なにか問題があ
> ったのでしょうか?
は、現在は安定化を目指していて、機能追加まだ先なのだと思います。
http://www.maruo.co.jp/hidesoft/2/x19751_.html#19757
> V5.02あたりでは安定させたいと思っていますので、それよりも後で公開していきたい
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^                    ^^^^^^^^^^^^

[ ]
RE:20067 goleftkakkoの仕様No.20069
アルビレオ さん 05/09/22 21:53
 
アルビレオです。

>> こういう文脈での内側/外側は「括弧の内側」「括弧の外側」という意味
>とはとらえません。私は「内/外側の括弧」と解釈します。そうでないと、
>「もっとも内側」が何を意味するのか解りません。

{A
 {B
  {C
   0123
   {D
    4567
   }D'
  }C'
 }B'
}A'

となっていた場合、「0123」は「C〜C'の内側」というだけでなく、「A〜A'の内
側」「B〜B'の内側」でもあります。
だから「0123」から見たとき
CとC'が「もっとも内側の括弧」
AとA'が「もっとも外側の括弧」
DとD'は「0123とは無関係な括弧」

括弧の入れ子構造全体を見通しての内側/外側ならIranoanの解釈でもいいと思い
ますが、基準になるのはあくまでカーソルの位置で、その場所を囲んでいる括弧
はどれなのかと考えた方がいいと思います。

厳密に書くなら
「カーソル位置を囲んでいる括弧のペアの中でもっとも内側のもの」
という感じでしょうか。
そこまで厳密に書くと、カモノハシさんが混乱した「カーソル位置に括弧がなく
その左隣に括弧がある場合は、カーソルの左隣の括弧を基準位置として動作す
る」という例外ルールの説明で苦労するわけですが。

カーソルの左隣の括弧の判定をしない「goleftkakko2」「gorightkakko2」を追
加した方がいいんでしょうかね?
マクロから使うときには例外ルールがない動作をするコマンドもあった方が使い
やすいかもしれないとは思いますが。

[ ]
RE:20067 goleftkakkoの仕様No.20070
Kamonohasi さん 05/09/22 22:33
 
カモノハシです。
> 折角回答していただいたのですが、
>http://www.maruo.co.jp/hidesoft/2/x19998_.html#20066
分かりにくい説明で申し訳ありません(汗)
アルビレオさんも書かれていますが、基準はあくまで「カーソル位置」です。
a{bcd}efg{hij{klm{AB}{C}nop}qrs}tuv
で「n」から考えますと、
※自分は「n」というアイテムである※
[}へ移動の場合]
・右に「o」というアイテムがある
・さらに右に「p」がある
・さらに右に「}」がある ←ここまでが自分の所属する最小のブロック終了地点

[{へ移動の場合]
・左に「{C}」というアイテムがある
・さらに左に「{AB}」がある
・さらに左に「m」がある
・さらに左に「l」がある
・さらに左に「k」がある
・さらに左に「{」がある ←ここが自分の所属する最小のブロック開始地点

つまり、nからすれば、自分は「{klm{AB}{C}nop}」というブロックに属していて、
そのブロックはさらに「{hij{klm{AB}{C}nop}qrs}」に属しています。
自分と同列にいくら{}があろうが、それは括られたひとつのアイテムとして
自分と同じレベルにしか認識されない、ってつもりで書きました。



> あと別のスレッドですが、
>http://www.maruo.co.jp/hidesoft/2/x20045_.html#20063
なるほど、安定版のことを忘れていました。ありがとうございます。

[ ]
RE:20069 goleftkakkoの仕様No.20071
Iranoan さん 05/09/22 23:43
 
 アルビレオさん、カモノハシさん今日は、Iranoan です。
> 「カーソル位置を囲んでいる括弧のペアの中でもっとも内側のもの」
 この表現なら、逆に「カーソル位置を囲んでいる括弧のペアの中でもっとも
外側のもの」なのではないでしょうか? つまり
{A
 {B
  {C
   0123
   {D
    4567
   }D'
  }C'
 }B'
}A'
を例にすると、仮に B, C' の行末にカーソルがある場合、「カーソル位置を
囲んでいる括弧のペア」は B, B' 隣の {, } までで、これが最も外側の括弧
ですよね。逆にこの中で、最も内側の括弧は D, D' 隣の {, } ではないで
しょうか?
 もし「カーソル位置を囲んでいる括弧のペアの中でもっとも」という表現を
使うなら、「内/外側」の表現ではなく「最初/最後」の方が解りやすい?
 なお上で「行末」としたのは、
> 「カーソル位置に括弧がなく
> その左隣に括弧がある場合は、カーソルの左隣の括弧を基準位置として動作す
> る」
を考えるのが面倒なので指定しただけで、深い意味はありません。

> マクロから使うときには例外ルールがない動作をするコマンドもあった方が使い
> やすいかもしれないとは思いますが。
 一般的にこれは言えると思います。

 http://www.maruo.co.jp/hidesoft/2/x19998_.html#20070 への回答
> 自分と同列にいくら{}があろうが、それは括られたひとつのアイテムとして
> 自分と同じレベルにしか認識されない、ってつもりで書きました。
 ご説明有り難うございました。理解できました。

[ ]
RE:20071 goleftkakkoの仕様No.20072
Iranoan さん 05/09/23 02:53
 
 アルビレオさん今日は、Iranoan です。
 自己レスです。
> > 「カーソル位置を囲んでいる括弧のペアの中でもっとも内側のもの」
 今気がついたのですが、ここでの「内側のもの」とは内側の (プログラミン
グで言う) ブロックのことですよね。失礼しました。

[ ]
RE:20071 goleftkakkoの仕様No.20073
アルビレオ さん 05/09/23 03:27
 
アルビレオです。

だんだん秀丸エディタから離れてメタな議論になってきているのが心配ですが…

>{A
> {B *
>  {C
>   0123
>   {D
>    4567
>   }D'
>  }C'
> }B'
>}A'
>を例にすると、仮に B, C' の行末にカーソルがある場合、「カーソル位置を
>囲んでいる括弧のペア」は B, B' 隣の {, } までで、これが最も外側の括弧
>ですよね。逆にこの中で、最も内側の括弧は D, D' 隣の {, } ではないで
>しょうか?

はっきりさせるためにBの後ろに * を入れました。この * とそれぞれの括弧と
の関係を整理してみます。(A,B,Cなどは「文字」ではなく説明のためにそれぞれ
の括弧につけた「ラベル」と考えてください)
・A-A'のブロックは * を囲んでいる
・B-B'のブロックは * を囲んでいる
・C-C'のブロックは * を囲んでいない
・D-D'のブロックは * を囲んでいない

* を含む括弧のペアはA-A'とB-B'の2つあることになります。
Iranoanさんの解釈だとA-A'のペアについては無視しているようですが、プログ
ラムコードでも数式でもHTMLタグでも、このような入れ子構造を持つ場合は
「* はA-A'にも囲まれている」と考えるのは普通ではないでしょうか。
このように * を囲む(Iranoanさん流に言えば*より外側の)括弧のペアが複数存
在するので、それらのうちどのペアを指しているかをあらわすために「最も〜」
などの表現を使うわけです。

C-C'やD-D'を「内側」と呼ぶのはB-B'の「ブロック」から見た場合の関係として
は「C-C'はB-B'の内側」となるので自然ですが、*の位置の「点」を基準に考え
ると「C-C'は*の内側」という表現は変ではないでしょうか。

数式を例にした方がわかりやすいかもしれませんね。
 a = ((b*(c+1))-d)
という式の場合、大多数の人は
・bは((b*(c+1))-d)に含まれている
・bは(b*(c+1))に含まれている
・bは(c+1)に含まれていない
と考え、「bを含む最も内側の括弧」といえば、b*(c+1)を囲んでいる括弧を指し
ていると受け取るでしょう。
括弧の位置が複数行にまたがっていても、入れ子構造が保たれている限りは同じ
ように考えることができます。

(って、書いてるうちにIranoanさんも何か気づかれたようですが…まあいいや)

> もし「カーソル位置を囲んでいる括弧のペアの中でもっとも」という表現を
>使うなら、「内/外側」の表現ではなく「最初/最後」の方が解りやすい?

「最初/最後」という表現はテキストの先頭から見た場合の最初(A)と最後(A')の
ように受け取られる可能性が高く、かえって紛らわしいです。

[ ]
RE:20073 goleftkakkoの仕様No.20074
IKKI さん 05/09/23 10:16
 
IKKI です。横槍御免。

「カーソル位置で閉じていない括弧」ではいけないでしょうか…。

[ ]
RE:20073 goleftkakkoの仕様No.20075
山紫水明 さん 05/09/23 11:20
 
 山紫水明です。

>だんだん秀丸エディタから離れてメタな議論になってきているのが心配ですが…

 メタな議論はメッタにないことだし,たまにはタメになります。
 ただ場所があまりふさわしくないかも。
 β版会議室あたりがいいかも知れません。
 さて,よく理解しないまま発言しているかもしれません。ご容赦ください。

 私は,秀丸担当さんの
「現在のカーソル位置を含むもっとも内側〜」
に次の文を追加すればいいのではという気がします。。
<この場合「内側」は括弧自体および閉じ括弧の直後まで含みます。>

IKKI さんの新提案
>「カーソル位置で閉じていない括弧」ではいけないでしょうか…。
は,よく理解できていません。

     では, (^^)/~

[ ]
RE:20075 goleftkakkoの仕様No.20083
秀丸担当 さん 05/09/26 10:47
 

括弧移動の説明ですが、文で説明してもわかりにくいと思ったので、適当に例を
挙げてヘルプに書いておこうと思います。
仕様を決めるという話ではなく、仕様は変わらず説明文を変えるというだけはあ
りますが。

[ ]