mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-02-14 11:53:26 +01:00
Add a new Vim script function `showdefinition()` that allows Vim script to call back to macOS's data lookup feature and show the definition / URL preview / etc for any text, at a designated row/col position. If the row/col are not provided this function will just show it at the cursor. Also, add a new autoload/macvim.vim for utility functions to call showdefinition() for selected texts and the word under cursor. Make a new right-click popup menu "Look Up" call that when there are selected texts in visual mode to make the lookup functionality easier to access for users without a trackpad (since Ctrl-Cmd-D is a little obscure and unwieldy to use). For the utility functions, it was a little hard to determine how to get the text under visual selection without yanking (we don't want to pollute the register here), and just implemented a function to take care of all the edge cases including visual/block/line modes and selection=exclusive. It could be useful in other situations. As a side refactor, change the message handler in MacVim from if/else to switch case. In optimized builds, they both essentially optimize to the same thing, but for debug builds, the if/else statements have to step through one by one, and switch case just makes more sense for a giant message ID lookup like this. Part of Epic #1311
Language files for Vim: Translated menus The contents of each menu file is a sequence of lines with "menutrans" commands. Read one of the existing files to get an idea of how this works. More information in the on-line help: :help multilang-menus :help :menutrans :help 'langmenu' :help :language You can find a couple of helper tools for translating menus on github: https://github.com/adaext/vim-menutrans-helper The "$VIMRUNTIME/menu.vim" file will search for a menu translation file. This depends on the value of the "v:lang" variable. "menu_" . v:lang . ".vim" When the 'menutrans' option is set, its value will be used instead of v:lang. The file name is always lower case. It is the full name as the ":language" command shows (the LC_MESSAGES value). For example, to use the Big5 (Taiwan) menus on MS-Windows the $LANG will be Chinese(Taiwan)_Taiwan.950 and use the menu translation file: $VIMRUNTIME/lang/menu_chinese(taiwan)_taiwan.950.vim On Unix you should set $LANG, depending on your shell: csh/tcsh: setenv LANG "zh_TW.Big5" sh/bash/ksh: export LANG="zh_TW.Big5" and the menu translation file is: $VIMRUNTIME/lang/menu_zh_tw.big5.vim The menu translation file should set the "did_menu_trans" variable so that Vim will not load another file. AUTOMATIC CONVERSION When Vim was compiled with multi-byte support, conversion between latin1 and UTF-8 will always be possible. Other conversions depend on the iconv library, which is not always available. For UTF-8 menu files which only use latin1 characters, you can rely on Vim doing the conversion. Let the UTF-8 menu file source the latin1 menu file, and put "scriptencoding latin1" in that one. Other conversions may not always be available (e.g., between iso-8859-# and MS-Windows codepages), thus the converted menu file must be available.