'Convert chars / By Kabuneko 99/07/20 'second chars converted into accent ' a = grave accent ' e = acute accent ' o = circumflex accent (Rôma-ji macron substitute) ' n = tilde ' u = umlaut ' . = others ' x = extra 'when stacked vertically, the groups of chars separated by colons 'in const charset$ make up a table of characters as shown below ' accent$ = columns ' alpha$ = lines ' aeonu.x <- second char ' ' a àáâãäåæ ' e èéê#ë## ' i ìíî#ï#ý ' o òóôõöøœ ' u ùúû#ü## ' A ÀÁÂÃÄÅÆ ' E ÈÉÊ#Ë## ' I ÌÍÎ#Ï#Ý ' O ÒÓÔÕÖØŒ ' U ÙÚÛ#Ü## ' c #ç##### ' C #Ç##### ' n ###ñ##— ' N ###Ñ### ' x “”‘•’#ß 'the table can be modified as long as the number of chars is not changed 'including y + umlaut (&hff) causes a macro error on a Japanese system dim first$, second$, char$ dim accent, alpha const accent$ = "aeonu.x" const alpha$ = "aeiouAEIOUcCnNx" const charset$ = "àáâãäåæ:èéê#ë##:ìíî#ï#ý:òóôõöøœ:ùúû#ü##:ÀÁÂÃÄÅÆ:ÈÉÊ#Ë##:ÌÍÎ#Ï#Ý:ÒÓÔÕÖØŒ:ÙÚÛ#Ü##:#ç#####:#Ç#####:###ñ##—:###Ñ###:“”‘•’#ß" proc convert 'convert two chars into one if @hwnd=0 then exit proc @MoveLeftChar 'move one char to the left second$ = chr$(@Code) 'read current char as string accent = instr(1, accent$, second$) 'determining which accent if accent = 0 then 'not a character modifier @MoveRightChar exit proc end if @MoveLeftChar first$ = chr$(@Code) 'read current char as string alpha = instr(1, alpha$, first$) if alpha = 0 then 'not a char to be converted @MoveRightChar @MoveRightChar exit proc end if char$ = mid$(charset$, 8*(alpha-1)+accent, 1) if char$ = "#" then 'there is no such special char @MoveRightChar @MoveRightChar exit proc end if @Insert char$ @DeleteChar @DeleteChar end proc 'Remove accents - ignore others; uses table at file top proc main 'Remove accents dim char, r if @hwnd=0 then exit proc r = msgbox("Remove accent marks?", 1) if r = IDCANCEL then exit proc @Redraw = 0 'suppress display @UndoBlock = 1 'facilitate Undo @@FindRegExp = 1 'use regular expression @@FindRegExp = -2 @MoveFileTop @MoveBeginningLine do while 1 @FindStringBottom "[€-þ]" if @@SearchFound = 0 then exit do char = instr(charset$, chr$(@Code)) if char > 0 and char <= 8*14 then if (char mod 8) < 6 then @Insert mid$(alpha$, (char/8) + 1, 1) @DeleteChar end if end if loop @UndoBlock = 0 @Redraw = 1 call msgbox("Accents removed!") end proc