OSDN Git Service

commit
authortaketori <taketori@x10d.jp>
Sat, 10 Jan 2009 10:38:13 +0000 (19:38 +0900)
committertaketori <taketori@x10d.jp>
Sat, 10 Jan 2009 10:38:13 +0000 (19:38 +0900)
git-commit.mac [new file with mode: 0644]

diff --git a/git-commit.mac b/git-commit.mac
new file mode 100644 (file)
index 0000000..5dea8ee
--- /dev/null
@@ -0,0 +1,208 @@
+// git-commit.mac
+/*
+* \8d¡\8aJ\82¢\82Ä\82¢\82é\83t\83@\83C\83\8b\82ðgit-commit\82·\82é\82¾\82¯\82Ì\83}\83N\83\8d\81B
+* \95Ò\8fW\92\86\83t\83@\83C\83\8b\82Ì\83R\83\81\83\93\83g\82É\81A\83}\83W\83b\83N\83R\83\81\83\93\83g\82ª\82 \82Á\82½\82ç\82»\82ê\82æ\82è\8cã\82ë\82ð\83R\83~\83b\83g\83\81\83b\83Z\81[\83W\82É\8eg\82¤\81B
+       \8bï\91Ì\93I\82É\82Í\81A\81u\83R\83\81\83\93\83g\95\94\95ª\82Å\82 \82é\8ds\93ª\82©\82ç0\95\8e\9a\88È\8fã\82Ì\94¼\8ap\83X\83y\81[\83X\82©\83^\83u\81¨$kigou\82Å\8ew\92è\82µ\82½\94¼\8ap\8bL\8d\86\82ª\98A\91±\82µ\82Ä\82¢\82é\81¨\92¼\8cã\82É\81u.git:\81v\93\99\82Ì\95\8e\9a\97ñ\82ª\91±\82¢\82Ä\82¢\82é\81v\89Ó\8f\8a\82æ\82è\8cã\82ë\82Ì\95\94\95ª\81B
+       prepare-commit\82É\8ed\8d\9e\82ñ\82¾\82ç\93¯\82\82æ\82¤\82È\82±\82Æ\82ª\82Å\82«\82é\82¯\82Ç\81A\83R\83\81\83\93\83g\95\94\95ª\82Ì\94»\92è\82ª\8am\8eÀ\82Æ\82¢\82¤\83\81\83\8a\83b\83g\82ª\81B
+** \83}\83W\83b\83N\83R\83\81\83\93\83g\81u.git: \81`\81v\92\86\82Ì"\81`"\95\94\95ª\82ð\83R\83~\83b\83g\83\81\83b\83Z\81[\83W\82É\82µ\82Ä\81A\82³\82ç\82É\93\96\8aY\8ds\82ð\83\\81[\83X\82©\82ç\8dí\8f\9c\82·\82é\81B
++ "\81`"\82Ì\96\96\94ö\81i\89ü\8ds\83R\81[\83h\82Ì\92¼\91O\81j\82ª\83o\83b\83N\83X\83\89\83b\83V\83\85\82Å\82 \82ê\82Î\81A\8e\9f\8ds\88È\8d~\82Ì\98A\91±\82·\82é\83R\83\81\83\93\83g\95\82à\83R\83~\83b\83g\83\81\83b\83Z\81[\83W\82Æ\82·\82é\81B\82à\82¿\82ë\82ñ\82»\82ê\82ç\82à\8dí\8f\9c\82³\82ê\82é\81B
+** \81u.git:!\81v\82Ì\82æ\82¤\82É\81A\83Z\83~\83R\83\8d\83\93\82Ì\8cã\82ë\82É ! \82ª\82 \82ê\82Î\83^\83O\82Ì\82Ý\8dí\8f\9c\82·\82é\81B
++ \81u.git:\81v\93\99\82Ì\92¼\8cã\82É\89ü\8ds\83R\81[\83h\82µ\82©\82È\82¢\8e\9e\82Í\81A\8e\9f\8ds\81`\98A\91±\82·\82é\83R\83\81\83\93\83g\8ds\82ð\82·\82×\82Ä\83R\83~\83b\83g\83\81\83b\83Z\81[\83W\82Æ\82µ\82Ä\81A\82³\82ç\82É\93\96\8aY\8ds\82ð\8dí\8f\9c\82·\82é\81B\81u.git:!\81v\82Ì\8fê\8d\87\82Í\81u.git:!\81v\95\94\95ª\82¾\82¯\82ð\8dí\8f\9c\82·\82é\81B
++ \83Z\83~\83R\83\8d\83\93\82Ì\82©\82í\82è\82É\83v\83\89\83X\82Å\82 \82ê\82Î\81Agit-commit --amend\82·\82é\81B\81u.git+\81v\82Æ\82©\81u.git+!\81v\82Æ\82©\81B
++ git\8aÇ\97\9d\83t\83@\83C\83\8b\82Å\82È\82¯\82ê\82Îgit-init/git-add\82·\82é\81B
++ \83}\83N\83\8d\82ð\8bN\93®\82µ\82½\82ç\8b\93\93®\82ð\8am\94F\82·\82é\82ª\81A\90Ý\92è\8e\9f\91æ\82Å\8e©\93®\8bN\93®\83}\83N\83\8d\82Ì\8e\9e\82Í\8am\94F\82¹\82¸\82É\83R\83~\83b\83g\82Å\82«\82é\81B
++ \82·\82×\82Ä\82Ì\8f\88\97\9d\82ª\8fI\97¹\82µ\82½\82Æ\82«\82É\81A\90Ý\92è\8e\9f\91æ\82Å\82Ù\82©\82Ì\93®\8dì\82ð\91±\82¯\82Ä\82Å\82«\82é\81B
++ core.editor\82ª\8ew\92è\82³\82ê\82Ä\82¢\82È\82¢\8fê\8d\87\82Í\81A\8fG\8aÛ\82ð\97§\82¿\8fã\82°\82é\82æ\82¤\82É\82·\82é\81B
++ \83e\83\93\83v\83\8c\81[\83g\83t\83@\83C\83\8b\92\86\82Ì%\82Æ\83A\83\8b\83t\83@\83x\83b\83g1\95\8e\9a\82ð\81A\94C\88Ó\82Ì\95\8e\9a\97ñ\82É\95Ï\8dX\82Å\82«\82é\81B
+*/
+
+// git.exe\82Ì\83t\83\8b\83p\83X\81B
+// \83}\83N\83\8d\93à\82Å\81A$git + " commit -v" \82Æ\82¢\82Á\82½\95\8e\9a\97ñ\82Ì\8c\8b\8d\87\82ð\8ds\82¤\82Ì\82Å\81Agit.exe\82Ö\82Ì\83t\83\8b\83p\83X\88È\8aO\82Í\8bL\8dÚ\82µ\82È\82¢\82±\82Æ\81B
+$git = "f:\\cygwin\\bin\\git.exe";
+
+// --file\83I\83v\83V\83\87\83\93\82Ì\91Î\8fÛ\82Æ\82È\82é\83t\83@\83C\83\8b\96¼\81B
+// $Ffile\82Ì\95\8e\9a\97ñ\92·\82ª250\95\8e\9a\88È\8fã\82 \82é\82Æ\81A\93®\8dì\82ª\82¨\82©\82µ\82­\82È\82è\82Ü\82·\81B\82 \82Ü\82è\82É\82à\92·\82¢\83t\83\8b\83p\83X\82Å\82Í\8eg\82í\82È\82¢\82±\82Æ\81B
+//$Ffile = currentmacrofilename + ".msg";              //\90Ý\92è\97á: \83}\83N\83\8d\83t\83H\83\8b\83_\92\86\82É"\83}\83N\83\8d\83t\83@\83C\83\8b\96¼.msg"\81i\82½\82Æ\82¦\82Îgit-commit.mac.msg\81j\82Æ\82¢\82¤\82æ\82¤\82È\83t\83@\83C\83\8b\82ð\8dì\82è\82»\82ê\82ð\91Î\8fÛ\82Æ\82·\82é\81B
+//$Ffile = basename2 + ".msg";         //\90Ý\92è\97á2: \8c»\8dÝ\95Ò\8fW\92\86\82Ì\83t\83@\83C\83\8b\96¼\82ð\8c³\82É\81B
+$Ffile = basename2 + ".msg";
+
+// git-commit\82·\82é\82Æ\82«\81A\95K\82¸-e\83I\83v\83V\83\87\83\93\82ð\82Â\82¯\82é\82©\81B
+#opt_e = false;
+
+// \83R\83\81\83\93\83g\82Æ\82È\82é\95\8e\9a(\90³\8bK\95\\8c»)\81B\95\8e\9a\97ñ\82É\91\8dÝ\82·\82ê\82Î\82»\82ê\88È\8d~\82ª\83R\83\81\83\93\83g\82Æ\82È\82é\95\8e\9a\97ñ\81B\95K\82¸[]\82Å\82­\82­\82é\82±\82Æ\81B
+//$kigou = "[/\\*#]"           //\8bL\93ü\97á: Perl\82âRuby\82â\83V\83F\83\8b"#"\81EC\82â\8fG\8aÛ\83G\83f\83B\83b\83^"//"\81EC++"/*"\82ð\91z\92è\81B
+//$kigou = "[\\!-/:-@\\[-\\`\\{-~]"            //\90Ý\92è\97á: \94¼\8ap\8bL\8d\86\82Ì\82·\82×\82Ä\81B
+$kigou = "[/\\*#]";
+
+if( version < 700 ){
+       message "\8fG\8aÛ\82Ì\83o\81[\83W\83\87\83\93\82ª\8cÃ\82¢\82Å\82·\81B\83}\83N\83\8d\82ð\8fI\97¹\82µ\82Ü\82·\81B";
+       endmacro;
+}
+
+call call_macrodll;
+
+// \8f\89\8aú\90Ý\92è
+#_[0] = x;     #_[1] = y;
+$_[0] = searchbuffer;  #_[2] = searchoption;   $_[1] = getsearchhist(0);
+#_[3] = foundhilighting;       $_[2] = foundbuffer;    #_[4] = foundoption;
+#_[5] = overwrite;     #_[6] = browsemode;     #_[7] = imestate;
+if( #_[5] )    overwriteswitch;
+if( #_[6] )    browsemodeswitch;
+if( #_[7] )    imeswitch;
+setcompatiblemode 0x0002 | 0x0008 | 0x0200;            // 0x002=\90Ü\82è\82½\82½\82Ý\82ð\96³\8e\8b\82µ\82µ\82Ä\82È\82é\82×\82­\88Û\8e\9d, 0x0008=\95\94\95ª\95Ò\8fW\82ð\96³\8e\8b\82µ\82Ä\82È\82é\82×\82­\88Û\8e\9d, 0x0200=\8c\9f\8dõ\82Å\82Ì\95\\8e¦\82ð\81u\94Í\88Í\91I\91ð\81v\81B
+begingroupundo;
+escape;                // \94Í\88Í\91I\91ð\82ð\89ð\8f\9c\82·\82é\82ª\81A\83}\83N\83\8d\8fI\97¹\8e\9e\82É\96ß\82³\82È\82¢\8bÉ\88«\8ed\97l\81B
+forceinselect 1;
+disabledraw;
+
+main:
+
+       // \8fG\8aÛ\82Ì\83E\83B\83\93\83h\83Eor\83^\83u\83n\83\93\83h\83\8b\82Ì\8eæ\93¾\82·\82é\81B
+       if( tabmode )
+               #hwnd = gettabhandle(0, tabgroup, taborder);
+       else
+               #hwnd = hidemaruhandle(0);
+
+       gofiletop;
+
+       ##fp = dllfunc("FILE_OPENFILE", $Ffile, "w");
+       if( ##fp == 0  ){
+               ##r = dllfunc( "FILE_CLOSEFILE", ##fp );
+               call end_macro $Ffile + "\82Ì\83I\81[\83v\83\93\82É\8e¸\94s\82µ\82½\82©\82·\82Å\82É\91\8dÝ\82µ\82Ä\82¢\82é\81B";
+       }
+
+       call make_Ffile ##fp;
+
+       if( !dllfunc( "FILE_CLOSEFILE", ##fp ) )
+               call end_macro "\83t\83@\83C\83\8b\82Ì\83N\83\8d\81[\83Y\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B";
+
+       save;
+
+       call begin_commit ##return;             // ##return\82Í\81Amake_Ffile\82Ì\95Ô\92l\81i\8dÅ\8cã\82Ì\83\81\83b\83Z\81[\83W\82Ì\92·\82³\81j\81B
+
+       call end_macro;
+
+endmacro;
+
+call_macrodll:
+
+       loaddll "macrodll.dll";
+       if( !result ){
+               message "macrodll.dll\82ª\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B\83}\83N\83\8d\82ð\8fI\97¹\82µ\82Ü\82·\81B";
+               endmacro;
+       }
+       if( dllfunc("GETVERSIONINT") < 0.82 ){
+               message "macrodll.dll\82ª\8cÃ\82¢\82Å\82·\81B\83}\83N\83\8d\82ð\8fI\97¹\82µ\82Ü\82·\81B";
+               endmacro;
+       }
+
+return;
+
+compile_start:
+// macrodll.dll\82ÌCOMPILE_START\82ð\8eÀ\8ds\82·\82é\81B
+//arg: $\83_\83C\83A\83\8d\83O\82Ì\83^\83C\83g\83\8b, $\83R\83}\83\93\83h, $\83G\83\89\81[\83\81\83b\83Z\81[\83W
+//ret: #COMPILE_GETEXITCODE
+
+       if( !dllfunc("COMPILE_SET", "title", currentmacrobasename + " - " + $$1)
+               || (!dllfunc("COMPILE_SETSIZE", windowcx, windowcy / 2) )
+               || (!dllfunc("COMPILE_SETCOLOR", 0xFFFFFF, 0x000000) )
+//             || !dllfunc("", )
+       )
+               call end_macro "macrodll.dll\82ÌCOMPILE_SET\82©COMPILE_SETSIZE\82ª\82Å\82«\82È\82¢\81B";
+
+       //\81@\8eÀ\8dÛ\82É\83R\83\93\83p\83C\83\8b\8aJ\8en\81B
+       if( !dllfunc("COMPILE_START", #hwnd, 0, 0, $$2, directory2) )
+               call end_macro $$3;
+
+return dllfunc("COMPILE_GETEXITCODE");
+
+make_Ffile:
+//arg: #\83t\83@\83C\83\8b\83|\83C\83\93\83^(macrodll.dll\97\98\97p)
+//ret: \8dÅ\8cã\82Ì$$msg\82Ì\92·\82³\81B
+
+       $$search = "(?<=^[ \\t]*"+ $kigou + "*)\\.git[:+]!?";
+       searchdown $$search, regular, nohilight, maskcomment, maskonly;
+       while( result && colorcode & 0x00000003 ){
+               $$tag = gettext( foundtopx, foundtopy, foundendx, foundendy, true );
+               $$msg = gettext2(xtocolumn(foundendx, foundendy), lineno, linelen2, lineno, true);
+
+               // \83^\83O\81i\82Æ\82»\82ê\82ð\8aÜ\82Þ\8ds\81j\82ð\8dí\8f\9c\82·\82é\81B\83^\83O\82Ì\96\96\94ö\82ª\81I\82Å\82 \82ê\82Î\83^\83O\82¾\82¯\8dí\8f\9c\82·\82é\81B
+               if( rightstr($$tag, 1) != "!" ){
+                       golineend2;
+                       deletebefore;
+                       deleteline;
+               }else
+                       delete;
+
+               // \8e\9f\82Ì\8ds\82ð\92T\82·\81B
+               if( $$msg == "" )
+                       //TODO: \8e\9f\82Ì\8ds\82©\82ç\8eæ\93¾\82·\82é\93®\8dì\82ð\8f\91\82­\81B
+                       message "null";
+               else{
+                       //TODO: 1\8ds\96Ú\82É\82È\82é\95\8e\9a\97ñ\81A\82»\82ê\82¼\82ê\82Ì\83\81\83b\83Z\81[\83W\82É\91Î\82·\82é\83t\83@\83C\83\8b\96¼\82â\8ds\94Ô\8d\86\82ª\8bL\93ü\82³\82ê\82é\8f\88\97\9d\82ð\8f\91\82­\81B
+                       if( !dllfunc("FILE_WRITEFILE", $$msg + "\n", ##1) ){
+                               ##r = dllfunc( "FILE_CLOSEFILE", ##1 );
+                               call end_macro $Ffile + "\82Ö\82Ì\92Ç\89Á\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B";
+                       }
+               }
+
+               finddown2;
+       }
+
+return strlen($$msg);
+
+begin_commit:
+//arg: #\8dÅ\8cã\82É\8eæ\93¾\82µ\82½\83^\83O\82Ì\8cã\82ë\82Ì\95\8e\9a\82Ì\92·\82³\81i\83t\83@\83C\83\8b\83T\83C\83Y\82ª0\82Å\82È\82¢\82©\82Ç\82¤\82©\81j
+
+       call reg_index;
+       if( #opt_e || ##1 == 0 ){
+               // \83T\83C\83Y0 or \91±\82¯\82Ä\95Ò\8fW\82·\82é\82Æ\82«\82ÍDOS\91\8b\82Å\8eÀ\8ds\81B
+               run getenv("COMSPEC") + " /C " + $git + " commit -v " + leftstr(" -F" + $Ffile, ##return * 0xFF) + leftstr(" -e", #opt_e * 3) + " " +  basename2;
+       }else{
+               call compile_start "\83R\83~\83b\83g\82µ\82Ä\82¢\82Ü\82·\81B",
+                       $git + " commit -v  -F " + $Ffile + " " +  basename2,
+                       "\83R\83~\83b\83g\8e\9e\81Amacrodll.dll\82ÌCOMPILE_START\82ª\82Å\82«\82Ü\82¹\82ñ\81B";
+       }
+
+return;
+
+reg_index:
+// git-init\81Agit-add\82·\82é\95K\97v\82ª\82 \82é\82©\8am\94F\82µ\82Ä\81A\82æ\82µ\82È\82É\8ds\82¤\81B
+
+       call compile_start "\82±\82Ì\83t\83@\83C\83\8b\82ª\81Agit\8aÇ\97\9d\89º\82É\82 \82é\82©\92²\82×\82Ä\82¢\82Ü\82·\81B",
+               getenv("COMSPEC") + " /C " + $git + " ls-file --error-unmatch" + basename2,
+               "git ls-file\8eÀ\8ds\8e\9e\81Amacrodll.dll\82ÌCOMPILE_START\82ª\82Å\82«\82Ü\82¹\82ñ\81B";
+
+       if( ##return != 0 )
+               call compile_start "git-add",
+                       getenv("COMSPEC") + " /C " + $git + " add " + basename2,
+                       "git add\8eÀ\8ds\8e\9e\81Amacrodll.dll\82ÌCOMPILE_START\82ª\82Å\82«\82Ü\82¹\82ñ\81B";
+
+return;
+
+end_macro:
+//arg: $\83G\83\89\81[\83\81\83b\83Z\81[\83W
+
+       moveto #_[0], #_[1];
+       setsearch $_[0], #_[2];
+       setsearchhist 0, $_[1];
+
+       if( #_[5] )
+               overwriteswitch;
+       if( #_[6] )
+               browsemodeswitch;
+       if( #_[7] )
+               imeswitch;
+
+       endgroupundo;
+
+       if( $$1 != "" ){
+               title currentmacrobasename, 0;
+               message $$1;
+       }
+
+       if( !dllfunc("FILE_DELETEFILE", $Ffile) )
+               message $Ffile + "\82Ì\8dí\8f\9c\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B\82¾\82©\82ç\81A\8e©\95ª\82Å\8fÁ\82µ\82Ä\82Ë\81B";
+
+
+endmacro;
\ No newline at end of file