指定マーク位置にタグジャンプNo.12768
あかね さん 02/08/20 19:52
 
秀丸のタグジャンプは指定ファイルの指定行の位置を
開くという機能だと思いますが、位置の指定方法を
行ではなくラベルにすることはできないのでしょうか?

HTMLで言えば、<A name="">タグを使い
http://www.hoge.com/index.html#mark1
このように記述するとindex.htmlの"mark1"の位置に飛ばせるのと
同じ機能が秀丸にも欲しいです。

この機能と、file://d:/temp/1.txt といったURLの
自動リンク機能を併用すれば、HTML並の文書間リンク機構を
手に入れることができ、HTMLのハイパーテキスト機能に頼らずとも
効率的な情報整理が実現するものと確信しています。

どうかご検討のほどよろしくお願いいたします。

[ ]
RE:12768 指定マーク位置にタグジャンプNo.12780
ひろ さん 02/08/21 10:04
 
 あかねさん今日は、ひろです。
> 秀丸のタグジャンプは指定ファイルの指定行の位置を
> 開くという機能だと思いますが、位置の指定方法を
> 行ではなくラベルにすることはできないのでしょうか?
 結局どういった形式を、その指定法の書式にするかでが問題になると思い
ます。

> この機能と、file://d:/temp/1.txt といったURLの
という URI の形式で良いのなら、比較的簡単なマクロですみます。また
file://d:/temp/1.txt#MARK の様なファイル内ので指定場所がないなら
ば、「...を秀丸で開く」を使うだけですみます。

 なお file://d:/temp/1.txt#MARK の形式を含め URI や選択範囲、ファイ
ル名に対応したマクロは以下のとおりです。
//---------------- Open URI with Hidemaru -----------------------------
call GetURI;
call GetFileName $$return;
if( !existfile( $$return ) ){
  call strstr2 $$return, "#";
  if( ##return == -1 ){
    message "Not exist file";
    endmacro;
  }
  call OpenMarkedFile $$return, ##return;
}
else openfile $$return;
endmacro;

OpenMarkedFile:
  $$file = leftstr( $$1, ##2 );
  $$mark = rightstr( $$1, strlen( $$1 ) - ##2 - 1 );
  if( !existfile( $$file ) ){
    message "Not exist file";
    endmacro;
  }
  openfile $$file;
  ##x = x;
  ##y = y;
  gofiletop;
  $$search = searchbuffer;
  ##search = searchoption;
  searchdown2 $$mark, word, casesense;
  if( !result ){
    message "Not find mark";
    moveto ##x, ##y;
  }
  else escape;
  setsearch $$search, ##search;
  return;

GetURI:
  if( selecting ){
    $$uri = gettext( seltopx, seltopy, selendx, selendy);
  }
  else{
    ##x = x;
    ##y = y;
    while( colorcode&0x400 )left;
    if( !(##x == x && ##y == y) )right;
    ##topx = x;
    ##topy = y;
    moveto ##x, ##y;
    while( colorcode&0x400 )right;
    ##endx = x;
    ##endy = y;
    moveto ##x, ##y;
    $$uri = gettext( ##topx, ##topy, ##endx, ##endy);
    if( $$uri == "" ){
      message "Not URI";
      endmacro;
    }
  }
  return $$uri;

GetFileName:
  ##i = strstr( $$1, "://" );
  if( ##i != -1 )$$1 = rightstr( $$1, strlen( $$1 ) - ##i - 3 );
  return $$1;

strstr2:
  ##RC = -1;
  ##Size = strlen($$2);
  while( 1 ){
    ##Pos = strstr( $$1, $$2 );
    if( ##Pos == -1 )break;
    ##RC = ##RC + ##Pos + ##Size;
    $$1 = rightstr( $$1, strlen( $$1 ) - ##Pos - ##Size );
  }
  return ##RC;

[ ]
RE:12780 指定マーク位置にタグジャンプNo.12783
たけのこ さん 02/08/21 11:04
 
たけのこです。

// ちゃちゃです。

提供のマクロを保存し、URIの上でロケーションしても「Not URI」というメッ
セージが表示されてしまいます。

試したURI
      ~~~
urn:isbn:4-08-774377-2

URLの場合はうまく動作するようです。
~~~

[ ]
RE:12780 指定マーク位置にタグジャンプNo.12784
たけのこ さん 02/08/21 13:57
 
たけのこです。

// 普通のツッコミ(?)です。

URL表記がファイルの先頭にあると無限ループしてしまいます。

    while( colorcode&0x400 )left;
の、部分は
    while( result && colorcode&0x400 )left;
かな? 2,3回しか検証していませんが。

[ ]
RE:12784 指定マーク位置にタグジャンプNo.12791
ひろ さん 02/08/22 00:07
 
 たけのこさん今日は、ひろです。
> URL表記がファイルの先頭にあると無限ループしてしまいます。
 これは盲点でした。
> urn:isbn:4-08-774377-2
 この使い方はしないでしょうから、これは仕様で良いでしょう。URI では
なく、URL とすべきでしたね。

 何方にしても、あかねさんの反応を見て、アップし直し直すが決めます。

[ ]