aboutsummaryrefslogtreecommitdiffstats
path: root/japanese/slirc/files/patch-editor.sl
diff options
context:
space:
mode:
Diffstat (limited to 'japanese/slirc/files/patch-editor.sl')
-rw-r--r--japanese/slirc/files/patch-editor.sl109
1 files changed, 109 insertions, 0 deletions
diff --git a/japanese/slirc/files/patch-editor.sl b/japanese/slirc/files/patch-editor.sl
new file mode 100644
index 000000000000..1566a6193eb4
--- /dev/null
+++ b/japanese/slirc/files/patch-editor.sl
@@ -0,0 +1,109 @@
+--- scripts/editor.sl.orig Mon Jun 7 16:07:23 1999
++++ scripts/editor.sl Sat Jan 6 21:23:30 2001
+@@ -35,6 +35,13 @@
+ {
+ irc_edit_insert_pos--;
+ buf = chop_last(irc_buffer);
++#ifdef KANJI
++ if(iskanji(irc_buffer[irc_edit_insert_pos]))
++ {
++ irc_edit_insert_pos--;
++ buf = substr(irc_buffer, 1, irc_edit_insert_pos);
++ }
++#endif
+ irc_set_buffer(buf);
+ }
+ else
+@@ -42,6 +49,14 @@
+ irc_edit_insert_pos--;
+ buf = substr(irc_buffer, 1, irc_edit_insert_pos)
+ + substr(irc_buffer, irc_edit_insert_pos + 2, -1);
++#ifdef KANJI
++ if(iskanji(irc_buffer[irc_edit_insert_pos]))
++ {
++ irc_edit_insert_pos--;
++ buf = substr(irc_buffer, 1, irc_edit_insert_pos)
++ + substr(irc_buffer, irc_edit_insert_pos + 3, -1);
++ }
++#endif
+ irc_set_buffer(buf);
+ }
+ !if(irc_edit_insert_pos)
+@@ -67,10 +82,25 @@
+ if(ch < 0x0a0) return; % ISO-LATIN-1 are 0xa0-0xff
+ }
+ variable buf;
++#ifdef KANJI
++ variable keysym;
++#endif
+ if(irc_edit_insert_pos >= strlen(irc_buffer))
+ {
++#ifdef KANJI
++ buf = irc_buffer + char(ch);
++ irc_edit_insert_pos = strlen(buf);
++ if (iskanji(ch))
++ {
++ keysym = irc_get_input();
++ buf = irc_buffer + char(ch) + char(keysym);
++ irc_edit_insert_pos = strlen(buf);
++ }
++ irc_set_buffer(buf);
++#else
+ irc_set_buffer(irc_buffer + char(ch));
+ irc_edit_insert_pos = strlen(irc_buffer);
++#endif
+ }
+ else
+ {
+@@ -78,12 +108,30 @@
+ {
+ buf = char(ch) + irc_buffer;
+ irc_edit_insert_pos = 1;
++#ifdef KANJI
++ if (iskanji(ch))
++ {
++ keysym = irc_get_input();
++ buf = char(ch) + char(keysym) + irc_buffer;
++ irc_edit_insert_pos = 2;
++ }
++#endif
+ }
+ else
+ {
+ buf = substr(irc_buffer, 1, irc_edit_insert_pos)
+ + char(ch)
+ + substr(irc_buffer, irc_edit_insert_pos + 1, -1);
++#ifdef KANJI
++ if (iskanji(ch))
++ {
++ keysym = irc_get_input();
++ buf = substr(irc_buffer, 1, irc_edit_insert_pos)
++ + char(ch) + char(keysym)
++ + substr(irc_buffer, irc_edit_insert_pos + 1, -1);
++ irc_edit_insert_pos++;
++ }
++#endif
+ irc_edit_insert_pos++;
+ }
+ irc_set_buffer(buf);
+@@ -96,10 +144,20 @@
+ {
+ if(irc_edit_insert_pos > 0)
+ irc_edit_insert_pos --;
++#ifdef KANJI
++ if(irc_edit_insert_pos > 0)
++ if(iskanji(irc_buffer[irc_edit_insert_pos]))
++ irc_edit_insert_pos--;
++#endif
+ }
+
+ define do_scroll_right()
+ {
++#ifdef KANJI
++ if(irc_edit_insert_pos < strlen(irc_buffer))
++ if(iskanji(irc_buffer[irc_edit_insert_pos]))
++ irc_edit_insert_pos++;
++#endif
+ if(irc_edit_insert_pos < strlen(irc_buffer))
+ irc_edit_insert_pos++;
+ }