├── .gitignore ├── LICENSE.txt ├── README.md ├── autoload ├── .DS_Store ├── isotope.vim └── isotope │ ├── charset.vim │ └── diacritic.vim ├── doc └── isotope.txt └── plugin └── isotope.vim /.gitignore: -------------------------------------------------------------------------------- 1 | # Swap 2 | [._]*.s[a-v][a-z] 3 | [._]*.sw[a-p] 4 | [._]s[a-rt-v][a-z] 5 | [._]ss[a-gi-z] 6 | [._]sw[a-p] 7 | 8 | # Session 9 | Session.vim 10 | 11 | # Temporary 12 | .netrwhist 13 | *~ 14 | # Auto-generated tag files 15 | tags 16 | # Persistent undo 17 | [._]*.un~ 18 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Klas Segeljakt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

vim-isotope

2 | 3 |

4 | 5 |

6 | 7 | This plugin provides mappings for inserting characters as `ˢᵘᵖᵉʳˢᶜʳⁱᵖᵗˢ`, `ₛᵤbₛ꜀ᵣᵢₚₜₛ`, `u͟n͟d͟e͟r͟l͟i͟n͟e͟`, `s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶`, `𝐒𝐄𝐑𝐈𝐅-𝐁𝐎𝐋𝐃`, `𝐒𝐄𝐑𝐈𝐅-𝐈𝐓𝐀𝐋𝐈𝐂`, `𝔉ℜ𝔄𝔎𝔗𝔘ℜ`, `𝔻𝕆𝕌𝔹𝕃𝔼-𝕊𝕋ℝ𝕌ℂ𝕂`, `ᴙƎVƎᴙꙄƎD`, `INΛƎᴚ⊥Ǝᗡ`, `ⒸⒾⓇⒸⓁⒺⒹ`, and much more. Depending on your setup, some characters may not display correctly. 8 | 9 | # Installation 10 | 11 | If you are using [vim-plug](https://github.com/junegunn/vim-plug), add this to your config. 12 | 13 | ```vim 14 | Plug 'segeljakt/vim-isotope' 15 | ``` 16 | 17 | 18 | # Special characters 19 | 20 |

21 | 22 |

23 | 24 | The `IsotopeInsert` and `IsotopeToggle` can be used to insert special characters. 25 | 26 | ```vim 27 | " Convert the next typed character into SERIF_BOLD 28 | :IsotopeInsert SERIF_BOLD 29 | 30 | 𝐗 31 | 32 | " While toggled ON, convert all typed characters into FRAKTUR 33 | :IsotopeToggle FRAKTUR 34 | 35 | 𝔖𝔞𝔪𝔭𝔩𝔢 𝔗𝔢𝔵𝔱 36 | 37 | " Toggle character conversion OFF. 38 | :IsotopeToggle 39 | ``` 40 | 41 | A list of the supported classes of special characters can be viewed at the bottom of this README. 42 | 43 | # Combining characters 44 | 45 |

46 | 47 |

48 | 49 | The `IsotopeAttach` command can be used to attach one or multiple diacritics (combining characters). 50 | 51 | ```vim 52 | :'<,'>IsotopeAttach h e h e 53 | 54 | Sͤͪͤͪaͤͪͤͪmͤͪͤͪpͤͪͤͪlͤͪͤͪeͤͪͤͪ ͤͪͤͪtͤͪͤͪeͤͪͤͪxͤͪͤͪtͤͪͤͪ 55 | 56 | :'<,'>IsotopeAttach *below /center zabove 57 | 58 | S̸͙͛a̸͙͛m̸͙͛p̸͙͛l̸͙͛e̸͙͛ ̸͙͛t̸͙͛e̸͙͛x̸͙͛t̸͙͛ 59 | 60 | :'<,'>IsotopeAttach .below .above 61 | 62 | Ṩạ̇ṃ̇ṗ̣ḷ̇ẹ̇ ̣̇ṭ̇ẹ̇ẋ̣ṭ̇ 63 | 64 | :'<,'>IsotopeAttach xabove xbelow 65 | 66 | S͓̽a͓̽m͓̽p͓̽l͓̽e͓̽ ͓̽t͓̽e͓̽x͓̽t͓̽ 67 | 68 | :'<,'>IsotopeAttach ^below ~below ring-above <->below ~above 69 | 70 | S͍̰͎̃̊ã͍̰͎̊m͍̰͎̃̊p͍̰͎̃̊l͍̰͎̃̊ẽ͍̰͎̊ ͍̰͎̃̊t͍̰͎̃̊ẽ͍̰͎̊x͍̰͎̃̊t͍̰͎̃̊ 71 | ``` 72 | 73 | You may also insert diacritics by their raw unicode name through the `IsotopeAttach!` command. The following commands are equivalent to the ones above: 74 | 75 | ```vim 76 | :'<,'>IsotopeAttach! LATIN_SMALL_LETTER_H LATIN_SMALL_LETTER_E LATIN_SMALL_LETTER_H LATIN_SMALL_LETTER_E 77 | :'<,'>IsotopeAttach! ASTERISK_BELOW LONG_DOUBLE_SOLIDUS_OVERLAY ZIGZAG_ABOVE 78 | :'<,'>IsotopeAttach! DOT_BELOW DOT_ABOVE 79 | :'<,'>IsotopeAttach! X_ABOVE X_BELOW 80 | :'<,'>IsotopeAttach! CIRCUMFLEX_ACCENT_BELOW CIRCUMFLEX TILDE_BELOW RING_ABOVE LEFT_RIGHT_ARROW_ABOVE TILDE 81 | ``` 82 | 83 | By default, Vim can display 2 diacritics on top of each other. You can raise this limit through the `maxcombine` option. The maximum is 6: 84 | 85 | ```vim 86 | set maxcombine=6 87 | ``` 88 | 89 | You can also activate the `delcombine` option which permits removal of diacritics without deleting the character they are attached to. 90 | 91 | ```vim 92 | set delcombine 93 | ``` 94 | 95 | # Default mappings 96 | 97 | Below are the default mappings. 98 | 99 | ```vim 100 | " Superscript/subscript/circled-white 101 | inoremap :IsotopeInsert SUPERSCRIPT 102 | inoremap :IsotopeInsert SUBSCRIPT 103 | inoremap :IsotopeInsert CIRCLED_WHITE 104 | 105 | inoremap :IsotopeToggle SUPERSCRIPT 106 | inoremap :IsotopeToggle SUBSCRIPT 107 | inoremap :IsotopeToggle CIRCLED_WHITE 108 | 109 | " Underline 110 | vnoremap :IsotopeAttach -below 111 | ``` 112 | 113 | These can be disabled by: 114 | 115 | ```vim 116 | let g:isotope_use_default_mappings = 0 117 | ``` 118 | 119 | # Custom commands 120 | 121 | For readability, it can be useful to define custom shortcut commands like this: 122 | 123 | ```vim 124 | command -range Underline IsotopeAttach -below 125 | command -range Strikethrough IsotopeAttach -center 126 | command -range Slashthrough IsotopeAttach /center 127 | ``` 128 | 129 | # Searching for characters 130 | 131 | To locate characters, you can use the `IsotopeSearch` command: 132 | 133 | ```vim 134 | " Locate all classes of special characters. 135 | :IsotopeSearch 136 | 137 | " Locate specific classes of special characters. 138 | :IsotopeSearch SERIF_BOLD DOUBLE_STRUCK 139 | ``` 140 | 141 | Currently, this command cannot be used to find diacritic characters. PRs are welcome. 142 | 143 | # Character preview 144 | 145 | A list of all special characters and diacritics can be viewed by running this command: 146 | 147 | ``` 148 | :IsotopePreview 149 | ``` 150 | 151 |
List of Special Characters

152 | 153 | Below is a list of all special classes of characters, sorted in alphabetic order. Note that some characters have no conversions from ASCII. Also, GitHub might render some with longer widths. 154 | 155 | ``` 156 | Default ASCII : !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 157 | ------------------------------------------------------------------------------------------------------------------ 158 | ACUTE : Á Ć É Ǵ í ḰĹḾŃŐṔ Ŕś Ű Ẃ ӲŹ á ć é ǵ í ḱĺḿńőṕ ŕś ú ẃ ӳź 159 | CIRCLED_BLACK : 🄌➊➋➌➍➎➏➐➑➒ 🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩 160 | CIRCLED_WHITE : ⊛⊕ ⊖⨀⊘⓪①②③④⑤⑥⑦⑧⑨ ⧀⊜⧁ ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ ⦸ ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ ⦶ 161 | CURSIVE : 𝒜ℬ𝒞𝒟ℰℱ𝒢ℋℐ𝒥𝒦ℒℳ𝒩𝒪𝒫𝒬ℛ𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵 𝒶𝒷𝒸𝒹ℯ𝒻ℊ𝒽𝒾𝒿𝓀𝓁𝓂𝓃ℴ𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏 162 | CURSIVE_BOLD : 𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩 𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃 163 | DOUBLE_STRUCK : 𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡 𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ 𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫 164 | FRAKTUR : 𝔄𝔅ℭ𝔇𝔈𝔉𝔊ℌℑ𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔ℜ𝔖𝔗𝔘𝔙𝔚𝔛𝔜ℨ 𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷 165 | FRAKTUR_BOLD : 𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅 𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟 166 | INVERTED : ¡„ ⅋ ‘ ˙ ؛ ¿ ∀ ϽᗡƎℲƃ ſʞ˥ ԀὉᴚ ⊥∩Λ ʎ ‾ ɐ ɔ ǝɟƃɥıɾʞןɯ ɹ ʇ ʌʍ ʎ 167 | MONOSPACE : 𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿 𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉 𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣 168 | PARENTHESIZED : ⑴⑵⑶⑷⑸⑹⑺⑻⑼ ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ 169 | REVERSED : ߁ ⁏ ⸮ Ↄ Ǝꟻ ⅃ ᴎ ꟼ ᴙꙄ ↄ ɘꟻ ᴎ ᴙꙅ ∽ 170 | ROCK_DOTS : ⸚∵ ӟ ÄḄĊḊЁḞĠḦЇ ḲḶṀṄÖṖ ṚṠṪÜṾẄẌŸŻ äḅċḋëḟġḧï ḳḷṁṅöṗ ṛṡẗüṿẅẍÿż 171 | SANS : 𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫 𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹 𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓 172 | SANS_BOLD : 𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵 𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭 𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇 173 | SANS_BOLD_ITALIC : 𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕 𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯 174 | SANS_ITALIC : 𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡 𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻 175 | SERIF_BOLD : 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗 𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙 𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳 176 | SERIF_BOLD_ITALIC : 𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁 𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛 177 | SERIF_ITALIC : 𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍 𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧 178 | SMALL_CAPS : ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴩ ʀꜱᴛᴜᴠᴡ ᴢ 179 | SQUARED_BLACK : 🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇🆈🆉 180 | SQUARED_WHITE : ⧆⊞ ⊟⊡⧄ 🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉 ⧅ 181 | STROKED : ƻ ȺɃȻĐɆ ǤĦƗɈꝀŁ ØⱣꝖɌ Ŧᵾ ɎƵ Ⱥƀȼđɇ ǥħɨɉꝁł øᵽꝗɍ ŧᵾ ɏƶ 182 | SUBSCRIPT : ₍₎ ₊ ₋ ₀₁₂₃₄₅₆₇₈₉ ₌ ₐ ₑ ₕᵢⱼₖₗₘₙₒₚ ᵣₛₜᵤᵥ ₓ 183 | SUPERSCRIPT : ⁽⁾ ⁺ ⁻ ⁰¹²³⁴⁵⁶⁷⁸⁹ ⁼ ᴬᴮᶜᴰᴱᶠᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾ ᴿˢᵀᵁⱽᵂ ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖ ʳˢᵗᵘᵛʷˣʸᶻ 184 | ``` 185 |

186 |
List of Combining Characters

