Pastebin: 秀丸マクロ: CharCode.mac - カーソル行の文字コードを表示します。

Format
Plain text
Post date
2015-10-10 21:24
Publication Period
Unlimited
  1. ファイル名:
  2. CharCode.mac
  3. 概要:
  4. カーソル行の文字コードを表示します。
  5. 詳細:
  6. 秀丸エディタには、すでに「文字コード表示」という機能がありますが、それを少し拡張したようなものです。
  7. ちなみに私は、Alt + Enter にキーを割り当てています。
  8. 以下コード:
  9. // ------------------------------------------------------------
  10. if (code < 0x20 && unicode < 0x20)
  11. { beep; endmacro; }
  12. loaddll "hmjre.dll";
  13. $SP = " ";
  14. $menu[0] = "文字サンプル: ";
  15. $menu[1] = "Shift-JIS(&S): ";
  16. $menu[2] = "EUC(&E): ";
  17. $menu[3] = "JIS(&J): ";
  18. $menu[4] = "Unicode(UTF-32)(&U): ";
  19. $menu[5] = "Unicode(UTF-16)(&W): ";
  20. $menu[6] = "Unicode(UTF-8)(&8): ";
  21. $menu[7] = "more(&M)...";
  22. $menu[8] = "FileFormat.Info...";
  23. $menu[9] = "unicode.org...";
  24. $menu[10] = "ウィクショナリー...";
  25. #menu=11;
  26. // ------------------------------------------------------------
  27. #c = code; // Shift-JIS
  28. #u = unicode; // UCS-4
  29. $s = unichar(unicode); // WCHAR
  30. if ($s == "&")
  31. $item[0] = "&&";
  32. else
  33. $item[0] = $s;
  34. // ------------------------------------------------------------
  35. // [1] Shift-JIS
  36. if (#c == 0)
  37. $item[1] = "--";
  38. else
  39. $item[1] = hex(#c);
  40. // ------------------------------------------------------------
  41. // [2] EUC
  42. // [3] JIS
  43. if (#c == 0) {
  44. $item[2] = "--";
  45. $item[3] = "--";
  46. } else if (#c < 256) {
  47. $e = hex(#c);
  48. $item[2] = $e;
  49. $item[3] = $e;
  50. if (0xA0 < #c && #c < 0xE0)
  51. $item[2] = hex(0x8E00 + #c);
  52. } else {
  53. #a = #c / 256;
  54. #b = #c & 255;
  55. // if (#a < 0xA0) #a = #a - 0x71; else #a = #a - 0xB1; #a = #a * 2 + 1; if (#b > 0x7E) #b = #b - 1; if (#b > 0x9D) { #b = #b - 0x7D; #a = #a + 1; } else #b = #b - 0x1F; #j = #a * 256 + #b; // orthodox
  56. if (#a < 224) if (#b < 128) #j = 57631; else if (#b < 159) #j = 57632; else #j = 57470; else if (#b < 128) #j = 90399; else if (#b < 159) #j = 90400; else #j = 90238; #j = #a * 512 + #b - #j; // HmfSjisJis.cpp
  57. // if (#a > 0xDF) #a = #a - 0x40; if (#b > 0x7F) #b = #b - 1; #a = #a * 2 - 0xE0; if (#b < 0x9E) { #a = #a - 1; #b = #b - 0x1F; } else #b = #b - 0x7D; #j = #a * 256 + #b;
  58. $item[2] = hex(#j | 0x8080);
  59. $item[3] = hex(#j );
  60. }
  61. // ------------------------------------------------------------
  62. // [4] Unicode(UTF-32)
  63. $item[4] = rightstr("0000000" + hex(#u), 8);
  64. // ------------------------------------------------------------
  65. // [5] Unicode(UTF-16)
  66. if (#u >= 0x010000) {
  67. #i = #u - 0x010000;
  68. $item[5] = hex(#i / 0x0400 + 0xD800)
  69. + $SP + hex(#i % 0x0400 + 0xDC00);
  70. }
  71. else
  72. $item[5] = rightstr("000" + hex(#u), 4);
  73. // ------------------------------------------------------------
  74. // [6] Unicode(UTF-8)
  75. $e = "";
  76. if (#u <= 0x0000007F) { #k = 0x00; #n = 1; }
  77. else if (#u <= 0x000007FF) { #k = 0xC0; #n = 2; }
  78. else if (#u <= 0x0000FFFF) { #k = 0xE0; #n = 3; }
  79. else if (#u <= 0x001FFFFF) { #k = 0xF0; #n = 4; }
  80. else if (#u <= 0x03FFFFFF) { #k = 0xF8; #n = 5; }
  81. else if (#u <= 0x7FFFFFFF) { #k = 0xFC; #n = 6; }
  82. else { beep; endmacro; }
  83. #i = #u;
  84. while (#n >= 2) {
  85. $e = $SP + hex(#i & 0x3F | 0x80) + $e;
  86. #i = #i / 64;
  87. #n = #n - 1;
  88. }
  89. $item[6] = hex(#i | #k) + $e;
  90. // ------------------------------------------------------------
  91. #i = 0; while (#i < #menu) {
  92. $menu[#i] = $menu[#i] + $item[#i];
  93. #i = #i + 1;
  94. }
  95. // ------------------------------------------------------------
  96. enabledraw;
  97. menuarray $menu, #menu; #a = result - 1;
  98. disabledraw;
  99. if (#a == -1)
  100. endmacro;
  101. else if (#a == 0)
  102. endmacro;
  103. else if (#a == 7)
  104. goto MORE;
  105. else if (#a == 8)
  106. run getenv("Comspec") + " /c start http://www.fileformat.info/info/unicode/char/" + hex(unicode) + "/index.htm>NUL";
  107. else if (#a == 9)
  108. run getenv("Comspec") + " /c start http://unicode.org/cldr/utility/character.jsp?a=" + hex(unicode) + " >NUL";
  109. else if (#a == 10) {
  110. $s = unichar(unicode);
  111. #ScriptControl = createobject("ScriptControl");
  112. setpropstr #ScriptControl, "Language", "JScript";
  113. #CodeObject = getpropobj(#ScriptControl, "CodeObject");
  114. $s = callmethod_returnstr(#CodeObject, "encodeURIComponent", $s);
  115. releaseobject #ScriptControl;
  116. $s = "https://ja.wiktionary.org/wiki/" + $s;
  117. $s = dllfuncstr("ReplaceRegular", "%", $s, 0, "^%%", 2);
  118. freedll;
  119. run getenv("Comspec") + " /c start " + $s + " >NUL";
  120. }
  121. else if ($item[#a] != "--") { // 1..6
  122. begingroupundo;
  123. insert $item[#a];
  124. endgroupundo;
  125. }
  126. endmacro;
  127. ////////////////////////////////////////////////////////////////
  128. MORE:
  129. $l = $item[4]; // "0001F408"
  130. $w = $item[5]; // "D83D DC08"
  131. $b = $item[6]; // "F0 9F 90 88"
  132. // ------------------------------------------------------------
  133. // [0] &#128008;
  134. // [1] &#x1F408;
  135. $item[0] = "&#" + str(#u) + ";";
  136. $item[1] = "&#x" + hex(#u) + ";";
  137. // ------------------------------------------------------------
  138. // [2] 0x0001F408
  139. // [3] \U0001F408
  140. $item[2] = "0x" + $l;
  141. $item[3] = "\\U" + $l;
  142. // ------------------------------------------------------------
  143. // [4] 0xD83D,0xDC08
  144. // [5] \uD83D\uDC08
  145. $item[4] = "0x" + dllfuncstr("ReplaceRegular", $SP, $w, 0, ",0x", 2);
  146. $item[5] = "\\u" + dllfuncstr("ReplaceRegular", $SP, $w, 0, "\\\\u", 2);
  147. // ------------------------------------------------------------
  148. // [6] 0xF0,0x9F,0x90,0x88
  149. // [7] \xF0\x9F\x90\x88
  150. // [8] 0xF09F9088
  151. $item[6] = "0x" + dllfuncstr("ReplaceRegular", $SP, $b, 0, ",0x", 2);
  152. $item[7] = "\\x" + dllfuncstr("ReplaceRegular", $SP, $b, 0, "\\\\x", 2);
  153. $item[8] = "0x" + dllfuncstr("ReplaceRegular", $SP, $b, 0, "", 2);
  154. #menu=9;
  155. // ------------------------------------------------------------
  156. #i = 0; while (#i < #menu) {
  157. $menu[#i] = "(&" + str(#i) + ") " + dllfuncstr("ReplaceRegular", "&", $item[#i], 0, "&&", 2);
  158. #i = #i + 1;
  159. }
  160. // ------------------------------------------------------------
  161. enabledraw;
  162. menuarray $menu, #menu; #a = result - 1;
  163. disabledraw;
  164. if (#a == -1)
  165. endmacro;
  166. begingroupundo;
  167. insert $item[#a];
  168. endgroupundo;
  169. endmacro;
  170. ////////////////////////////////////////////////////////////////
Download Printable view

URL of this paste

Embed with JavaScript

Embed with iframe

Raw text