タグジャンプのファイル名No.33511
tok さん 14/09/30 20:39
 
タグジャンプさせるときのファイル名ですが、行の状態が

:/  C:\cp\cp.txt

となっていると、ファイル名エラー?となって
ジャンプできませんでした。
もしかしてと思って

:/  "C:\cp\cp.txt"

としてみましたが駄目でした 。
ちなみに[:/]はコメント化マークです

こういった場合の手立てはないかないものでしょうか?


[ ]
RE:33511 タグジャンプのファイル名No.33512
h-tom さん 14/09/30 21:43
 

h-tom です。

>タグジャンプさせるときのファイル名ですが、行の状態が
>
>:/  C:\cp\cp.txt
>
>となっていると、ファイル名エラー?となって
>ジャンプできませんでした。

ファイルタイプ別の設定で、「ファイル名と思わしき場所」が有効になっていて、
「C:\cp\cp.txt」が、ファイル名と認識されていれば、"ダイレクトタグジャンプ"
が使えます。
(フルパスなら確実に開くと思います。)

「ファイル名と思わしき場所」が無効の場合でも、範囲選択してから、
"ダイレクトタグジャンプ" か、"...を秀丸エディタで開く " を 実行すれば、
開けると思いますよ。

[ ]
RE:33512 タグジャンプのファイル名No.33513
tok さん 14/09/30 22:49
 
>ファイルタイプ別の設定で、「ファイル名と思わしき場所」が有効になっていて、
有効になってなかったので有効にしました。
結果、ファイル名がカラー化されました。

>「C:\cp\cp.txt」が、ファイル名と認識されていれば、"ダイレクトタグジャンプ"
>が使えます。
>(フルパスなら確実に開くと思います。)
タグジャンプ機能をF12キーに割り当ててあるのですが、
それではやはりジャンプできませんでした。

マウス右クリックで
...を秀丸エディタで開く
で開くことができました

ありがとうございました。

[ ]
RE:33513 タグジャンプのファイル名No.33515
秀丸担当 さん 14/10/01 13:21
 

h-tomさんも言われているように、この方法では右クリックのメニューと、「ダ
イレクトタグジャンプ」でも行うことができます。
「タグジャンプ」と「ダイレクトタグジャンプ」は別のコマンドで、標準のキー
割り当てではF10が「タグジャンプ」、Ctrl+F10が「ダイレクトタグジャンプ」
に割り当てられています。

[ ]
RE:33515 タグジャンプのファイル名No.33517
tok さん 14/10/01 23:01
 
>>ファイルタイプ別の設定で、「ファイル名と思わしき場所」が有効に>なっていて、
>有効になってなかったので有効にしました。
>結果、ファイル名がカラー化されました。

:/  c:\cp\cp.txt

この状態ではEditor からはファイル名が認識されてるわけですので
この行にカーソルがあるときはそのファイル名でジャンプさせていただくとありがた
いです。

タグジャンプ時のオプションで解析したファイル名でジャンプする
というのをつけていただくとありがたいですが。。。
上の例ですと[:/]を無視して[c:\cp\cp.txt]にジャンプする
ということですが。





[ ]
RE:33517 タグジャンプのファイル名No.33518
tok さん 14/10/01 23:24
 
すみません、以下の機能の件ですが、
マクロで実現させることは可能でしょうか?

>>>ファイルタイプ別の設定で、「ファイル名と思わしき場所」が有効に>なっていて、
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>

[ ]
RE:33518 タグジャンプのファイル名No.33519
IKKI さん 14/10/01 23:38
 
こんばんは。ユーザーの IKKI です。横から失礼します。

> この行にカーソルがあるときはそのファイル名でジャンプさせていただくとありが
>たいです。
>マクロで実現させることは可能でしょうか?
「タグジャンプを試み、失敗したらダイレクトタグジャンプする秀丸マクロ」という
マクロがありますが、いかがでしょうか。
http://hide.maruo.co.jp/lib/macro/jump_v20.html

もし「ファイル名の上にカーソルを移動するのが面倒なので、行内のどこにカーソル
があってもダイレクトタグジャンプしたい」という話だとすると、そういうマクロを
作ることは可能ですが、1行内に2つ以上のファイル名があって、カーソルがどちらの
上にもない場合の挙動を定義する必要がありそうです。




[ ]
RE:33519 タグジャンプのファイル名No.33520
tok さん 14/10/02 00:23
 
こんばんは
マクロで実現済みだったんですね。
ありがとうございます。

>もし「ファイル名の上にカーソルを移動するのが面倒なので、行内のどこにカーソ
>ルがあってもダイレクトタグジャンプしたい」という話だとすると、そういうマク
>ロを作ることは可能ですが、1行内に2つ以上のファイル名があって、カーソルがど
>ちらの上にもない場合の挙動を定義する必要がありそうです。

