aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/farsi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/farsi.h')
-rw-r--r--src/nvim/farsi.h183
1 files changed, 183 insertions, 0 deletions
diff --git a/src/nvim/farsi.h b/src/nvim/farsi.h
new file mode 100644
index 0000000000..c5ee336a0f
--- /dev/null
+++ b/src/nvim/farsi.h
@@ -0,0 +1,183 @@
+/// @file farsi.h
+///
+/// Farsi characters are categorized into following types:
+///
+/// TyA (for capital letter representation)
+/// TyB (for types that look like _X e.g. AYN)
+/// TyC (for types that look like X_ e.g. YE_)
+/// TyD (for types that look like _X_ e.g. _AYN_)
+/// TyE (for types that look like X e.g. RE)
+
+#ifndef NEOVIM_FARSI_H
+#define NEOVIM_FARSI_H
+
+#include "normal.h"
+#include "types.h"
+
+// Farsi character set definition
+
+// Begin of the non-standard part
+
+#define TEE_ 0x80
+#define ALEF_U_H_ 0x81
+#define ALEF_ 0x82
+#define _BE 0x83
+#define _PE 0x84
+#define _TE 0x85
+#define _SE 0x86
+#define _JIM 0x87
+#define _CHE 0x88
+#define _HE_J 0x89
+#define _XE 0x8a
+#define _SIN 0x8b
+#define _SHIN 0x8c
+#define _SAD 0x8d
+#define _ZAD 0x8e
+#define _AYN 0x8f
+#define _AYN_ 0x90
+#define AYN_ 0x91
+#define _GHAYN 0x92
+#define _GHAYN_ 0x93
+#define GHAYN_ 0x94
+#define _FE 0x95
+#define _GHAF 0x96
+#define _KAF 0x97
+#define _GAF 0x98
+#define _LAM 0x99
+#define LA 0x9a
+#define _MIM 0x9b
+#define _NOON 0x9c
+#define _HE 0x9d
+#define _HE_ 0x9e
+#define _YE 0x9f
+#define _IE 0xec
+#define IE_ 0xed
+#define IE 0xfb
+#define _YEE 0xee
+#define YEE_ 0xef
+#define YE_ 0xff
+
+// End of the non-standard part
+
+// Standard part
+
+#define F_BLANK 0xa0 // Farsi ' ' (SP) character
+#define F_PSP 0xa1 // PSP for capitalizing of a character
+#define F_PCN 0xa2 // PCN for redefining of the hamye meaning
+#define F_EXCL 0xa3 // Farsi ! character
+#define F_CURRENCY 0xa4 // Farsi Rial character
+#define F_PERCENT 0xa5 // Farsi % character
+#define F_PERIOD 0xa6 // Farsi '.' character
+#define F_COMMA 0xa7 // Farsi ',' character
+#define F_LPARENT 0xa8 // Farsi '(' character
+#define F_RPARENT 0xa9 // Farsi ')' character
+#define F_MUL 0xaa // Farsi 'x' character
+#define F_PLUS 0xab // Farsi '+' character
+#define F_BCOMMA 0xac // Farsi comma character
+#define F_MINUS 0xad // Farsi '-' character
+#define F_DIVIDE 0xae // Farsi divide (/) character
+#define F_SLASH 0xaf // Farsi '/' character
+
+#define FARSI_0 0xb0
+#define FARSI_1 0xb1
+#define FARSI_2 0xb2
+#define FARSI_3 0xb3
+#define FARSI_4 0xb4
+#define FARSI_5 0xb5
+#define FARSI_6 0xb6
+#define FARSI_7 0xb7
+#define FARSI_8 0xb8
+#define FARSI_9 0xb9
+
+#define F_DCOLON 0xba // Farsi ':' character
+#define F_SEMICOLON 0xbb // Farsi ';' character
+#define F_GREATER 0xbc // Farsi '>' character
+#define F_EQUALS 0xbd // Farsi '=' character
+#define F_LESS 0xbe // Farsi '<' character
+#define F_QUESTION 0xbf // Farsi ? character
+
+#define ALEF_A 0xc0
+#define ALEF 0xc1
+#define HAMZE 0xc2
+#define BE 0xc3
+#define PE 0xc4
+#define TE 0xc5
+#define SE 0xc6
+#define JIM 0xc7
+#define CHE 0xc8
+#define HE_J 0xc9
+#define XE 0xca
+#define DAL 0xcb
+#define ZAL 0xcc
+#define RE 0xcd
+#define ZE 0xce
+#define JE 0xcf
+#define SIN 0xd0
+#define SHIN 0xd1
+#define SAD 0xd2
+#define ZAD 0xd3
+#define _TA 0xd4
+#define _ZA 0xd5
+#define AYN 0xd6
+#define GHAYN 0xd7
+#define FE 0xd8
+#define GHAF 0xd9
+#define KAF 0xda
+#define GAF 0xdb
+#define LAM 0xdc
+#define MIM 0xdd
+#define NOON 0xde
+#define WAW 0xdf
+#define F_HE 0xe0 // F_ added for name clash with Perl
+#define YE 0xe1
+#define TEE 0xfc
+#define _KAF_H 0xfd
+#define YEE 0xfe
+
+#define F_LBRACK 0xe2 // Farsi '[' character
+#define F_RBRACK 0xe3 // Farsi ']' character
+#define F_LBRACE 0xe4 // Farsi '{' character
+#define F_RBRACE 0xe5 // Farsi '}' character
+#define F_LQUOT 0xe6 // Farsi left quotation character
+#define F_RQUOT 0xe7 // Farsi right quotation character
+#define F_STAR 0xe8 // Farsi '*' character
+#define F_UNDERLINE 0xe9 // Farsi '_' character
+#define F_PIPE 0xea // Farsi '|' character
+#define F_BSLASH 0xeb // Farsi '\' character
+
+#define MAD 0xf0
+#define JAZR 0xf1
+#define OW 0xf2
+#define MAD_N 0xf3
+#define JAZR_N 0xf4
+#define OW_OW 0xf5
+#define TASH 0xf6
+#define OO 0xf7
+#define ALEF_U_H 0xf8
+#define WAW_H 0xf9
+#define ALEF_D_H 0xfa
+
+// definitions for the window dependent functions (w_farsi).
+#define W_CONV 0x1
+#define W_R_L 0x2
+
+// special Farsi text messages
+extern const char_u farsi_text_1[];
+extern const char_u farsi_text_2[];
+extern const char_u farsi_text_3[];
+extern const char_u farsi_text_5[];
+
+int toF_TyA(int c);
+int fkmap(int c);
+void conv_to_pvim(void);
+void conv_to_pstd(void);
+char_u *lrswap(char_u *ibuf);
+char_u *lrFswap(char_u *cmdbuf, int len);
+char_u *lrF_sub(char_u *ibuf);
+int cmdl_fkmap(int c);
+int F_isalpha(int c);
+int F_isdigit(int c);
+int F_ischar(int c);
+void farsi_fkey(cmdarg_T *cap);
+
+#endif // NEOVIM_FARSI_H