/// Convert the Farsi VIM into Farsi 3342 standard. static void conv_to_pstd(void) { char_u *ptr; int lnum, llen, i; // Following line contains Farsi encoded character. do_cmdline_cmd("%s/\232/\202\231/ge"); for (lnum = 1; lnum <= curbuf->b_ml.ml_line_count; lnum++) { ptr = ml_get((linenr_T)lnum); llen = (int)STRLEN(ptr); for (i = 0; i < llen; i++) { ptr[i] = toF_TyA(ptr[i]); } } // Assume the screen has been messed up: clear it and redraw. redraw_later(CLEAR); msg_attr((const char *)farsi_text_2, hl_attr(HLF_S)); }
VOID hsc_message(HSCPRC * hp, HSCMSG_ID msg_id, const char *format,...) { HSCMSG_CLASS msg_class = hsc_get_msg_class(hp, msg_id); HSCMSG_ID msg_id_unmasked = msg_id & MASK_MESSAGE; INFILE *msg_inpf = NULL; STRPTR msg_fname = "unknown"; ULONG msg_x = 0; ULONG msg_y = 0; BOOL disp_msg = really_display_message(hp, msg_id); /* display message? */ if (disp_msg) { va_list ap; /* increase message-counter */ hp->msg_count++; /* set fatal-flag, if this is a fatal message */ if (msg_id > MSG_FATAL) { hp->fatal = TRUE; } /* clear message buffer */ clr_estr(hp->curr_msg); /* create message string */ va_start(ap, format); while (format[0]) { if (format[0] == '%') { STRPTR s = NULL; HSCTAG *tag = NULL; HSCTAG *lazy = NULL; HSCATTR *attr = NULL; HSCENT *ent = NULL; format++; switch (format[0]) { case 'd': /* * append decimal number */ app_estr(hp->curr_msg, long2str(va_arg(ap, LONG))); break; case 'q': /* * append quoted string */ s = va_arg(ap, STRPTR); app_estrch(hp->curr_msg, '`'); while (s[0]) { switch (s[0]) { case '\n': app_estr(hp->curr_msg, "\\n"); break; case '\"': app_estr(hp->curr_msg, "\\\""); break; default: if (s[0] < ' ') { app_estrch(hp->curr_msg, '\\'); app_estr(hp->curr_msg, long2str((LONG) s[0])); app_estrch(hp->curr_msg, ';'); } else app_estrch(hp->curr_msg, s[0]); } s++; /* process next char */ } app_estrch(hp->curr_msg, '\''); break; case 's': /* * append simple string */ app_estr(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'T': /* append tag-pointer */ tag = va_arg(ap, HSCTAG *); msg_tag(hp->curr_msg, tag->name); break; case 't': /* append tag */ msg_tag(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'C': /* append end tag-pointer */ tag = va_arg(ap, HSCTAG *); msg_endtag(hp->curr_msg, tag->name); break; case 'c': /* append end tag */ msg_endtag(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'A': /* append attribute-pointer */ attr = va_arg(ap, HSCATTR *); msg_attr(hp->curr_msg, attr->name); break; case 'a': /* append attribute */ msg_attr(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'E': /* append entity-pointer */ ent = va_arg(ap, HSCENT *); msg_entity(hp->curr_msg, ent->name); break; case 'e': /* append entity */ msg_entity(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'i': /* append ID */ msg_idname(hp->curr_msg, va_arg(ap, STRPTR)); break; case 'j': /* append jerk/prostitute */ if (hp->prostitute) { app_estr(hp->curr_msg, "prostitutes"); } else { app_estr(hp->curr_msg, "jerks"); } break; case 'L': /* append var-list-pointer */ lazy = va_arg(ap, HSCTAG *); msg_lazy(hp->curr_msg, lazy->name); break; case 'l': /* append var-list */ msg_lazy(hp->curr_msg, va_arg(ap, STRPTR)); break; default: /* * append unknown */ app_estrch(hp->curr_msg, '%'); if (format[0] && (format[0] != '%')) { app_estrch(hp->curr_msg, '%'); format--; } break; } } else { app_estrch(hp->curr_msg, format[0]); } if (format[0]) { format++; } }