定義ですが、
ファイル名がいくつあったとしても
行先頭から見て行って、最初に現れたファイル名
ということでいかがでしょうか。

よろしくお願いします。

それと、タグジャンプとダイレクトタグジャンプとの違いが
よく分からないのですが、
「参照用ファイルを必要としない」ジャンプのほうが有難いです。

[ ]
RE:33520 タグジャンプのファイル名No.33521
あべのり さん 14/10/02 01:53
 
あべのりです.横から失礼します.

>定義ですが、
>ファイル名がいくつあったとしても
>行先頭から見て行って、最初に現れたファイル名
>ということでいかがでしょうか。

とりあえず,「その行の一番最初にあるファイル名らしきものを開くマクロ」を書い
てみました.「ファイル名と思わしき場所」が有効になっていることが前提です.
# こんなんでいいのかな?


#column = column;#lineno = lineno;
disabledraw;
golinetop2;
while(code != eof && lineno == #lineno){
 if((colorcode & 0x1F) == 21){
  #bl = lineno;#bc = column;
  while(code != eof && lineno == #lineno && (colorcode & 0x1F) == 21)right;
  $f = gettext2(#bc,#bl,column,lineno,1);
  moveto2 #column,#lineno;
  enabledraw;
  if(midstr($file,1,1) != ":")$file = directory2 + "\\" + $f;
  else $file = $f;
  if(existfile($file))openbyshell $file;
  else message $f + " が見つかりませんでした";
  endmacro;
 }
 right;
}
moveto2 #column,#lineno;
enabledraw;
message "ファイル名らしき文字列が見つかりませんでした.";
endmacro;


[ ]
RE:33521 タグジャンプのファイル名No.33522
tok さん 14/10/02 07:44
 
おはようございます

A お示しいただいたソースを切り取り
B Hidemaruを起動して貼り付け
C C:\Program Files (x86)\Hidemaru\tagjump.mac としてセーブ
D マクロ11番に登録
E そのマクロをF12キーに割り当て
F :/  c:\cp\cp.txt 行で実行してみると
G C:\Program Files (x86)\Hidemaru\tagjumpが見つかりません
となります。

H Hidemaruで見に行くとC:\Program Files (x86)Hidemaru\tagjump.macは見られます
I ファイラー(WinFm2008)やエクスプローラーで見に行くと:\Program Files (x8
6)\Hidemaru\tagjump.mac
は見つかりません

OSはWindows8.1ですが
これって管理者権限とかの問題でしょうか


[ ]
RE:33522 タグジャンプのファイル名No.33523
秀丸担当 さん 14/10/02 09:30
 

タグジャンプで、先頭にファイル名がある形式以外も対応できたらいいと思いま
す。
V8.40以降では
Keyword<tab>File.txt<tab>1234;"<tab>d<tab>file:
といったような、先頭にファイル名が無いctagsの形式にも対応していたりする
ので、他のケースでもファイル名と認められそうな場合はできてもいいと思いま
す。
今後考えていきたいと思います。

マクロファイルは、Program Files配下に置くとバーチャルストアという仕組み
で互換性を維持するソフトとしないソフトで見え方が違ってくるので、できるだ
けProgram Files配下ではない、マイドキュメント等の任意の場所に置くほうが
いいと思います。
マクロファイル用のフォルダは[その他]→[動作環境]→[環境]で指定できます。


秀丸エディタの32bit版の場合、[その他]→[動作環境]→[32bit版]で、
「VirtualStoreを無効にする」をONにしておくと、混乱はしにくくなると思いま
す。

ただ今回のケースは編集も実行も秀丸エディタなので、バーチャルストアの問題
とは違う気がします。
Gのエラーで表示されるファイル名の通りだとしたら、「.mac」が書かれていな
いので、マクロ登録で「.mac」までを書くようにするといいと思います。

[ ]
RE:33523 タグジャンプのファイル名No.33524
tok さん 14/10/02 16:23
 
こんにちは

Hidemaru本体で標準対応だとありがたいです。
よろしくお願いします。


バーチャルストアということなんですか。
今までにも作成したファイルが見つからないことがあったので
なんだろって思ってました。
おかげでちょっと理解できました。


マクロ登録で[.mac]が抜けてました。
付けると起動できました。

ありがとうございました


[ ]
RE:33521 タグジャンプのファイル名No.33525
tok さん 14/10/02 16:46
 
秀丸担当様のアドバイスもいただいてマクロが
動くようになったのですが

:/   c:\cp\cp_in.txt  
:/   "c:\cp\cp_in.txt"
いずれでも  c:\cp\cp_in.txt が見つかりませんでした
となります。
なお、設定でファイル名がカラー表示されるようにしています。
c:\cp\cp_in.txt も実在するのですが、
何か勘違いしているのかももしれません。



[ ]
RE:33525 タグジャンプのファイル名No.33526
tok さん 14/10/02 17:12
 
一応以下のようにしてみたら動きました。
midstr($f,1,1) というのが理解できてませんが。。。

ありがとうございました。

#column = column;#lineno = lineno;
 disabledraw;
 golinetop2;
 while(code != eof && lineno == #lineno){
  if((colorcode & 0x1F) == 21){
   #bl = lineno;#bc = column;
   while(code != eof && lineno == #lineno && (colorcode & 0x1F) == 21)right;
   $f = gettext2(#bc,#bl,column,lineno,1);
   moveto2 #column,#lineno;
   enabledraw;
   if(midstr($f,1,1) != ":")$file = directory2 + "\\" + $f;
   else $file = $f;
   if(existfile($file))openbyshell $file;
   else message $file + " が見つかりませんでした";
   endmacro;
  }
  right;
 }
 moveto2 #column,#lineno;
 enabledraw;
 message "ファイル名らしき文字列が見つかりませんでした.";
endmacro;

 

[ ]
RE:33526 タグジャンプのファイル名No.33527
あべのり さん 14/10/02 18:26
 
>一応以下のようにしてみたら動きました。
>midstr($f,1,1) というのが理解できてませんが。。。
どうもすみません.その通りです.

該当の行は,取得した文字列の二文字目が:でなければ相対パスと判断してフォルダ
名を付加すると言うものです.が,よく考えたらこれはWindowsが良きに計らってく
れる気がしてきました……以下で十分でした.
#column = column;#lineno = lineno;
disabledraw;
golinetop2;
while(code != eof && lineno == #lineno){
 if((colorcode & 0x1F) == 21){
  #bl = lineno;#bc = column;
  while(code != eof && lineno == #lineno && (colorcode & 0x1F) == 21)right;
  $file = gettext2(#bc,#bl,column,lineno,1);
  moveto2 #column,#lineno;
  enabledraw;
  if(existfile($file))openbyshell $file;
  else message $file + " が見つかりませんでした";
  endmacro;
 }
 right;
}
moveto2 #column,#lineno;
enabledraw;
message "ファイル名らしき文字列が見つかりませんでした.";
endmacro;


[ ]
RE:33527 タグジャンプのファイル名No.33528
tok さん 14/10/02 21:20
 
こんばんは
改良版、ありがとうございます

ところで、「ファイル名を認識しないモード」
でも使用できるとより自由度が上がると思うんですが、
それをマクロで実現するのは可能でしょうか。

「ファイル名を認識するモード」にすると
そこにカーソルを持っていくとマウスポインタが
「手マーク」になって直接文字を触れなくなるんですよね。
自分の場合はそれがちょっと違和感があるのです。

[ ]
RE:33528 タグジャンプのファイル名No.33529
あべのり さん 14/10/02 22:01
 
>ところで、「ファイル名を認識しないモード」
>でも使用できるとより自由度が上がると思うんですが、
>それをマクロで実現するのは可能でしょうか。

「ファイル名を判定する」方法が与えられればできます.以下のマクロは,5行目の
正規表現にひっかかるものをファイル名と判定して開くことを試みます.

#column = column;#lineno = lineno;
disabledraw;
golinetop2;
setcompatiblemode 0x20000;
searchdown2 "([a-z]:\\\\|)[a-z0-9\\-_/\\\\]+\\.[a-z]+",regular,nocasesense;
if(result){
 if(#lineno == lineno){
  $file = gettext(foundtopx,foundtopy,foundendx,foundendy);
  moveto2 #column,#lineno;
  enabledraw;
  if(existfile($file))openbyshell $file;
  else message $file + " が見つかりませんでした";
  endmacro;
 }
}
moveto2 #column,#lineno;
enabledraw;
message "ファイル名らしき文字列が見つかりませんでした.";
endmacro;

[ ]
RE:33529 タグジャンプのファイル名No.33530
tok さん 14/10/02 22:23
 
改変していただいたマクロを「ファイル名を認識しないモード」で
実行してみました。

:/   c:\cp\cp_in.txt
:/   "c:\cp\cp_in.txt"

いずれの行でもジャンプできました。

ありがとうございました。



[ ]
RE:33530 タグジャンプのファイル名No.33532
tok さん 14/10/03 07:43
 
こんにちは

:/   c:\cp\#Bat\##CP.Bat

はダメでした。

実はファイル名やフォルダ名の先頭に
[#,$,&]などを使用しています。
これが原因かもしれません。





[ ]
RE:33532 タグジャンプのファイル名No.33533
tok さん 14/10/03 09:15
 
>実はファイル名やフォルダ名の先頭に
>[#,$,&]などを使用しています。

考えてみたら漢字のものもありますね。

ファイル名(フォルダ名含む)の正規化パターンて
結構大変そうですね。


[ ]
RE:33533 タグジャンプのファイル名No.33534
秀丸担当 さん 14/10/03 10:26
 

ファイル名の判断は、記号は漢字以外にも、空白や括弧も含まれる可能性がある
ので、厳密に判断するのは難しいと思います。
[その他]→[ファイルタイプ別の設定]→[デザイン]→[表示]の「Email, URL, フ
ァイル名のカスタマイズ...」で、ファイル名部分を正規表現でカスタマイズす
るための設定がありますが、この正規表現も簡略化されていて、厳密ではないで
す。

>「ファイル名を認識するモード」にすると
>そこにカーソルを持っていくとマウスポインタが
>「手マーク」になって直接文字を触れなくなるんですよね。

この点については、動作を指定するオプションがあります。
[その他]→[動作環境]で左下の「上級者向け設定」をONにして、
[その他]→[動作環境]→[表示/操作]→[リンク]のところで、クリックやダブル
クリックなどの挙動を調整したり無効にできます。
ここを無効にして、ファイル名の色付けをした上でマクロにするのが、いまのと
ころ最適なのではないかと思います。

[ ]
RE:33534 タグジャンプのファイル名No.33536
tok さん 14/10/03 13:59
 
こんにちは
ファイル名の認識って、結構難しいのですね。

>ここを無効にして、ファイル名の色付けをした上でマクロにするのが、いまのと
>ころ最適なのではないかと思います。

ご提案いただいたとおり設定などしました。
ありがとうございました。


[ ]
RE:33529 タグジャンプのファイル名No.33537
tok さん 14/10/03 14:01
 
>>ところで、「ファイル名を認識しないモード」
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>endmacro;

[ ]
RE:33536 タグジャンプのファイル名No.33538
あべのり さん 14/10/03 14:19
 
>ファイル名の認識って、結構難しいのですね。

たとえばa@b.txtは有効なファイル名ですが,これをメールアドレスと区別するのは
至難の業ですよね…….なので,最終的には自分がどういうのを使うかによって設定
してもらうしかないと思います.

>>ここを無効にして、ファイル名の色付けをした上でマクロにするのが、いまのと
>>ころ最適なのではないかと思います。
>
>ご提案いただいたとおり設定などしました。

# 自分の環境では手にならないなーと思っていたのですが……ここだったのか

ここを設定して一つ目のマクロを使う方がよさそうですね.

[ ]
RE:33536 タグジャンプのファイル名No.33539
tok さん 14/10/03 14:27
 
>>ここを無効にして、ファイル名の色付けをした上でマクロにするのが、いまのと
>>ころ最適なのではないかと思います。
>
>ご提案いただいたとおり設定などしました。
>ありがとうございました。

あべのり様

その後、マクロを
「色付けされたファイル名を解析するバージョン」に戻して
実行させてみたのですが

:/   c:\cp\#bat\##cp.bat

行でジャンプさせようとすると
このバッチが実行されるようです。
(一瞬黒いDOS窓が現れます)

> if(existfile($file))openbyshell $file;
>   else message $f + " が見つかりませんでした";

おそらく上のopenbyshell の動作だと思いますが、
ここは「Hidemaru」限定にできないものでしょうか
   

[ ]
RE:33539 タグジャンプのファイル名No.33541
tok さん 14/10/03 14:54
 
>> if(existfile($file))openbyshell $file;
>>   else message $f + " が見つかりませんでした";
>
>おそらく上のopenbyshell の動作だと思いますが、
>ここは「Hidemaru」限定にできないものでしょうか
   
マクロのヘルプで
openfile を見つけたので使用してみました

HidemaruのマクロですからHidemaru.exeを記述
しなくてもいいのでしたね。

期待通りの動作をしています

ありがとうございました

[ ]
RE:33534 タグジャンプのファイル名No.33548
tok さん 14/10/06 18:11
 
>>「ファイル名を認識するモード」にすると
>>そこにカーソルを持っていくとマウスポインタが
>>「手マーク」になって直接文字を触れなくなるんですよね。
>
>この点については、動作を指定するオプションがあります。
>[その他]→[動作環境]で左下の「上級者向け設定」をONにして、
>[その他]→[動作環境]→[表示/操作]→[リンク]のところで、クリックやダブル
>クリックなどの挙動を調整したり無効にできます。
>ここを無効にして、ファイル名の色付けをした上でマクロにするのが、いまのと
>ころ最適なのではないかと思います。

ここを無効にすると秀丸メールでのURLジャンプが
できなくなりますね。

ううむ、一長一短。。。

[ ]