187 | 188 | Below is a list of all different kinds of diacritics. 189 | 190 | ``` 191 | 1ᷙ2ᷙ3ᷙaᷙbᷙcᷙAᷙBᷙCᷙ = LATIN_SMALL_LETTER_ETH 192 | 193 | 1᷑2᷑3᷑a᷑b᷑c᷑A᷑B᷑C᷑ = UR_ABOVE 194 | 195 | 1͍2͍3͍a͍b͍c͍A͍B͍C͍ = LEFT_RIGHT_ARROW_BELOW [ <->below ] 196 | 197 | 1᷋2᷋3᷋a᷋b᷋c᷋A᷋B᷋C᷋ = BREVE_MACRON 198 | 199 | 1᷌2᷌3᷌a᷌b᷌c᷌A᷌B᷌C᷌ = MACRON_BREVE 200 | 201 | 1︢2︢3︢a︢b︢c︢A︢B︢C︢ = DOUBLE_TILDE_LEFT_HALF 202 | 203 | 1̤2̤3̤a̤b̤c̤A̤B̤C̤ = DIAERESIS_BELOW 204 | 205 | 1̥2̥3̥ḁb̥c̥ḀB̥C̥ = RING_BELOW [ ring-below ] 206 | 207 | 1̋2̋3̋a̋b̋c̋A̋B̋C̋ = DOUBLE_ACCUTE_ACCENT 208 | 209 | 1᷁2᷁3᷁a᷁b᷁c᷁A᷁B᷁C᷁ = DOTTED_ACUTE_ACCENT 210 | 211 | 1᷸2᷸3᷸a᷸b᷸c᷸A᷸B᷸C᷸ = DOT_ABOVE_LEFT 212 | 213 | 1ᷩ2ᷩ3ᷩaᷩbᷩcᷩAᷩBᷩCᷩ = LATIN_SMALL_LETTER_BETA [ β ] 214 | 215 | 1⃢2⃢3⃢a⃢b⃢c⃢A⃢B⃢C⃢ = ENCLOSING_SCREEN 216 | 217 | 1̧2̧3̧a̧b̧çA̧B̧Ç = CEDILLA 218 | 219 | 1̜2̜3̜a̜b̜c̜A̜B̜C̜ = LEFT_HALF_RING_BELOW 220 | 221 | 1̀2̀3̀àb̀c̀ÀB̀C̀ = GRAVE_TONE_MARK 222 | 223 | 1᷐2᷐3᷐a᷐b᷐c᷐A᷐B᷐C᷐ = IS_BELOW 224 | 225 | 1᷀2᷀3᷀a᷀b᷀c᷀A᷀B᷀C᷀ = DOTTED_GRAVE_ACCENT 226 | 227 | 1̿2̿3̿a̿b̿c̿A̿B̿C̿ = DOUBLE_OVERLINE 228 | 229 | 1᷻2᷻3᷻a᷻b᷻c᷻A᷻B᷻C᷻ = DELETION_MARK 230 | 231 | 1᷒2᷒3᷒a᷒b᷒c᷒A᷒B᷒C᷒ = US_ABOVE 232 | 233 | 1᪹2᪹3᪹a᪹b᪹c᪹A᪹B᪹C᪹ = LIGHT_CENTRALIZATION_STROKE_BELOW 234 | 235 | 1́2́3́áb́ćÁB́Ć = ACCUTE_ACCENT 236 | 237 | 1͢2͢3͢a͢b͢c͢A͢B͢C͢ = DOUBLE_RIGHTWARDS_ARROW_BELOW 238 | 239 | 1̱2̱3̱a̱ḇc̱A̱ḆC̱ = MACRON_BELOW 240 | 241 | 1︧2︧3︧a︧b︧c︧A︧B︧C︧ = LIGATURE_LEFT_HALF_BELOW 242 | 243 | 1̨2̨3̨ąb̨c̨ĄB̨C̨ = OGONEK 244 | 245 | 1̈2̈3̈äb̈c̈ÄB̈C̈ = DIAERESIS 246 | 247 | 1᪳2᪳3᪳a᪳b᪳c᪳A᪳B᪳C᪳ = DOWNWARDS_ARROW [ v|above ] 248 | 249 | 1̘2̘3̘a̘b̘c̘A̘B̘C̘ = LEFT_TACK_BELOW 250 | 251 | 1ᷢ2ᷢ3ᷢaᷢbᷢcᷢAᷢBᷢCᷢ = LATIN_LETTER_SMALL_CAPITAL_R [ R ] 252 | 253 | 1⃭2⃭3⃭a⃭b⃭c⃭A⃭B⃭C⃭ = LEFTWARDS_HARPOON_WITH_BARB_DOWNWARDS 254 | 255 | 1̄2̄3̄āb̄c̄ĀB̄C̄ = MACRON 256 | 257 | 1͇2͇3͇a͇b͇c͇A͇B͇C͇ = EQUALS_SIGN_BELOW [ =below ] 258 | 259 | 1᷹2᷹3᷹a᷹b᷹c᷹A᷹B᷹C᷹ = WIDE_INVERTED_BRIDGE_BELOW 260 | 261 | 1᪰2᪰3᪰a᪰b᪰c᪰A᪰B᪰C᪰ = DOUBLED_CIRCUMFLEX_ACCENT 262 | 263 | 1̓2̓3̓a̓b̓c̓A̓B̓C̓ = COMMA_ABOVE 264 | 265 | 1̵2̵3̵a̵b̵c̵A̵B̵C̵ = SHORT_STROKE_OVERLAY 266 | 267 | 1ᷗ2ᷗ3ᷗaᷗbᷗcᷗAᷗBᷗCᷗ = LATIN_SMALL_LETTER_C_CEDILLA 268 | 269 | 1̸2̸3̸a̸b̸c̸A̸B̸C̸ = LONG_SOLIDUS_OVERLAY [ /center ] 270 | 271 | 1̛2̛3̛a̛b̛c̛A̛B̛C̛ = HORN 272 | 273 | 1͗2͗3͗a͗b͗c͗A͗B͗C͗ = RIGHT_HALF_RING_ABOVE 274 | 275 | 1᷊2᷊3᷊a᷊b᷊c᷊A᷊B᷊C᷊ = LATIN_SMALL_LETTER_R_BELOW 276 | 277 | 1⃦2⃦3⃦a⃦b⃦c⃦A⃦B⃦C⃦ = DOUBLE_VERTICAL_STROKE_OVERLAY 278 | 279 | 1̗2̗3̗a̗b̗c̗A̗B̗C̗ = ACUTE_ACCENT_BELOW 280 | 281 | 1᪶2᪶3᪶a᪶b᪶c᪶A᪶B᪶C᪶ = WIGGLY_LINE_BELOW 282 | 283 | 1͘2͘3͘a͘b͘c͘A͘B͘C͘ = DOT_ABOVE_RIGHT 284 | 285 | 1⃬2⃬3⃬a⃬b⃬c⃬A⃬B⃬C⃬ = RIGHTWARDS_HARPOON_WITH_BARB_DOWNWARDS 286 | 287 | 1᷏2᷏3᷏a᷏b᷏c᷏A᷏B᷏C᷏ = ZIGZAG_BELOW [ zbelow ] 288 | 289 | 1̌2̌3̌ǎb̌čǍB̌Č = CARON 290 | 291 | 1⃧2⃧3⃧a⃧b⃧c⃧A⃧B⃧C⃧ = ANNUITY_SYMBOL 292 | 293 | 1̮2̮3̮a̮b̮c̮A̮B̮C̮ = BREVE_BELOW 294 | 295 | 1̙2̙3̙a̙b̙c̙A̙B̙C̙ = RIGHT_TACK_BELOW 296 | 297 | 1⃩2⃩3⃩a⃩b⃩c⃩A⃩B⃩C⃩ = WIDE_BRIDGE_ABOVE 298 | 299 | 1⃑2⃑3⃑a⃑b⃑c⃑A⃑B⃑C⃑ = RIGHT_HARPOON_ABOVE 300 | 301 | 1̷2̷3̷a̷b̷c̷A̷B̷C̷ = SHORT_SOLIDUS_OVERLAY 302 | 303 | 1͡2͡3͡a͡b͡c͡A͡B͡C͡ = DOUBLE_INVERTED_BREVE 304 | 305 | 1⃰2⃰3⃰a⃰b⃰c⃰A⃰B⃰C⃰ = ASTERISK_ABOVE [ *above ] 306 | 307 | 1᪼2᪼3᪼a᪼b᪼c᪼A᪼B᪼C᪼ = DOUBLE_PARENTHESIS_ABOVE 308 | 309 | 1̎2̎3̎a̎b̎c̎A̎B̎C̎ = DOUBLE_VERTICAL_LINE_ABOVE 310 | 311 | 1᷽2᷽3᷽a᷽b᷽c᷽A᷽B᷽C᷽ = ALMOST_EQUAL_TO_BELOW 312 | 313 | 1᪺2᪺3᪺a᪺b᪺c᪺A᪺B᪺C᪺ = STRONG_CENTRALIZATION_STROKE_BELOW 314 | 315 | 1⃠2⃠3⃠a⃠b⃠c⃠A⃠B⃠C⃠ = ENCLOSING_CIRCLE_BACKSLASH 316 | 317 | 1͝2͝3͝a͝b͝c͝A͝B͝C͝ = DOUBLE_BREVE 318 | 319 | 1̣2̣3̣ạḅc̣ẠḄC̣ = DOT_BELOW [ .below ] 320 | 321 | 1̬2̬3̬a̬b̬c̬A̬B̬C̬ = CARON_BELOW [ vbelow ] 322 | 323 | 1⃨2⃨3⃨a⃨b⃨c⃨A⃨B⃨C⃨ = TRIPLE_UNDERDOT [ ...below ] 324 | 325 | 1︬2︬3︬a︬b︬c︬A︬B︬C︬ = MACRON_RIGHT_HALF_BELOW 326 | 327 | 1︩2︩3︩a︩b︩c︩A︩B︩C︩ = TILDE_LEFT_HALF_HELOW 328 | 329 | 1᷷2᷷3᷷a᷷b᷷c᷷A᷷B᷷C᷷ = KAVYKAK_ABOVE_LEFT 330 | 331 | 1̕2̕3̕a̕b̕c̕A̕B̕C̕ = COMMA_ABOVE_RIGHT 332 | 333 | 1︫2︫3︫a︫b︫c︫A︫B︫C︫ = MACRON_LEFT_HALF_BELOW 334 | 335 | 1̐2̐3̐a̐b̐c̐A̐B̐C̐ = CANDRABINDU 336 | 337 | 1ᷛ2ᷛ3ᷛaᷛbᷛcᷛAᷛBᷛCᷛ = LATIN_LETTER_SMALL_CAPITAL_G [ G ] 338 | 339 | 1ᷞ2ᷞ3ᷞaᷞbᷞcᷞAᷞBᷞCᷞ = LATIN_LETTER_SMALL_CAPITAL_L [ L ] 340 | 341 | 1ᷟ2ᷟ3ᷟaᷟbᷟcᷟAᷟBᷟCᷟ = LATIN_LETTER_SMALL_CAPITAL_M [ M ] 342 | 343 | 1ᷡ2ᷡ3ᷡaᷡbᷡcᷡAᷡBᷡCᷡ = LATIN_LETTER_SMALL_CAPITAL_N [ N ] 344 | 345 | 1̚2̚3̚a̚b̚c̚A̚B̚C̚ = LEFT_ANGLE_ABOVE 346 | 347 | 1ͤ2ͤ3ͤaͤbͤcͤAͤBͤCͤ = LATIN_SMALL_LETTER_E [ e ] 348 | 349 | 1̲2̲3̲a̲b̲c̲A̲B̲C̲ = LOW_LINE 350 | 351 | 1ᷚ2ᷚ3ᷚaᷚbᷚcᷚAᷚBᷚCᷚ = LATIN_SMALL_LETTER_G [ g ] 352 | 353 | 1̠2̠3̠a̠b̠c̠A̠B̠C̠ = MINUS_SIGN_BELOW 354 | 355 | 1︣2︣3︣a︣b︣c︣A︣B︣C︣ = DOUBLE_TILDE_RIGHT_HALF 356 | 357 | 1⃓2⃓3⃓a⃓b⃓c⃓A⃓B⃓C⃓ = SHORT_VERTICAL_LINE_OVERLAY 358 | 359 | 1͕2͕3͕a͕b͕c͕A͕B͕C͕ = RIGHT_ARROWHEAD_BELOW 360 | 361 | 1᷵2᷵3᷵a᷵b᷵c᷵A᷵B᷵C᷵ = UP_TACK_ABOVE 362 | 363 | 1ͣ2ͣ3ͣaͣbͣcͣAͣBͣCͣ = LATIN_SMALL_LETTER_A [ a ] 364 | 365 | 1ᷨ2ᷨ3ᷨaᷨbᷨcᷨAᷨBᷨCᷨ = LATIN_SMALL_LETTER_B [ b ] 366 | 367 | 1̉2̉3̉ảb̉c̉ẢB̉C̉ = HOOK_ABOVE 368 | 369 | 1᪴2᪴3᪴a᪴b᪴c᪴A᪴B᪴C᪴ = TRIPLE_DOT 370 | 371 | 1⃝2⃝3⃝a⃝b⃝c⃝A⃝B⃝C⃝ = ENCLOSING_CIRCLE [ circle ] 372 | 373 | 1ᷫ2ᷫ3ᷫaᷫbᷫcᷫAᷫBᷫCᷫ = LATIN_SMALL_LETTER_F [ f ] 374 | 375 | 1͆2͆3͆a͆b͆c͆A͆B͆C͆ = BRIDGE_ABOVE 376 | 377 | 1ͪ2ͪ3ͪaͪbͪcͪAͪBͪCͪ = LATIN_SMALL_LETTER_H [ h ] 378 | 379 | 1ͥ2ͥ3ͥaͥbͥcͥAͥBͥCͥ = LATIN_SMALL_LETTER_I [ i ] 380 | 381 | 1ᷜ2ᷜ3ᷜaᷜbᷜcᷜAᷜBᷜCᷜ = LATIN_SMALL_LETTER_K [ k ] 382 | 383 | 1ᷝ2ᷝ3ᷝaᷝbᷝcᷝAᷝBᷝCᷝ = LATIN_SMALL_LETTER_L [ l ] 384 | 385 | 1ͫ2ͫ3ͫaͫbͫcͫAͫBͫCͫ = LATIN_SMALL_LETTER_M [ m ] 386 | 387 | 1ᷠ2ᷠ3ᷠaᷠbᷠcᷠAᷠBᷠCᷠ = LATIN_SMALL_LETTER_N [ n ] 388 | 389 | 1ͦ2ͦ3ͦaͦbͦcͦAͦBͦCͦ = LATIN_SMALL_LETTER_O [ o ] 390 | 391 | 1ᷮ2ᷮ3ᷮaᷮbᷮcᷮAᷮBᷮCᷮ = LATIN_SMALL_LETTER_P [ p ] 392 | 393 | 1᷉2᷉3᷉a᷉b᷉c᷉A᷉B᷉C᷉ = ACUTE_GRAVE_ACUTE 394 | 395 | 1ͬ2ͬ3ͬaͬbͬcͬAͬBͬCͬ = LATIN_SMALL_LETTER_R [ r ] 396 | 397 | 1ᷤ2ᷤ3ᷤaᷤbᷤcᷤAᷤBᷤCᷤ = LATIN_SMALL_LETTER_S [ s ] 398 | 399 | 1ͭ2ͭ3ͭaͭbͭcͭAͭBͭCͭ = LATIN_SMALL_LETTER_T [ t ] 400 | 401 | 1ͧ2ͧ3ͧaͧbͧcͧAͧBͧCͧ = LATIN_SMALL_LETTER_U [ u ] 402 | 403 | 1ͮ2ͮ3ͮaͮbͮcͮAͮBͮCͮ = LATIN_SMALL_LETTER_V [ v ] 404 | 405 | 1ᷱ2ᷱ3ᷱaᷱbᷱcᷱAᷱBᷱCᷱ = LATIN_SMALL_LETTER_W [ w ] 406 | 407 | 1ͯ2ͯ3ͯaͯbͯcͯAͯBͯCͯ = LATIN_SMALL_LETTER_X [ x ] 408 | 409 | 1ᷦ2ᷦ3ᷦaᷦbᷦcᷦAᷦBᷦCᷦ = LATIN_SMALL_LETTER_Z [ z ] 410 | 411 | 1︨2︨3︨a︨b︨c︨A︨B︨C︨ = LIGATURE_RIGHT_HALF_BELOW 412 | 413 | 1᷿2᷿3᷿a᷿b᷿c᷿A᷿B᷿C᷿ = RIGHT_ARROWHEAD_AND_DOWN_ARROWHEAD_BELOW 414 | 415 | 1ᷔ2ᷔ3ᷔaᷔbᷔcᷔAᷔBᷔCᷔ = LATIN_SMALL_LETTER_AE 416 | 417 | 1ᷧ2ᷧ3ᷧaᷧbᷧcᷧAᷧBᷧCᷧ = LATIN_SMALL_LETTER_ALPHA [ α ] 418 | 419 | 1⃖2⃖3⃖a⃖b⃖c⃖A⃖B⃖C⃖ = LEFT_ARROW_ABOVE [ <-above ] 420 | 421 | 1̽2̽3̽a̽b̽c̽A̽B̽C̽ = X_ABOVE [ xabove ] 422 | 423 | 1ᷕ2ᷕ3ᷕaᷕbᷕcᷕAᷕBᷕCᷕ = LATIN_SMALL_LETTER_AO 424 | 425 | 1᪵2᪵3᪵a᪵b᪵c᪵A᪵B᪵C᪵ = XX_BELOW 426 | 427 | 1᷄2᷄3᷄a᷄b᷄c᷄A᷄B᷄C᷄ = MACRON_ACUTE 428 | 429 | 1̞2̞3̞a̞b̞c̞A̞B̞C̞ = DOWN_TACK_BELOW 430 | 431 | 1ᷖ2ᷖ3ᷖaᷖbᷖcᷖAᷖBᷖCᷖ = LATIN_SMALL_LETTER_AV 432 | 433 | 1̫2̫3̫a̫b̫c̫A̫B̫C̫ = INVERTED_DOUBLE_ARCH_BELOW 434 | 435 | 1ͅ2ͅ3ͅaͅbͅcͅAͅBͅCͅ = GREEK_YPOGEGRAMMENI 436 | 437 | 1ᷰ2ᷰ3ᷰaᷰbᷰcᷰAᷰBᷰCᷰ = LATIN_SMALL_LETTER_U_WITH_LIGHT_CENTRALIZATION_STROKE 438 | 439 | 1⃪2⃪3⃪a⃪b⃪c⃪A⃪B⃪C⃪ = LEFTWARDS_ARROW_OVERLAY [ <-center ] 440 | 441 | 1᷍2᷍3᷍a᷍b᷍c᷍A᷍B᷍C᷍ = DOUBLE_CIRCUMFLEX_ABOVE 442 | 443 | 1ᷥ2ᷥ3ᷥaᷥbᷥcᷥAᷥBᷥCᷥ = LATIN_SMALL_LETTER_LONG_S 444 | 445 | 1᷼2᷼3᷼a᷼b᷼c᷼A᷼B᷼C᷼ = DOUBLE_INVERTED_BREVE_BELOW 446 | 447 | 1̼2̼3̼a̼b̼c̼A̼B̼C̼ = SEAGULL_BELOW 448 | 449 | 1᷶2᷶3᷶a᷶b᷶c᷶A᷶B᷶C᷶ = KAVYKA_ABOVE_RIGHT 450 | 451 | 1᷾2᷾3᷾a᷾b᷾c᷾A᷾B᷾C᷾ = LEFT_ARROWHEAD_ABOVE 452 | 453 | 1᪷2᪷3᪷a᪷b᪷c᪷A᪷B᪷C᪷ = OPEN_MARK_BELOW 454 | 455 | 1︤2︤3︤a︤b︤c︤A︤B︤C︤ = MACRON_LEFT_HALF 456 | 457 | 1᪻2᪻3᪻a᪻b᪻c᪻A᪻B᪻C᪻ = PARENTHESIS_ABOVE [ ()above ] 458 | 459 | 1̴2̴3̴a̴b̴c̴A̴B̴C̴ = TILDE_OVERLAY [ ~center ] 460 | 461 | 1ᷣ2ᷣ3ᷣaᷣbᷣcᷣAᷣBᷣCᷣ = LATIN_SMALL_LETTER_R_ROTUNDA 462 | 463 | 1︯2︯3︯a︯b︯c︯A︯B︯C︯ = CYRILLIC_TITLO_RIGHT_HALF 464 | 465 | 1᷎2᷎3᷎a᷎b᷎c᷎A᷎B᷎C᷎ = OGONEK_ABOVE 466 | 467 | 1͜2͜3͜a͜b͜c͜A͜B͜C͜ = DOUBLE_BREVE_BELOW 468 | 469 | 1⃐2⃐3⃐a⃐b⃐c⃐A⃐B⃐C⃐ = LEFT_HARPOON_ABOVE 470 | 471 | 1᷂2᷂3᷂a᷂b᷂c᷂A᷂B᷂C᷂ = SNAKE_BELOW 472 | 473 | 1̩2̩3̩a̩b̩c̩A̩B̩C̩ = VERTICAL_LINE_BELOW [ |below ] 474 | 475 | 1̆2̆3̆ăb̆c̆ĂB̆C̆ = BREVE 476 | 477 | 1᪸2᪸3᪸a᪸b᪸c᪸A᪸B᪸C᪸ = DOUBLE_OPEN_MARK_BELOW 478 | 479 | 1︮2︮3︮a︮b︮c︮A︮B︮C︮ = CYRILLIC_TITLO_LEFT_HALF 480 | 481 | 1⃙2⃙3⃙a⃙b⃙c⃙A⃙B⃙C⃙ = CLOCKWISE_RING_OVERLAY 482 | 483 | 1⃗2⃗3⃗a⃗b⃗c⃗A⃗B⃗C⃗ = RIGHT_ARROW_ABOVE [ ->above ] 484 | 485 | 1̦2̦3̦a̦b̦c̦A̦B̦C̦ = COMMA_BELOW 486 | 487 | 1ᷭ2ᷭ3ᷭaᷭbᷭcᷭAᷭBᷭCᷭ = LATIN_SMALL_LETTER_O_WITH_LIGHT_CENTRALIZATION_STROKE 488 | 489 | 1⃛2⃛3⃛a⃛b⃛c⃛A⃛B⃛C⃛ = THREE_DOTS_ABOVE [ ...above ] 490 | 491 | 1͉2͉3͉a͉b͉c͉A͉B͉C͉ = LEFT_ANGLE_BELOW 492 | 493 | 1̡2̡3̡a̡b̡c̡A̡B̡C̡ = PALATIZED_HOOK_BELOW 494 | 495 | 1̹2̹3̹a̹b̹c̹A̹B̹C̹ = RIGHT_HALF_RING_BELOW 496 | 497 | 1᪾2᪾3᪾a᪾b᪾c᪾A᪾B᪾C᪾ = PARENTHESES_OVERLAY [ ()center ] 498 | 499 | 1᪲2᪲3᪲a᪲b᪲c᪲A᪲B᪲C᪲ = INFINITY 500 | 501 | 1̑2̑3̑ȃb̑c̑ȂB̑C̑ = INVERTED_BREVE 502 | 503 | 1︥2︥3︥a︥b︥c︥A︥B︥C︥ = MACRON_RIGHT_HALF 504 | 505 | 1͠2͠3͠a͠b͠c͠A͠B͠C͠ = DOUBLE_TILDE 506 | 507 | 1ᷳ2ᷳ3ᷳaᷳbᷳcᷳAᷳBᷳCᷳ = LATIN_SMALL_LETTER_O_WITH_DIAERESIS 508 | 509 | 1᷇2᷇3᷇a᷇b᷇c᷇A᷇B᷇C᷇ = MACRON_GRAVE 510 | 511 | 1ᷬ2ᷬ3ᷬaᷬbᷬcᷬAᷬBᷬCᷬ = LATIN_SMALL_LETTER_L_WITH_DOUBLE_MIDDLE_TILDE 512 | 513 | 1̢2̢3̢a̢b̢c̢A̢B̢C̢ = RETROFLEX_HOOK_BELOW 514 | 515 | 1⃣2⃣3⃣a⃣b⃣c⃣A⃣B⃣C⃣ = ENCLOSING_KEYCAP [ keycap ] 516 | 517 | 1̏2̏3̏ȁb̏c̏ȀB̏C̏ = DOUBLE_GRAVE_ACCENT 518 | 519 | 1͊2͊3͊a͊b͊c͊A͊B͊C͊ = NOT_TILDE_ABOVE 520 | 521 | 1⃡2⃡3⃡a⃡b⃡c⃡A⃡B⃡C⃡ = LEFT_RIGHT_ARROW_ABOVE [ <->above ] 522 | 523 | 1︠2︠3︠a︠b︠c︠A︠B︠C︠ = LIGATURE_LEFT_HALF 524 | 525 | 1᷃2᷃3᷃a᷃b᷃c᷃A᷃B᷃C᷃ = SUSPENSION_MARK 526 | 527 | 1̊2̊3̊åb̊c̊ÅB̊C̊ = RING_ABOVE [ ring-above ] 528 | 529 | 1̻2̻3̻a̻b̻c̻A̻B̻C̻ = SQUARE_BELOW 530 | 531 | 1̳2̳3̳a̳b̳c̳A̳B̳C̳ = DOUBLE_LOW_LINE [ --below ] 532 | 533 | 1͙2͙3͙a͙b͙c͙A͙B͙C͙ = ASTERISK_BELOW [ *below ] 534 | 535 | 1͈2͈3͈a͈b͈c͈A͈B͈C͈ = DOUBLE_VERTICAL_LINE_BELOW 536 | 537 | 1̶2̶3̶a̶b̶c̶A̶B̶C̶ = LONG_STROKE_OVERLAY [ -center ] 538 | 539 | 1͑2͑3͑a͑b͑c͑A͑B͑C͑ = LEFT_HALF_RING_ABOVE 540 | 541 | 1⃒2⃒3⃒a⃒b⃒c⃒A⃒B⃒C⃒ = LONG_VERTICAL_LINE_OVERLAY [ |center ] 542 | 543 | 1⃜2⃜3⃜a⃜b⃜c⃜A⃜B⃜C⃜ = FOUR_DOTS_ABOVE 544 | 545 | 1︪2︪3︪a︪b︪c︪A︪B︪C︪ = TILDE_RIGHT_HALF_BELOW 546 | 547 | 1̒2̒3̒a̒b̒c̒A̒B̒C̒ = TURNED_COMMA_ABOVE 548 | 549 | 1ᷴ2ᷴ3ᷴaᷴbᷴcᷴAᷴBᷴCᷴ = LATIN_SMALL_LETTER_U_WITH_DIAERESIS 550 | 551 | 1︦2︦3︦a︦b︦c︦A︦B︦C︦ = CONJOINING_MACRON 552 | 553 | 1́2́3́áb́ćÁB́Ć = ACUTE_TONE_MARK 554 | 555 | 1᷇2᷇3᷇a᷇b᷇c᷇A᷇B᷇C᷇ = ACUTE_MACRON 556 | 557 | 1̖2̖3̖a̖b̖c̖A̖B̖C̖ = GRAVE_ACCENT_BELOW 558 | 559 | 1⃚2⃚3⃚a⃚b⃚c⃚A⃚B⃚C⃚ = ANTICLOCKWISE_RING_OVERLAY 560 | 561 | 1⃔2⃔3⃔a⃔b⃔c⃔A⃔B⃔C⃔ = ANTICLOCKWISE_ARROW_ABOVE 562 | 563 | 1̟2̟3̟a̟b̟c̟A̟B̟C̟ = PLUS_SIGN_BELOW [ +below ] 564 | 565 | 1⃞2⃞3⃞a⃞b⃞c⃞A⃞B⃞C⃞ = ENCLOSING_SQUARE [ square ] 566 | 567 | 1ͨ2ͨ3ͨaͨbͨcͨAͨBͨCͨ = LATIN_SMALL_LETTER_C [ c ] 568 | 569 | 1᷆2᷆3᷆a᷆b᷆c᷆A᷆B᷆C᷆ = GRAVE_MACRON 570 | 571 | 1̔2̔3̔a̔b̔c̔A̔B̔C̔ = REVERSED_COMMA_ABOVE 572 | 573 | 1̍2̍3̍a̍b̍c̍A̍B̍C̍ = VERTICAL_LINE_ABOVE [ |above ] 574 | 575 | 1ͩ2ͩ3ͩaͩbͩcͩAͩBͩCͩ = LATIN_SMALL_LETTER_D [ d ] 576 | 577 | 1ᷪ2ᷪ3ᷪaᷪbᷪcᷪAᷪBᷪCᷪ = LATIN_SMALL_LETTER_SCHWA 578 | 579 | 1̝2̝3̝a̝b̝c̝A̝B̝C̝ = UP_TACK_BELOW 580 | 581 | 1⃫2⃫3⃫a⃫b⃫c⃫A⃫B⃫C⃫ = LONG_DOUBLE_SOLIDUS_OVERLAY [ //center ] 582 | 583 | 1̪2̪3̪a̪b̪c̪A̪B̪C̪ = BRIDGE_BELOW 584 | 585 | 1͋2͋3͋a͋b͋c͋A͋B͋C͋ = HOMOTHETIC_ABOVE 586 | 587 | 1̅2̅3̅a̅b̅c̅A̅B̅C̅ = OVERLINE 588 | 589 | 1︭2︭3︭a︭b︭c︭A︭B︭C︭ = CONJOINING_MACRON_BELOW 590 | 591 | 1⃮2⃮3⃮a⃮b⃮c⃮A⃮B⃮C⃮ = LEFT_ARROW_BELOW [ <-below ] 592 | 593 | 1͓2͓3͓a͓b͓c͓A͓B͓C͓ = X_BELOW [ xbelow ] 594 | 595 | 1᷈2᷈3᷈a᷈b᷈c᷈A᷈B᷈C᷈ = GRAVE_ACUTE_GRAVE 596 | 597 | 1̾2̾3̾a̾b̾c̾A̾B̾C̾ = VERTICAL_TILDE 598 | 599 | 1⃕2⃕3⃕a⃕b⃕c⃕A⃕B⃕C⃕ = CLOCKWISE_ARROW_ABOVE 600 | 601 | 1͛2͛3͛a͛b͛c͛A͛B͛C͛ = ZIGZAG_ABOVE [ zabove ] 602 | 603 | 1̃2̃3̃ãb̃c̃ÃB̃C̃ = TILDE [ ~above ] 604 | 605 | 1͟2͟3͟a͟b͟c͟A͟B͟C͟ = DOUBLE_MACRON_BELOW [ -below ] 606 | 607 | 1̈́2̈́3̈́ä́b̈́c̈́Ä́B̈́C̈́ = GREEK_DIALYTIKA_TONOS 608 | 609 | 1͔2͔3͔a͔b͔c͔A͔B͔C͔ = LEFT_ARROWHEAD_BELOW 610 | 611 | 1̀2̀3̀àb̀c̀ÀB̀C̀ = GRAVE_ACCENT 612 | 613 | 1̭2̭3̭a̭b̭c̭A̭B̭C̭ = CIRCUMFLEX_ACCENT_BELOW [ ^below ] 614 | 615 | 1᪽2᪽3᪽a᪽b᪽c᪽A᪽B᪽C᪽ = PARENTHESIS_BELOW [ ()below ] 616 | 617 | 1ᷘ2ᷘ3ᷘaᷘbᷘcᷘAᷘBᷘCᷘ = LATIN_SMALL_LETTER_INSULAR_D 618 | 619 | 1︡2︡3︡a︡b︡c︡A︡B︡C︡ = LIGATURE_RIGHT_HALF 620 | 621 | 1͞2͞3͞a͞b͞c͞A͞B͞C͞ = DOUBLE_MACRON [ -above ] 622 | 623 | 1͒2͒3͒a͒b͒c͒A͒B͒C͒ = FERMATA 624 | 625 | 1⃘2⃘3⃘a⃘b⃘c⃘A⃘B⃘C⃘ = RING_OVERLAY [ ring-center ] 626 | 627 | 1̯2̯3̯a̯b̯c̯A̯B̯C̯ = INVERTED_BREVE_BELOW 628 | 629 | 1͖2͖3͖a͖b͖c͖A͖B͖C͖ = RIGHT_ARROWHEAD_AND_UP_ARROWHEAD_BELOW 630 | 631 | 1͌2͌3͌a͌b͌c͌A͌B͌C͌ = ALMOST_EQUAL_TO_ABOVE 632 | 633 | 1᪱2᪱3᪱a᪱b᪱c᪱A᪱B᪱C᪱ = DIAERESIS_RING 634 | 635 | 1̇2̇3̇ȧḃċȦḂĊ = DOT_ABOVE [ .above ] 636 | 637 | 1͂2͂3͂a͂b͂c͂A͂B͂C͂ = GREEK_PERSIPOMENI 638 | 639 | 1͎2͎3͎a͎b͎c͎A͎B͎C͎ = UPWARDS_ARROW_BELOW [ ^|below ] 640 | 641 | 1ᷯ2ᷯ3ᷯaᷯbᷯcᷯAᷯBᷯCᷯ = LATIN_SMALL_LETTER_ESH 642 | 643 | 1ᷲ2ᷲ3ᷲaᷲbᷲcᷲAᷲBᷲCᷲ = LATIN_SMALL_LETTER_A_WITH_DIAERESIS 644 | 645 | 1̓2̓3̓a̓b̓c̓A̓B̓C̓ = GREEK_KORONIS 646 | 647 | 1⃟2⃟3⃟a⃟b⃟c⃟A⃟B⃟C⃟ = ENCLOSING_DIAMOND [ diamond ] 648 | 649 | 1⃯2⃯3⃯a⃯b⃯c⃯A⃯B⃯C⃯ = RIGHT_ARROW_BELOW [ ->below ] 650 | 651 | 1̺2̺3̺a̺b̺c̺A̺B̺C̺ = INVERTED_BRIDGE_BELOW 652 | 653 | 1⃤2⃤3⃤a⃤b⃤c⃤A⃤B⃤C⃤ = ENCLOSING_UPWARD_POINTING_TRIANGLE [ triangle ] 654 | 655 | 1ᷓ2ᷓ3ᷓaᷓbᷓcᷓAᷓBᷓCᷓ = LATIN_SMALL_LETTER_FLATTENED_OPEN_A_ABOVE 656 | 657 | 1͐2͐3͐a͐b͐c͐A͐B͐C͐ = RIGHT_ARROWHEAD_ABOVE 658 | 659 | 1̂2̂3̂âb̂ĉÂB̂Ĉ = CIRCUMFLEX [ ^above ] 660 | 661 | 1⃥2⃥3⃥a⃥b⃥c⃥A⃥B⃥C⃥ = REVERSE_SOLIDUS_OVERLAY [ \center ] 662 | 663 | 1͚2͚3͚a͚b͚c͚A͚B͚C͚ = DOUBLE_RING_BELOW 664 | 665 | 1̰2̰3̰a̰b̰c̰A̰B̰C̰ = TILDE_BELOW [ ~below ] 666 | 667 | 1͏2͏3͏a͏b͏c͏A͏B͏C͏ = GRAPHEME_JOINER 668 | ``` 669 |

670 | -------------------------------------------------------------------------------- /autoload/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/segeljakt/vim-isotope/701461abc38cfdaec241a0c6329681064689bd52/autoload/.DS_Store -------------------------------------------------------------------------------- /autoload/isotope.vim: -------------------------------------------------------------------------------- 1 | " vim: et sw=2 sts=2 2 | 3 | " Plugin: https://github.com/segeljakt/vim-isotope 4 | " Description: Insert special characters with ease. 5 | " Maintainer: Klas Segeljakt 6 | 7 | if exists("s:autoloaded") | finish | el | let s:autoloaded = 1 | en 8 | 9 | fun! isotope#preview() 10 | echohl Normal 11 | 12 | echom repeat('=', winwidth(0)) 13 | 14 | call isotope#charset#preview() 15 | 16 | echom repeat('=', winwidth(0)) 17 | 18 | call isotope#diacritic#preview() 19 | 20 | echom repeat('=', winwidth(0)) 21 | 22 | echohl None 23 | endfun 24 | -------------------------------------------------------------------------------- /autoload/isotope/charset.vim: -------------------------------------------------------------------------------- 1 | " vim: et sw=2 sts=2 2 | 3 | " Plugin: https://github.com/segeljakt/vim-isotope 4 | " Description: Insert special characters with ease. 5 | " Maintainer: Klas Segeljakt 6 | " Resources: 7 | " https://yaytext.com 8 | " http://qaz.wtf/u/convert.cgi 9 | 10 | if exists('s:autoloaded') | finish | el | let s:autoloaded = 1 | en 11 | 12 | fun! s:convert(char, kind) 13 | let nr = char2nr(a:char) 14 | if s:lo <= nr && nr <= s:hi " Only convert characters between ! and ~ 15 | let idx = nr - s:lo 16 | let newchar = nr2char(strgetchar(s:charset[a:kind], idx)) 17 | if newchar != s:undefined 18 | return newchar 19 | en 20 | en 21 | return a:char 22 | endfun 23 | 24 | fun! isotope#charset#complete(ArgLead, CmdLine, CursorPos) 25 | return filter(copy(s:keys), 'v:val =~ "^'.a:ArgLead.'"') 26 | endfun 27 | 28 | fun! isotope#charset#toggle(...) 29 | let kind = get(a:000, 0, '') 30 | if kind == '' || s:active == kind 31 | silent! au! IsotopeToggle 32 | silent! aug! IsotopeToggle 33 | echo 'Isotope: Toggled OFF' 34 | let s:active = '' 35 | el 36 | echo 'Isotope: Toggled ON ['.kind.']' 37 | aug IsotopeToggle | au! 38 | exe 'au InsertCharPre * let v:char = s:convert(v:char,"'.kind.'")' 39 | aug END 40 | let s:active = kind 41 | en 42 | return '' 43 | endfun 44 | 45 | fun! isotope#charset#insert(kind) 46 | aug IsotopeInsert | au! 47 | echo 'Isotope: Waiting for insert... ['.a:kind.']' 48 | exe 'au InsertCharPre * let v:char = s:convert(v:char,"'.a:kind.'")' 49 | \ .'| echo ' 50 | \ .'| exe "au! IsotopeInsert"' 51 | \ .'| aug! IsotopeInsert' 52 | aug END 53 | return '' 54 | endfun 55 | 56 | fun! isotope#charset#search(...) 57 | if a:0 == 0 58 | let chars = values(s:charset) 59 | el 60 | let chars = map(copy(a:000), {_, kind -> s:charset[kind]}) 61 | en 62 | let pattern = '['.substitute(join(chars, ''), ' ', '', 'g').']' 63 | silent! exe 'normal! /'.pattern.'\+ ' 64 | let @/ = pattern 65 | endfun 66 | 67 | fun! isotope#charset#preview(...) 68 | echom s:ascii 69 | echom repeat('-', winwidth(0)) 70 | for [key, val] in items(s:charset) 71 | echom val.' = '.key 72 | endfor 73 | endfun 74 | 75 | let s:ascii = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" 76 | let s:charset = { 77 | \ 'ACUTE' : ' Á Ć É Ǵ í ḰĹḾŃŐṔ Ŕś Ű Ẃ ӲŹ á ć é ǵ í ḱĺḿńőṕ ŕś ú ẃ ӳź ', 78 | \ 'CIRCLED_BLACK' : ' 🄌➊➋➌➍➎➏➐➑➒ 🅐🅑🅒🅓🅔🅕🅖🅗🅘🅙🅚🅛🅜🅝🅞🅟🅠🅡🅢🅣🅤🅥🅦🅧🅨🅩 ', 79 | \ 'CIRCLED_WHITE' : ' ⊛⊕ ⊖⨀⊘⓪①②③④⑤⑥⑦⑧⑨ ⧀⊜⧁ ⒶⒷⒸⒹⒺⒻⒼⒽⒾⒿⓀⓁⓂⓃⓄⓅⓆⓇⓈⓉⓊⓋⓌⓍⓎⓏ ⦸ ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ ⦶ ', 80 | \ 'CURSIVE' : ' 𝒜ℬ𝒞𝒟ℰℱ𝒢ℋℐ𝒥𝒦ℒℳ𝒩𝒪𝒫𝒬ℛ𝒮𝒯𝒰𝒱𝒲𝒳𝒴𝒵 𝒶𝒷𝒸𝒹ℯ𝒻ℊ𝒽𝒾𝒿𝓀𝓁𝓂𝓃ℴ𝓅𝓆𝓇𝓈𝓉𝓊𝓋𝓌𝓍𝓎𝓏 ', 81 | \ 'CURSIVE_BOLD' : ' 𝓐𝓑𝓒𝓓𝓔𝓕𝓖𝓗𝓘𝓙𝓚𝓛𝓜𝓝𝓞𝓟𝓠𝓡𝓢𝓣𝓤𝓥𝓦𝓧𝓨𝓩 𝓪𝓫𝓬𝓭𝓮𝓯𝓰𝓱𝓲𝓳𝓴𝓵𝓶𝓷𝓸𝓹𝓺𝓻𝓼𝓽𝓾𝓿𝔀𝔁𝔂𝔃 ', 82 | \ 'DOUBLE_STRUCK' : ' 𝟘𝟙𝟚𝟛𝟜𝟝𝟞𝟟𝟠𝟡 𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ 𝕒𝕓𝕔𝕕𝕖𝕗𝕘𝕙𝕚𝕛𝕜𝕝𝕞𝕟𝕠𝕡𝕢𝕣𝕤𝕥𝕦𝕧𝕨𝕩𝕪𝕫 ', 83 | \ 'FRAKTUR' : ' 𝔄𝔅ℭ𝔇𝔈𝔉𝔊ℌℑ𝔍𝔎𝔏𝔐𝔑𝔒𝔓𝔔ℜ𝔖𝔗𝔘𝔙𝔚𝔛𝔜ℨ 𝔞𝔟𝔠𝔡𝔢𝔣𝔤𝔥𝔦𝔧𝔨𝔩𝔪𝔫𝔬𝔭𝔮𝔯𝔰𝔱𝔲𝔳𝔴𝔵𝔶𝔷 ', 84 | \ 'FRAKTUR_BOLD' : ' 𝕬𝕭𝕮𝕯𝕰𝕱𝕲𝕳𝕴𝕵𝕶𝕷𝕸𝕹𝕺𝕻𝕼𝕽𝕾𝕿𝖀𝖁𝖂𝖃𝖄𝖅 𝖆𝖇𝖈𝖉𝖊𝖋𝖌𝖍𝖎𝖏𝖐𝖑𝖒𝖓𝖔𝖕𝖖𝖗𝖘𝖙𝖚𝖛𝖜𝖝𝖞𝖟 ', 85 | \ 'INVERTED' : '¡„ ⅋ ‘ ˙ ؛ ¿ ∀ ϽᗡƎℲƃ ſʞ˥ ԀὉᴚ ⊥∩Λ ʎ ‾ ɐ ɔ ǝɟƃɥıɾʞןɯ ɹ ʇ ʌʍ ʎ ', 86 | \ 'MONOSPACE' : ' 𝟶𝟷𝟸𝟹𝟺𝟻𝟼𝟽𝟾𝟿 𝙰𝙱𝙲𝙳𝙴𝙵𝙶𝙷𝙸𝙹𝙺𝙻𝙼𝙽𝙾𝙿𝚀𝚁𝚂𝚃𝚄𝚅𝚆𝚇𝚈𝚉 𝚊𝚋𝚌𝚍𝚎𝚏𝚐𝚑𝚒𝚓𝚔𝚕𝚖𝚗𝚘𝚙𝚚𝚛𝚜𝚝𝚞𝚟𝚠𝚡𝚢𝚣 ', 87 | \ 'PARENTHESIZED' : ' ⑴⑵⑶⑷⑸⑹⑺⑻⑼ ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ ⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵ ', 88 | \ 'REVERSED' : ' ߁ ⁏ ⸮ Ↄ Ǝꟻ ⅃ ᴎ ꟼ ᴙꙄ ↄ ɘꟻ ᴎ ᴙꙅ ∽', 89 | \ 'ROCK_DOTS' : ' ⸚∵ ӟ ÄḄĊḊЁḞĠḦЇ ḲḶṀṄÖṖ ṚṠṪÜṾẄẌŸŻ äḅċḋëḟġḧï ḳḷṁṅöṗ ṛṡẗüṿẅẍÿż ', 90 | \ 'SANS' : ' 𝟢𝟣𝟤𝟥𝟦𝟧𝟨𝟩𝟪𝟫 𝖠𝖡𝖢𝖣𝖤𝖥𝖦𝖧𝖨𝖩𝖪𝖫𝖬𝖭𝖮𝖯𝖰𝖱𝖲𝖳𝖴𝖵𝖶𝖷𝖸𝖹 𝖺𝖻𝖼𝖽𝖾𝖿𝗀𝗁𝗂𝗃𝗄𝗅𝗆𝗇𝗈𝗉𝗊𝗋𝗌𝗍𝗎𝗏𝗐𝗑𝗒𝗓 ', 91 | \ 'SANS_BOLD' : ' 𝟬𝟭𝟮𝟯𝟰𝟱𝟲𝟳𝟴𝟵 𝗔𝗕𝗖𝗗𝗘𝗙𝗚𝗛𝗜𝗝𝗞𝗟𝗠𝗡𝗢𝗣𝗤𝗥𝗦𝗧𝗨𝗩𝗪𝗫𝗬𝗭 𝗮𝗯𝗰𝗱𝗲𝗳𝗴𝗵𝗶𝗷𝗸𝗹𝗺𝗻𝗼𝗽𝗾𝗿𝘀𝘁𝘂𝘃𝘄𝘅𝘆𝘇 ', 92 | \ 'SANS_BOLD_ITALIC' : ' 𝘼𝘽𝘾𝘿𝙀𝙁𝙂𝙃𝙄𝙅𝙆𝙇𝙈𝙉𝙊𝙋𝙌𝙍𝙎𝙏𝙐𝙑𝙒𝙓𝙔𝙕 𝙖𝙗𝙘𝙙𝙚𝙛𝙜𝙝𝙞𝙟𝙠𝙡𝙢𝙣𝙤𝙥𝙦𝙧𝙨𝙩𝙪𝙫𝙬𝙭𝙮𝙯 ', 93 | \ 'SANS_ITALIC' : ' 𝘈𝘉𝘊𝘋𝘌𝘍𝘎𝘏𝘐𝘑𝘒𝘓𝘔𝘕𝘖𝘗𝘘𝘙𝘚𝘛𝘜𝘝𝘞𝘟𝘠𝘡 𝘢𝘣𝘤𝘥𝘦𝘧𝘨𝘩𝘪𝘫𝘬𝘭𝘮𝘯𝘰𝘱𝘲𝘳𝘴𝘵𝘶𝘷𝘸𝘹𝘺𝘻 ', 94 | \ 'SERIF_BOLD' : ' 𝟎𝟏𝟐𝟑𝟒𝟓𝟔𝟕𝟖𝟗 𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙 𝐚𝐛𝐜𝐝𝐞𝐟𝐠𝐡𝐢𝐣𝐤𝐥𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐭𝐮𝐯𝐰𝐱𝐲𝐳 ', 95 | \ 'SERIF_BOLD_ITALIC' : ' 𝑨𝑩𝑪𝑫𝑬𝑭𝑮𝑯𝑰𝑱𝑲𝑳𝑴𝑵𝑶𝑷𝑸𝑹𝑺𝑻𝑼𝑽𝑾𝑿𝒀𝒁 𝒂𝒃𝒄𝒅𝒆𝒇𝒈𝒉𝒊𝒋𝒌𝒍𝒎𝒏𝒐𝒑𝒒𝒓𝒔𝒕𝒖𝒗𝒘𝒙𝒚𝒛 ', 96 | \ 'SERIF_ITALIC' : ' 𝐴𝐵𝐶𝐷𝐸𝐹𝐺𝐻𝐼𝐽𝐾𝐿𝑀𝑁𝑂𝑃𝑄𝑅𝑆𝑇𝑈𝑉𝑊𝑋𝑌𝑍 𝑎𝑏𝑐𝑑𝑒𝑓𝑔ℎ𝑖𝑗𝑘𝑙𝑚𝑛𝑜𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑥𝑦𝑧 ', 97 | \ 'SMALL_CAPS' : ' ᴀʙᴄᴅᴇꜰɢʜɪᴊᴋʟᴍɴᴏᴩ ʀꜱᴛᴜᴠᴡ ᴢ ', 98 | \ 'SQUARED_BLACK' : ' 🅰🅱🅲🅳🅴🅵🅶🅷🅸🅹🅺🅻🅼🅽🅾🅿🆀🆁🆂🆃🆄🆅🆆🆇🆈🆉 ', 99 | \ 'SQUARED_WHITE' : ' ⧆⊞ ⊟⊡⧄ 🄰🄱🄲🄳🄴🄵🄶🄷🄸🄹🄺🄻🄼🄽🄾🄿🅀🅁🅂🅃🅄🅅🅆🅇🅈🅉 ⧅ ', 100 | \ 'STROKED' : ' ƻ ȺɃȻĐɆ ǤĦƗɈꝀŁ ØⱣꝖɌ Ŧᵾ ɎƵ Ⱥƀȼđɇ ǥħɨɉꝁł øᵽꝗɍ ŧᵾ ɏƶ ', 101 | \ 'SUBSCRIPT' : ' ₍₎ ₊ ₋ ₀₁₂₃₄₅₆₇₈₉ ₌ ₐ ₑ ₕᵢⱼₖₗₘₙₒₚ ᵣₛₜᵤᵥ ₓ ', 102 | \ 'SUPERSCRIPT' : ' ⁽⁾ ⁺ ⁻ ⁰¹²³⁴⁵⁶⁷⁸⁹ ⁼ ᴬᴮᶜᴰᴱᶠᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾ ᴿˢᵀᵁⱽᵂ ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖ ʳˢᵗᵘᵛʷˣʸᶻ ', 103 | \ } 104 | 105 | let s:keys = sort(keys(copy(s:charset))) 106 | let s:lo = char2nr(s:ascii[0]) 107 | let s:hi = char2nr(s:ascii[strlen(s:ascii)-1]) 108 | let s:undefined = ' ' 109 | 110 | let s:active = '' 111 | -------------------------------------------------------------------------------- /autoload/isotope/diacritic.vim: -------------------------------------------------------------------------------- 1 | " vim: et sw=2 sts=2 2 | 3 | " Plugin: https://github.com/segeljakt/vim-isotope 4 | " Description: Insert special characters with ease. 5 | " Maintainer: Klas Segeljakt 6 | " Resources: 7 | " https://vim.fandom.com/wiki/Create_underlines,_overlines,_and_strikethroughs_using_combining_characters 8 | " https://en.wikipedia.org/wiki/Combining_character 9 | 10 | if exists('s:autoloaded') | finish | el | let s:autoloaded = 1 | en 11 | 12 | fun! isotope#diacritic#attach(bang, line1, line2, ...) 13 | if a:bang 14 | call s:attach(a:line1, a:line2, a:000, 15 | \ {_, v -> s:diacritic_raw[v]}) 16 | el 17 | call s:attach(a:line1, a:line2, a:000, 18 | \ {_, v -> s:diacritic_raw[s:diacritic_alias[v]]}) 19 | en 20 | endfun 21 | 22 | fun! s:unicode(code) 23 | exe 'return "\u'.a:code.'"' 24 | endfun 25 | 26 | fun! s:attach(line1, line2, args, extractor) 27 | let code = copy(a:args) 28 | let code = map(code, a:extractor) 29 | let code = reverse(code) 30 | let code = map(code, 's:unicode(v:val)') 31 | let code = join(code, '') 32 | silent! exe a:line1.','.a:line2.'s/\%V[^[:cntrl:]]/&'.code.'/ge' 33 | endfun 34 | 35 | fun! isotope#diacritic#complete(ArgLead, CmdLine, CursorPos) 36 | let bang = a:CmdLine =~ 'IsotopeAttach!' 37 | let keys = bang ? s:raw_keys : s:alias_keys 38 | return filter(copy(keys), 'v:val =~ "^'.a:ArgLead.'"') 39 | endfun 40 | 41 | fun! isotope#diacritic#preview() 42 | for [key, val] in items(s:diacritic_raw) 43 | let code = s:unicode(s:diacritic_raw[key]) 44 | let text = substitute('123abcABC', '.', '&'.code, 'g') 45 | let alias = get(s:diacritic_reverse_alias, key, '') 46 | if empty(alias) 47 | echom text.' = '.key 48 | el 49 | echom text.' = '.key.' [ '.alias.' ]' 50 | en 51 | echom ' ' 52 | endfor 53 | endfun 54 | 55 | " https://en.wikipedia.org/wiki/Combining_character 56 | let s:diacritic_raw = { 57 | \ 'GRAVE_ACCENT' : '0300', 58 | \ 'ACCUTE_ACCENT' : '0301', 59 | \ 'CIRCUMFLEX' : '0302', 60 | \ 'TILDE' : '0303', 61 | \ 'MACRON' : '0304', 62 | \ 'OVERLINE' : '0305', 63 | \ 'BREVE' : '0306', 64 | \ 'DOT_ABOVE' : '0307', 65 | \ 'DIAERESIS' : '0308', 66 | \ 'HOOK_ABOVE ' : '0309', 67 | \ 'RING_ABOVE' : '030A', 68 | \ 'DOUBLE_ACCUTE_ACCENT' : '030B', 69 | \ 'CARON' : '030C', 70 | \ 'VERTICAL_LINE_ABOVE' : '030D', 71 | \ 'DOUBLE_VERTICAL_LINE_ABOVE' : '030E', 72 | \ 'DOUBLE_GRAVE_ACCENT' : '030F', 73 | \ 'CANDRABINDU' : '0310', 74 | \ 'INVERTED_BREVE' : '0311', 75 | \ 'TURNED_COMMA_ABOVE' : '0312', 76 | \ 'COMMA_ABOVE' : '0313', 77 | \ 'REVERSED_COMMA_ABOVE' : '0314', 78 | \ 'COMMA_ABOVE_RIGHT' : '0315', 79 | \ 'GRAVE_ACCENT_BELOW' : '0316', 80 | \ 'ACUTE_ACCENT_BELOW' : '0317', 81 | \ 'LEFT_TACK_BELOW' : '0318', 82 | \ 'RIGHT_TACK_BELOW' : '0319', 83 | \ 'LEFT_ANGLE_ABOVE' : '031A', 84 | \ 'HORN' : '031B', 85 | \ 'LEFT_HALF_RING_BELOW' : '031C', 86 | \ 'UP_TACK_BELOW' : '031D', 87 | \ 'DOWN_TACK_BELOW' : '031E', 88 | \ 'PLUS_SIGN_BELOW' : '031F', 89 | \ 'MINUS_SIGN_BELOW' : '0320', 90 | \ 'PALATIZED_HOOK_BELOW' : '0321', 91 | \ 'RETROFLEX_HOOK_BELOW' : '0322', 92 | \ 'DOT_BELOW' : '0323', 93 | \ 'DIAERESIS_BELOW' : '0324', 94 | \ 'RING_BELOW' : '0325', 95 | \ 'COMMA_BELOW' : '0326', 96 | \ 'CEDILLA' : '0327', 97 | \ 'OGONEK' : '0328', 98 | \ 'VERTICAL_LINE_BELOW' : '0329', 99 | \ 'BRIDGE_BELOW' : '032A', 100 | \ 'INVERTED_DOUBLE_ARCH_BELOW' : '032B', 101 | \ 'CARON_BELOW' : '032C', 102 | \ 'CIRCUMFLEX_ACCENT_BELOW' : '032D', 103 | \ 'BREVE_BELOW' : '032E', 104 | \ 'INVERTED_BREVE_BELOW' : '032F', 105 | \ 'TILDE_BELOW' : '0330', 106 | \ 'MACRON_BELOW' : '0331', 107 | \ 'LOW_LINE' : '0332', 108 | \ 'DOUBLE_LOW_LINE' : '0333', 109 | \ 'TILDE_OVERLAY' : '0334', 110 | \ 'SHORT_STROKE_OVERLAY' : '0335', 111 | \ 'LONG_STROKE_OVERLAY' : '0336', 112 | \ 'SHORT_SOLIDUS_OVERLAY' : '0337', 113 | \ 'LONG_SOLIDUS_OVERLAY' : '0338', 114 | \ 'RIGHT_HALF_RING_BELOW' : '0339', 115 | \ 'INVERTED_BRIDGE_BELOW' : '033A', 116 | \ 'SQUARE_BELOW' : '033B', 117 | \ 'SEAGULL_BELOW' : '033C', 118 | \ 'X_ABOVE' : '033D', 119 | \ 'VERTICAL_TILDE' : '033E', 120 | \ 'DOUBLE_OVERLINE' : '033F', 121 | \ 'GRAVE_TONE_MARK' : '0340', 122 | \ 'ACUTE_TONE_MARK' : '0341', 123 | \ 'GREEK_PERSIPOMENI' : '0342', 124 | \ 'GREEK_KORONIS' : '0343', 125 | \ 'GREEK_DIALYTIKA_TONOS' : '0344', 126 | \ 'GREEK_YPOGEGRAMMENI' : '0345', 127 | \ 'BRIDGE_ABOVE' : '0346', 128 | \ 'EQUALS_SIGN_BELOW' : '0347', 129 | \ 'DOUBLE_VERTICAL_LINE_BELOW' : '0348', 130 | \ 'LEFT_ANGLE_BELOW' : '0349', 131 | \ 'NOT_TILDE_ABOVE' : '034A', 132 | \ 'HOMOTHETIC_ABOVE' : '034B', 133 | \ 'ALMOST_EQUAL_TO_ABOVE' : '034C', 134 | \ 'LEFT_RIGHT_ARROW_BELOW' : '034D', 135 | \ 'UPWARDS_ARROW_BELOW' : '034E', 136 | \ 'GRAPHEME_JOINER' : '034F', 137 | \ 'RIGHT_ARROWHEAD_ABOVE' : '0350', 138 | \ 'LEFT_HALF_RING_ABOVE' : '0351', 139 | \ 'FERMATA' : '0352', 140 | \ 'X_BELOW' : '0353', 141 | \ 'LEFT_ARROWHEAD_BELOW' : '0354', 142 | \ 'RIGHT_ARROWHEAD_BELOW' : '0355', 143 | \ 'RIGHT_ARROWHEAD_AND_UP_ARROWHEAD_BELOW' : '0356', 144 | \ 'RIGHT_HALF_RING_ABOVE' : '0357', 145 | \ 'DOT_ABOVE_RIGHT' : '0358', 146 | \ 'ASTERISK_BELOW' : '0359', 147 | \ 'DOUBLE_RING_BELOW' : '035A', 148 | \ 'ZIGZAG_ABOVE' : '035B', 149 | \ 'DOUBLE_BREVE_BELOW' : '035C', 150 | \ 'DOUBLE_BREVE' : '035D', 151 | \ 'DOUBLE_MACRON' : '035E', 152 | \ 'DOUBLE_MACRON_BELOW' : '035F', 153 | \ 'DOUBLE_TILDE' : '0360', 154 | \ 'DOUBLE_INVERTED_BREVE' : '0361', 155 | \ 'DOUBLE_RIGHTWARDS_ARROW_BELOW' : '0362', 156 | \ 'LATIN_SMALL_LETTER_A' : '0363', 157 | \ 'LATIN_SMALL_LETTER_E' : '0364', 158 | \ 'LATIN_SMALL_LETTER_I' : '0365', 159 | \ 'LATIN_SMALL_LETTER_O' : '0366', 160 | \ 'LATIN_SMALL_LETTER_U' : '0367', 161 | \ 'LATIN_SMALL_LETTER_C' : '0368', 162 | \ 'LATIN_SMALL_LETTER_D' : '0369', 163 | \ 'LATIN_SMALL_LETTER_H' : '036A', 164 | \ 'LATIN_SMALL_LETTER_M' : '036B', 165 | \ 'LATIN_SMALL_LETTER_R' : '036C', 166 | \ 'LATIN_SMALL_LETTER_T' : '036D', 167 | \ 'LATIN_SMALL_LETTER_V' : '036E', 168 | \ 'LATIN_SMALL_LETTER_X' : '036F', 169 | \ 'DOUBLED_CIRCUMFLEX_ACCENT' : '1AB0', 170 | \ 'DIAERESIS_RING' : '1AB1', 171 | \ 'INFINITY' : '1AB2', 172 | \ 'DOWNWARDS_ARROW' : '1AB3', 173 | \ 'TRIPLE_DOT' : '1AB4', 174 | \ 'XX_BELOW' : '1AB5', 175 | \ 'WIGGLY_LINE_BELOW' : '1AB6', 176 | \ 'OPEN_MARK_BELOW' : '1AB7', 177 | \ 'DOUBLE_OPEN_MARK_BELOW' : '1AB8', 178 | \ 'LIGHT_CENTRALIZATION_STROKE_BELOW' : '1AB9', 179 | \ 'STRONG_CENTRALIZATION_STROKE_BELOW' : '1ABA', 180 | \ 'PARENTHESIS_ABOVE' : '1ABB', 181 | \ 'DOUBLE_PARENTHESIS_ABOVE' : '1ABC', 182 | \ 'PARENTHESIS_BELOW' : '1ABD', 183 | \ 'PARENTHESES_OVERLAY' : '1ABE', 184 | \ 'DOTTED_GRAVE_ACCENT' : '1DC0', 185 | \ 'DOTTED_ACUTE_ACCENT' : '1DC1', 186 | \ 'SNAKE_BELOW' : '1DC2', 187 | \ 'SUSPENSION_MARK' : '1DC3', 188 | \ 'MACRON_ACUTE' : '1DC4', 189 | \ 'GRAVE_MACRON' : '1DC6', 190 | \ 'MACRON_GRAVE' : '1DC7', 191 | \ 'ACUTE_MACRON' : '1DC7', 192 | \ 'GRAVE_ACUTE_GRAVE' : '1DC8', 193 | \ 'ACUTE_GRAVE_ACUTE' : '1DC9', 194 | \ 'LATIN_SMALL_LETTER_R_BELOW' : '1DCA', 195 | \ 'BREVE_MACRON' : '1DCB', 196 | \ 'MACRON_BREVE' : '1DCC', 197 | \ 'DOUBLE_CIRCUMFLEX_ABOVE' : '1DCD', 198 | \ 'OGONEK_ABOVE' : '1DCE', 199 | \ 'ZIGZAG_BELOW' : '1DCF', 200 | \ 'IS_BELOW' : '1DD0', 201 | \ 'UR_ABOVE' : '1DD1', 202 | \ 'US_ABOVE' : '1DD2', 203 | \ 'LATIN_SMALL_LETTER_FLATTENED_OPEN_A_ABOVE' : '1DD3', 204 | \ 'LATIN_SMALL_LETTER_AE' : '1DD4', 205 | \ 'LATIN_SMALL_LETTER_AO' : '1DD5', 206 | \ 'LATIN_SMALL_LETTER_AV' : '1DD6', 207 | \ 'LATIN_SMALL_LETTER_C_CEDILLA' : '1DD7', 208 | \ 'LATIN_SMALL_LETTER_INSULAR_D' : '1DD8', 209 | \ 'LATIN_SMALL_LETTER_ETH' : '1DD9', 210 | \ 'LATIN_SMALL_LETTER_G' : '1DDA', 211 | \ 'LATIN_LETTER_SMALL_CAPITAL_G' : '1DDB', 212 | \ 'LATIN_SMALL_LETTER_K' : '1DDC', 213 | \ 'LATIN_SMALL_LETTER_L' : '1DDD', 214 | \ 'LATIN_LETTER_SMALL_CAPITAL_L' : '1DDE', 215 | \ 'LATIN_LETTER_SMALL_CAPITAL_M' : '1DDF', 216 | \ 'LATIN_SMALL_LETTER_N' : '1DE0', 217 | \ 'LATIN_LETTER_SMALL_CAPITAL_N' : '1DE1', 218 | \ 'LATIN_LETTER_SMALL_CAPITAL_R' : '1DE2', 219 | \ 'LATIN_SMALL_LETTER_R_ROTUNDA' : '1DE3', 220 | \ 'LATIN_SMALL_LETTER_S' : '1DE4', 221 | \ 'LATIN_SMALL_LETTER_LONG_S' : '1DE5', 222 | \ 'LATIN_SMALL_LETTER_Z' : '1DE6', 223 | \ 'LATIN_SMALL_LETTER_ALPHA' : '1DE7', 224 | \ 'LATIN_SMALL_LETTER_B' : '1DE8', 225 | \ 'LATIN_SMALL_LETTER_BETA' : '1DE9', 226 | \ 'LATIN_SMALL_LETTER_SCHWA' : '1DEA', 227 | \ 'LATIN_SMALL_LETTER_F' : '1DEB', 228 | \ 'LATIN_SMALL_LETTER_L_WITH_DOUBLE_MIDDLE_TILDE' : '1DEC', 229 | \ 'LATIN_SMALL_LETTER_O_WITH_LIGHT_CENTRALIZATION_STROKE' : '1DED', 230 | \ 'LATIN_SMALL_LETTER_P' : '1DEE', 231 | \ 'LATIN_SMALL_LETTER_ESH' : '1DEF', 232 | \ 'LATIN_SMALL_LETTER_U_WITH_LIGHT_CENTRALIZATION_STROKE' : '1DF0', 233 | \ 'LATIN_SMALL_LETTER_W' : '1DF1', 234 | \ 'LATIN_SMALL_LETTER_A_WITH_DIAERESIS' : '1DF2', 235 | \ 'LATIN_SMALL_LETTER_O_WITH_DIAERESIS' : '1DF3', 236 | \ 'LATIN_SMALL_LETTER_U_WITH_DIAERESIS' : '1DF4', 237 | \ 'UP_TACK_ABOVE' : '1DF5', 238 | \ 'KAVYKA_ABOVE_RIGHT' : '1DF6', 239 | \ 'KAVYKAK_ABOVE_LEFT' : '1DF7', 240 | \ 'DOT_ABOVE_LEFT' : '1DF8', 241 | \ 'WIDE_INVERTED_BRIDGE_BELOW' : '1DF9', 242 | \ 'DELETION_MARK' : '1DFB', 243 | \ 'DOUBLE_INVERTED_BREVE_BELOW' : '1DFC', 244 | \ 'ALMOST_EQUAL_TO_BELOW' : '1DFD', 245 | \ 'LEFT_ARROWHEAD_ABOVE' : '1DFE', 246 | \ 'RIGHT_ARROWHEAD_AND_DOWN_ARROWHEAD_BELOW' : '1DFF', 247 | \ 'LEFT_HARPOON_ABOVE' : '20D0', 248 | \ 'RIGHT_HARPOON_ABOVE' : '20D1', 249 | \ 'LONG_VERTICAL_LINE_OVERLAY' : '20D2', 250 | \ 'SHORT_VERTICAL_LINE_OVERLAY' : '20D3', 251 | \ 'ANTICLOCKWISE_ARROW_ABOVE' : '20D4', 252 | \ 'CLOCKWISE_ARROW_ABOVE' : '20D5', 253 | \ 'LEFT_ARROW_ABOVE' : '20D6', 254 | \ 'RIGHT_ARROW_ABOVE' : '20D7', 255 | \ 'RING_OVERLAY' : '20D8', 256 | \ 'CLOCKWISE_RING_OVERLAY' : '20D9', 257 | \ 'ANTICLOCKWISE_RING_OVERLAY' : '20DA', 258 | \ 'THREE_DOTS_ABOVE' : '20DB', 259 | \ 'FOUR_DOTS_ABOVE' : '20DC', 260 | \ 'ENCLOSING_CIRCLE' : '20DD', 261 | \ 'ENCLOSING_SQUARE' : '20DE', 262 | \ 'ENCLOSING_DIAMOND' : '20DF', 263 | \ 'ENCLOSING_CIRCLE_BACKSLASH' : '20E0', 264 | \ 'LEFT_RIGHT_ARROW_ABOVE' : '20E1', 265 | \ 'ENCLOSING_SCREEN' : '20E2', 266 | \ 'ENCLOSING_KEYCAP' : '20E3', 267 | \ 'ENCLOSING_UPWARD_POINTING_TRIANGLE' : '20E4', 268 | \ 'REVERSE_SOLIDUS_OVERLAY' : '20E5', 269 | \ 'DOUBLE_VERTICAL_STROKE_OVERLAY' : '20E6', 270 | \ 'ANNUITY_SYMBOL' : '20E7', 271 | \ 'TRIPLE_UNDERDOT' : '20E8', 272 | \ 'WIDE_BRIDGE_ABOVE' : '20E9', 273 | \ 'LEFTWARDS_ARROW_OVERLAY' : '20EA', 274 | \ 'LONG_DOUBLE_SOLIDUS_OVERLAY' : '20EB', 275 | \ 'RIGHTWARDS_HARPOON_WITH_BARB_DOWNWARDS' : '20EC', 276 | \ 'LEFTWARDS_HARPOON_WITH_BARB_DOWNWARDS' : '20ED', 277 | \ 'LEFT_ARROW_BELOW' : '20EE', 278 | \ 'RIGHT_ARROW_BELOW' : '20EF', 279 | \ 'ASTERISK_ABOVE' : '20F0', 280 | \ 'LIGATURE_LEFT_HALF' : 'FE20', 281 | \ 'LIGATURE_RIGHT_HALF' : 'FE21', 282 | \ 'DOUBLE_TILDE_LEFT_HALF' : 'FE22', 283 | \ 'DOUBLE_TILDE_RIGHT_HALF' : 'FE23', 284 | \ 'MACRON_LEFT_HALF' : 'FE24', 285 | \ 'MACRON_RIGHT_HALF' : 'FE25', 286 | \ 'CONJOINING_MACRON' : 'FE26', 287 | \ 'LIGATURE_LEFT_HALF_BELOW' : 'FE27', 288 | \ 'LIGATURE_RIGHT_HALF_BELOW' : 'FE28', 289 | \ 'TILDE_LEFT_HALF_HELOW' : 'FE29', 290 | \ 'TILDE_RIGHT_HALF_BELOW' : 'FE2A', 291 | \ 'MACRON_LEFT_HALF_BELOW' : 'FE2B', 292 | \ 'MACRON_RIGHT_HALF_BELOW' : 'FE2C', 293 | \ 'CONJOINING_MACRON_BELOW' : 'FE2D', 294 | \ 'CYRILLIC_TITLO_LEFT_HALF' : 'FE2E', 295 | \ 'CYRILLIC_TITLO_RIGHT_HALF' : 'FE2F', 296 | \ } 297 | 298 | let s:range = '[' 299 | \ . nr2char(768) . '-' . nr2char(879) " 0300-036F 300 | \ . nr2char(6832) . '-' . nr2char(6846) " 1AB0 1ABE 301 | \ . nr2char(7616) . '-' . nr2char(7679) " 1DC0 1DFF 302 | \ . nr2char(8400) . '-' . nr2char(8432) " 20D0 20F0 303 | \ . nr2char(65056) . '-' . nr2char(65071) " FE20 FE2F 304 | \ . ']' 305 | 306 | " TODO: Not working currently 307 | fun! isotope#diacritic#search() 308 | exe 'normal! /'.s:range.'\+ ' 309 | let @/ = s:range 310 | endfun 311 | 312 | let s:diacritic_alias = { 313 | \ 'a' : 'LATIN_SMALL_LETTER_A', 314 | \ 'b' : 'LATIN_SMALL_LETTER_B', 315 | \ 'c' : 'LATIN_SMALL_LETTER_C', 316 | \ 'd' : 'LATIN_SMALL_LETTER_D', 317 | \ 'e' : 'LATIN_SMALL_LETTER_E', 318 | \ 'f' : 'LATIN_SMALL_LETTER_F', 319 | \ 'g' : 'LATIN_SMALL_LETTER_G', 320 | \ 'h' : 'LATIN_SMALL_LETTER_H', 321 | \ 'i' : 'LATIN_SMALL_LETTER_I', 322 | \ 'k' : 'LATIN_SMALL_LETTER_K', 323 | \ 'l' : 'LATIN_SMALL_LETTER_L', 324 | \ 'm' : 'LATIN_SMALL_LETTER_M', 325 | \ 'n' : 'LATIN_SMALL_LETTER_N', 326 | \ 'o' : 'LATIN_SMALL_LETTER_O', 327 | \ 'p' : 'LATIN_SMALL_LETTER_P', 328 | \ 'r' : 'LATIN_SMALL_LETTER_R', 329 | \ 's' : 'LATIN_SMALL_LETTER_S', 330 | \ 't' : 'LATIN_SMALL_LETTER_T', 331 | \ 'u' : 'LATIN_SMALL_LETTER_U', 332 | \ 'v' : 'LATIN_SMALL_LETTER_V', 333 | \ 'w' : 'LATIN_SMALL_LETTER_W', 334 | \ 'x' : 'LATIN_SMALL_LETTER_X', 335 | \ 'z' : 'LATIN_SMALL_LETTER_Z', 336 | \ 'G' : 'LATIN_LETTER_SMALL_CAPITAL_G', 337 | \ 'L' : 'LATIN_LETTER_SMALL_CAPITAL_L', 338 | \ 'M' : 'LATIN_LETTER_SMALL_CAPITAL_M', 339 | \ 'N' : 'LATIN_LETTER_SMALL_CAPITAL_N', 340 | \ 'R' : 'LATIN_LETTER_SMALL_CAPITAL_R', 341 | \ 'α' : 'LATIN_SMALL_LETTER_ALPHA', 342 | \ 'β' : 'LATIN_SMALL_LETTER_BETA', 343 | \ '()center' : 'PARENTHESES_OVERLAY', 344 | \ '()above' : 'PARENTHESIS_ABOVE', 345 | \ '()below' : 'PARENTHESIS_BELOW', 346 | \ '*above' : 'ASTERISK_ABOVE', 347 | \ '*below' : 'ASTERISK_BELOW', 348 | \ '+below' : 'PLUS_SIGN_BELOW', 349 | \ '--below' : 'DOUBLE_LOW_LINE', 350 | \ '->above' : 'RIGHT_ARROW_ABOVE', 351 | \ '->below' : 'RIGHT_ARROW_BELOW', 352 | \ '-above' : 'DOUBLE_MACRON', 353 | \ '-below' : 'DOUBLE_MACRON_BELOW', 354 | \ '-center' : 'LONG_STROKE_OVERLAY', 355 | \ '...above' : 'THREE_DOTS_ABOVE', 356 | \ '...below' : 'TRIPLE_UNDERDOT', 357 | \ '.above' : 'DOT_ABOVE', 358 | \ '.below' : 'DOT_BELOW', 359 | \ '//center' : 'LONG_DOUBLE_SOLIDUS_OVERLAY', 360 | \ '/center' : 'LONG_SOLIDUS_OVERLAY', 361 | \ '<-center' : 'LEFTWARDS_ARROW_OVERLAY', 362 | \ '<->above' : 'LEFT_RIGHT_ARROW_ABOVE', 363 | \ '<->below' : 'LEFT_RIGHT_ARROW_BELOW', 364 | \ '<-above' : 'LEFT_ARROW_ABOVE', 365 | \ '<-below' : 'LEFT_ARROW_BELOW', 366 | \ '=below' : 'EQUALS_SIGN_BELOW', 367 | \ '\center' : 'REVERSE_SOLIDUS_OVERLAY', 368 | \ '^above' : 'CIRCUMFLEX', 369 | \ '^below' : 'CIRCUMFLEX_ACCENT_BELOW', 370 | \ 'circle' : 'ENCLOSING_CIRCLE', 371 | \ 'diamond' : 'ENCLOSING_DIAMOND', 372 | \ 'keycap' : 'ENCLOSING_KEYCAP', 373 | \ 'ring-above' : 'RING_ABOVE', 374 | \ 'ring-below' : 'RING_BELOW', 375 | \ 'ring-center' : 'RING_OVERLAY', 376 | \ 'square' : 'ENCLOSING_SQUARE', 377 | \ 'triangle' : 'ENCLOSING_UPWARD_POINTING_TRIANGLE', 378 | \ 'vbelow' : 'CARON_BELOW', 379 | \ 'xabove' : 'X_ABOVE', 380 | \ 'xbelow' : 'X_BELOW', 381 | \ 'zabove' : 'ZIGZAG_ABOVE', 382 | \ 'zbelow' : 'ZIGZAG_BELOW', 383 | \ '^|below' : 'UPWARDS_ARROW_BELOW', 384 | \ '|above' : 'VERTICAL_LINE_ABOVE', 385 | \ '|below' : 'VERTICAL_LINE_BELOW', 386 | \ '|center' : 'LONG_VERTICAL_LINE_OVERLAY', 387 | \ 'v|above' : 'DOWNWARDS_ARROW', 388 | \ '~above' : 'TILDE', 389 | \ '~below' : 'TILDE_BELOW', 390 | \ '~center' : 'TILDE_OVERLAY', 391 | \ } 392 | 393 | fun! s:reverse_dict(dict) 394 | let reversed = {} 395 | for [key, val] in items(a:dict) 396 | let reversed[val] = key 397 | endfor 398 | return reversed 399 | endfun 400 | 401 | let s:raw_keys = sort(copy(keys(s:diacritic_raw))) 402 | let s:alias_keys = sort(copy(keys(s:diacritic_alias))) 403 | let s:diacritic_reverse_alias = s:reverse_dict(s:diacritic_alias) 404 | -------------------------------------------------------------------------------- /doc/isotope.txt: -------------------------------------------------------------------------------- 1 | *isotope.txt* Insert special characters with ease 2 | 3 | vim-isotope 4 | CONTENTS *vim-isotope* 5 | 6 | 1. Introduction ............................... |vim-isotope-introduction| 7 | 2. Requirements ............................... |vim-isotope-requirements| 8 | 3. Commands ................................... |vim-isotope-commands| 9 | 4. Options .................................... |vim-isotope-options| 10 | 5. Miscellaneous .............................. |vim-isotope-misc| 11 | 12 | ============================================================================== 13 | INTRODUCTION *vim-isotope-introduction* 14 | 15 | This plugin provides mappings for inserting characters as ˢᵘᵖᵉʳˢᶜʳⁱᵖᵗˢ, 16 | ₛᵤbₛ꜀ᵣᵢₚₜₛ, u͟n͟d͟e͟r͟l͟i͟n͟e͟, s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶, 𝐒𝐄𝐑𝐈𝐅-𝐁𝐎𝐋𝐃, 𝐒𝐄𝐑𝐈𝐅-𝐈𝐓𝐀𝐋𝐈𝐂, 17 | 𝔉ℜ𝔄𝔎𝔗𝔘ℜ, 𝔻𝕆𝕌𝔹𝕃𝔼-𝕊𝕋ℝ𝕌ℂ𝕂, ᴙƎVƎᴙꙄƎD, INΛƎᴚ⊥Ǝᗡ, ⒸⒾⓇⒸⓁⒺⒹ, and much more. 18 | 19 | A complete list can be found in the README. 20 | 21 | ============================================================================== 22 | REQUIREMENTS *vim-isotope-requirements* 23 | 24 | A Vim version 7.4 or higher is required for basic functionality. 25 | 26 | ============================================================================== 27 | COMMANDS *vim-isotope-commands* 28 | 29 | 1. IsotopeInsert ....................................... |:IsotopeInsert| 30 | 2. IsotopeToggle ....................................... |:IsotopeToggle| 31 | 3. IsotopeAttach ....................................... |:IsotopeAttach| 32 | 4. IsotopeSearch ....................................... |:IsotopeSearch| 33 | 5. IsotopePreview ...................................... |:IsotopePreview| 34 | 35 | ------------------------------------------------------------------------------ 36 | *:IsotopeInsert* 37 | 38 | Convert the next typed character into a special character whose class is 39 | specified as an argument. 40 | 41 | > 42 | :IsotopeInsert SERIF_BOLD 43 | 44 | 𝐗 45 | > 46 | 47 | ------------------------------------------------------------------------------ 48 | *:IsotopeToggle* 49 | 50 | Toggle on/off conversion into special characters, whose class is specified as 51 | an argument. 52 | 53 | > 54 | :IsotopeToggle FRAKTUR 55 | 56 | 𝔖𝔞𝔪𝔭𝔩𝔢 𝔗𝔢𝔵𝔱 57 | > 58 | 59 | When called without an argument, any current conversion is toggled off. 60 | 61 | ------------------------------------------------------------------------------ 62 | *:IsotopeAttach* 63 | 64 | This command can be used in visual mode to attach a diacritic 65 | (combining character) to every character in a visual selection. 66 | 67 | > 68 | :'<,'>IsotopeAttach h e h e 69 | 70 | Sͤͪͤͪaͤͪͤͪmͤͪͤͪpͤͪͤͪlͤͪͤͪeͤͪͤͪ ͤͪͤͪtͤͪͤͪeͤͪͤͪxͤͪͤͪtͤͪͤͪ 71 | 72 | :'<,'>IsotopeAttach *below /center zabove 73 | 74 | S̸͙͛a̸͙͛m̸͙͛p̸͙͛l̸͙͛e̸͙͛ ̸͙͛t̸͙͛e̸͙͛x̸͙͛t̸͙͛ 75 | 76 | :'<,'>IsotopeAttach .below .above 77 | 78 | Ṩạ̇ṃ̇ṗ̣ḷ̇ẹ̇ ̣̇ṭ̇ẹ̇ẋ̣ṭ̇ 79 | 80 | :'<,'>IsotopeAttach xabove xbelow 81 | 82 | S͓̽a͓̽m͓̽p͓̽l͓̽e͓̽ ͓̽t͓̽e͓̽x͓̽t͓̽ 83 | 84 | :'<,'>IsotopeAttach ^below ~below ring-above <->below ~above 85 | 86 | S͍̰͎̃̊ã͍̰͎̊m͍̰͎̃̊p͍̰͎̃̊l͍̰͎̃̊ẽ͍̰͎̊ ͍̰͎̃̊t͍̰͎̃̊ẽ͍̰͎̊x͍̰͎̃̊t͍̰͎̃̊ 87 | > 88 | 89 | ------------------------------------------------------------------------------ 90 | *:IsotopeAttach!* 91 | 92 | You may also insert diacritics by their raw unicode name through the 93 | `IsotopeAttach!` command: 94 | 95 | > 96 | :'<,'>IsotopeAttach! LATIN_SMALL_LETTER_H LATIN_SMALL_LETTER_E 97 | :'<,'>IsotopeAttach! ASTERISK_BELOW LONG_DOUBLE_SOLIDUS_OVERLAY 98 | :'<,'>IsotopeAttach! DOT_BELOW DOT_ABOVE 99 | :'<,'>IsotopeAttach! X_ABOVE X_BELOW 100 | :'<,'>IsotopeAttach! CIRCUMFLEX_ACCENT_BELOW CIRCUMFLEX TILDE_BELOW 101 | > 102 | 103 | ------------------------------------------------------------------------------ 104 | *:IsotopeSearch* 105 | 106 | This command can be used to search special characters. 107 | 108 | > 109 | " Locate all classes of special characters. 110 | :IsotopeSearch 111 | 112 | " Locate specific classes of special characters. 113 | :IsotopeSearch SERIF_BOLD DOUBLE_STRUCK 114 | > 115 | 116 | ------------------------------------------------------------------------------ 117 | *:IsotopePreview* 118 | 119 | You can preview the complete list of special characters by running: 120 | 121 | > 122 | :IsotopePreview 123 | > 124 | 125 | ============================================================================== 126 | OPTIONS *vim-isotope-options* 127 | 128 | g:isotope_use_default_mappings .......... |g:isotope_use_default_mappings| 129 | 130 | ------------------------------------------------------------------------------ 131 | *g:isotope_use_default_mappings* 132 | Type: bool ~ 133 | Default: v:true ~ 134 | 135 | The default mappings are: 136 | 137 | > 138 | " Superscript/subscript/circled-white 139 | inoremap :IsotopeInsert SUPERSCRIPT 140 | inoremap :IsotopeInsert SUBSCRIPT 141 | inoremap :IsotopeInsert CIRCLED_WHITE 142 | 143 | inoremap :IsotopeToggle SUPERSCRIPT 144 | inoremap :IsotopeToggle SUBSCRIPT 145 | inoremap :IsotopeToggle CIRCLED_WHITE 146 | 147 | " Underline 148 | vnoremap :IsotopeAttach -below 149 | > 150 | 151 | If set to `v:false`, do not use the default mappings. 152 | 153 | > 154 | let g:isotope_use_default_mappings = v:false 155 | > 156 | 157 | 158 | ============================================================================== 159 | MISCELLANEOUS *isotope-misc* 160 | 161 | By default, Vim can display 2 diacritics on top of each other. You can raise 162 | this limit through the 'maxcombine' option. The maximum is 6: 163 | 164 | > 165 | set maxcombine=6 166 | > 167 | 168 | You may also want to toggle on the 'delcombine' option which allows you to 169 | remove diacritics without deleting the character they are attached to. 170 | 171 | > 172 | set delcombine 173 | > 174 | 175 | ============================================================================== 176 | " vim:tw=78:ts=4:sts=4:sw=4:ft=help:norl: 177 | -------------------------------------------------------------------------------- /plugin/isotope.vim: -------------------------------------------------------------------------------- 1 | " vim: et sw=2 sts=2 2 | 3 | " Plugin: https://github.com/segeljakt/vim-isotope 4 | " Description: Insert special characters with ease. 5 | " Maintainer: Klas Segeljakt 6 | 7 | com! 8 | \ -range 9 | \ -nargs=+ 10 | \ -bang 11 | \ -complete=customlist,isotope#diacritic#complete 12 | \ IsotopeAttach 13 | \ call isotope#diacritic#attach(0, , , ) 14 | 15 | com! 16 | \ -nargs=? 17 | \ -complete=customlist,isotope#charset#complete 18 | \ IsotopeToggle call isotope#charset#toggle() 19 | 20 | com! 21 | \ -nargs=? 22 | \ -complete=customlist,isotope#charset#complete 23 | \ IsotopeInsert 24 | \ call isotope#charset#insert() 25 | 26 | com! 27 | \ -nargs=* 28 | \ -complete=customlist,isotope#charset#complete 29 | \ IsotopeSearch 30 | \ silent! call isotope#charset#search() 31 | 32 | com! 33 | \ -nargs=0 34 | \ IsotopePreview 35 | \ call isotope#preview() 36 | 37 | " Default settings 38 | 39 | if get(g:, 'isotope_use_default_mappings', v:true) 40 | silent! ino :IsotopeToggle SUPERSCRIPT 41 | silent! ino :IsotopeToggle SUBSCRIPT 42 | silent! ino :IsotopeInsert SUPERSCRIPT 43 | silent! ino :IsotopeInsert SUBSCRIPT 44 | en 45 | --------------------------------------------------------------------------------