From c6a22929593b3150f0f6866c37dc16ab99d93726 Mon Sep 17 00:00:00 2001 From: Simon Lydell Date: Tue, 24 Nov 2015 18:37:40 +0100 Subject: [PATCH] Implement simple marks Inspired by Vim and Vimium, but simpler. All they do is to save the current toplevel scroll position for the current page, letting you return to that point later. Global marks are intentionally left out: See #626. --- documentation/commands.md | 22 +++++++++ documentation/shortcuts.md | 16 ++++++ extension/lib/commands-frame.coffee | 63 ++++++++++++++---------- extension/lib/commands.coffee | 31 ++++++++---- extension/lib/defaults.coffee | 2 + extension/lib/modes.coffee | 18 ++++++- extension/lib/scrollable-elements.coffee | 21 +++++--- extension/lib/vim-frame.coffee | 1 + extension/lib/vimfx.coffee | 4 +- extension/locale/de/vimfx.properties | 6 +++ extension/locale/el-GR/vimfx.properties | 6 +++ extension/locale/en-US/vimfx.properties | 6 +++ extension/locale/fr/vimfx.properties | 6 +++ extension/locale/hu/vimfx.properties | 6 +++ extension/locale/id/vimfx.properties | 6 +++ extension/locale/it/vimfx.properties | 6 +++ extension/locale/ja/vimfx.properties | 6 +++ extension/locale/nl/vimfx.properties | 6 +++ extension/locale/pl/vimfx.properties | 6 +++ extension/locale/pt-BR/vimfx.properties | 6 +++ extension/locale/ru/vimfx.properties | 6 +++ extension/locale/sv-SE/vimfx.properties | 6 +++ extension/locale/zh-CN/vimfx.properties | 6 +++ extension/locale/zh-TW/vimfx.properties | 6 +++ 24 files changed, 223 insertions(+), 45 deletions(-) diff --git a/documentation/commands.md b/documentation/commands.md index ad658e4..34da39b 100644 --- a/documentation/commands.md +++ b/documentation/commands.md @@ -111,6 +111,28 @@ eating your best hint char on most pages; see [The `f` commands]). [The `f` commands]: #the-f-commands-1 +### Marks: `m` and `` ` `` + +Other than traditional scrolling, VimFx has _marks._ Press `m` followed by a +letter to associate the current scroll position with that letter. For example, +press `ma` to save the position into mark _a._ Then you can return to that +position by pressing `` ` `` followed by the same letter, e.g. `` `a ``. + +#### Minor notes + +Unlike Vim, you may press _any_ key after `m`, and the scroll position will be +associated with that key (Vim allows only a–z, roughly). + +Unlike Vim and Vimium, VimFx has no global marks. The reason is that they would +be a lot more complicated to implement and do not seem useful enough to warrant +that effort. + +As mentioned above, `m` stores the _current scroll position._ Specifically, that +means the scroll position of the element that would be scrolled if the active +element isn't scrollable; see [Scrolling commands] above. + +[Scrolling commands]: #scrolling-commands-1 + ## `gi` diff --git a/documentation/shortcuts.md b/documentation/shortcuts.md index 8c4e536..135cb29 100644 --- a/documentation/shortcuts.md +++ b/documentation/shortcuts.md @@ -10,6 +10,7 @@ All of VimFx’s keyboard shortcuts can be customized in VimFx’s settings page the Add-ons Manager. Doing so is really easy. You get far just by looking at the defaults and trying things out. If not, read on. + ## Key notation VimFx’s key notation is inspired by Vim’s key notation. An example: @@ -52,6 +53,21 @@ If you’d like to know even more about the key notation, see [timeout]: options.md#timeout [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation + +## Tips + +If you use more than one keyboard layout, remember to check out the [Ignore +keyboard layout] option. + +If you’d like see what VimFx interprets a key stroke as, you can (ab)use the +[`m`] command. Press `m` followed by your desired key stroke. A [notification] +will appear, including the interpreted key notation for that key press. + +[Ignore keyboard layout]: options.md#ignore-keyboard-layout +[`m`]: commands.md#marks-m-and- +[notification]: notifications.md + + ## Special keys Just like Vim, VimFx has a few “special keys:” diff --git a/extension/lib/commands-frame.coffee b/extension/lib/commands-frame.coffee index 9efba21..3c1f8ee 100644 --- a/extension/lib/commands-frame.coffee +++ b/extension/lib/commands-frame.coffee @@ -22,8 +22,9 @@ # same name as the command in commands.coffee that calls it. There are also a # few more generalized “commands” used in more than one place. -hints = require('./hints') -utils = require('./utils') +hints = require('./hints') +translate = require('./l10n') +utils = require('./utils') {isProperLink, isTextInputElement, isTypingElement, isContentEditable} = utils @@ -39,35 +40,43 @@ commands.go_up_path = ({vim, count = 1}) -> commands.go_to_root = ({vim}) -> vim.content.location.href = vim.content.location.origin -commands.scroll = ({vim, method, type, direction, amount, property, smooth}) -> - activeElement = utils.getActiveElement(vim.content) - document = activeElement.ownerDocument - - element = switch - when vim.state.scrollableElements.has(activeElement) - activeElement - # If the currently focused element isn’t scrollable, scroll the largest - # scrollable element instead, which usually means ``. - when vim.state.scrollableElements.hasOrUpdateLargestScrollable() - vim.state.scrollableElements.largest - else - # If this point is reached, it _should_ mean that the page hasn’t got any - # scrollable elements, and the whole page itself isn’t scrollable. Instead - # of simply `return`ing, scroll the entire page (the best bet at this - # point) instead because we cannot be 100% sure that nothing is scrollable - # (for example, if VimFx is updated in the middle of a session). Not being - # able to scroll is very annoying. - vim.state.scrollableElements.quirks(document.documentElement) - +helper_scroll = (element, args) -> + {method, type, directions, amounts, properties, smooth} = args options = {} - options[direction] = switch type - when 'lines' then amount - when 'pages' then amount * element[property] - when 'other' then Math.min(amount, element[property]) + for direction, index in directions + amount = amounts[index] + options[direction] = switch type + when 'lines' then amount + when 'pages' then amount * element[properties[index]] + when 'other' then Math.min(amount, element[properties[index]]) options.behavior = 'smooth' if smooth - element[method](options) +commands.scroll = (args) -> + {vim} = args + activeElement = utils.getActiveElement(vim.content) + element = + if vim.state.scrollableElements.has(activeElement) + activeElement + else + vim.state.scrollableElements.filterSuitableDefault() + helper_scroll(element, args) + +commands.mark_scroll_position = ({vim, keyStr}) -> + element = vim.state.scrollableElements.filterSuitableDefault() + vim.state.marks[keyStr] = [element.scrollTop, element.scrollLeft] + vim.notify(translate('mark_scroll_position.success', keyStr)) + +commands.scroll_to_mark = (args) -> + {vim, amounts: keyStr} = args + unless keyStr of vim.state.marks + vim.notify(translate('scroll_to_mark.error', keyStr)) + return + + args.amounts = vim.state.marks[keyStr] + element = vim.state.scrollableElements.filterSuitableDefault() + helper_scroll(element, args) + helper_follow = ({id, combine = true}, matcher, {vim}) -> hrefs = {} vim.state.markerElements = [] diff --git a/extension/lib/commands.coffee b/extension/lib/commands.coffee index 222b6d9..b8f8848 100644 --- a/extension/lib/commands.coffee +++ b/extension/lib/commands.coffee @@ -115,9 +115,10 @@ commands.stop_all = ({vim}) -> -helper_scroll = (vim, method, type, direction, amount, property = null) -> - args = { - method, type, direction, amount, property +helper_scroll = (vim, args...) -> + [method, type, directions, amounts, properties = null, name = 'scroll'] = args + options = { + method, type, directions, amounts, properties smooth: (prefs.root.get('general.smoothScroll') and prefs.root.get("general.smoothScroll.#{type}")) } @@ -125,24 +126,27 @@ helper_scroll = (vim, method, type, direction, amount, property = null) -> 'layout.css.scroll-behavior.spring-constant', vim.options["smoothScroll.#{type}.spring-constant"] ) - vim._run('scroll', args, reset) + vim._run(name, options, reset) helper_scrollByLinesX = (amount, {vim, count = 1}) -> distance = prefs.root.get('toolkit.scrollbox.horizontalScrollDistance') - helper_scroll(vim, 'scrollBy', 'lines', 'left', amount * distance * count * 5) + helper_scroll(vim, 'scrollBy', 'lines', ['left'], + [amount * distance * count * 5]) helper_scrollByLinesY = (amount, {vim, count = 1}) -> distance = prefs.root.get('toolkit.scrollbox.verticalScrollDistance') - helper_scroll(vim, 'scrollBy', 'lines', 'top', amount * distance * count * 20) + helper_scroll(vim, 'scrollBy', 'lines', ['top'], + [amount * distance * count * 20]) helper_scrollByPagesY = (amount, {vim, count = 1}) -> - helper_scroll(vim, 'scrollBy', 'pages', 'top', amount * count, 'clientHeight') + helper_scroll(vim, 'scrollBy', 'pages', ['top'], + [amount * count], ['clientHeight']) helper_scrollToX = (amount, {vim}) -> - helper_scroll(vim, 'scrollTo', 'other', 'left', amount, 'scrollLeftMax') + helper_scroll(vim, 'scrollTo', 'other', ['left'], [amount], ['scrollLeftMax']) helper_scrollToY = (amount, {vim}) -> - helper_scroll(vim, 'scrollTo', 'other', 'top', amount, 'scrollTopMax') + helper_scroll(vim, 'scrollTo', 'other', ['top'], [amount], ['scrollTopMax']) commands.scroll_left = helper_scrollByLinesX.bind(null, -1) commands.scroll_right = helper_scrollByLinesX.bind(null, +1) @@ -157,6 +161,15 @@ commands.scroll_to_bottom = helper_scrollToY.bind(null, Infinity) commands.scroll_to_left = helper_scrollToX.bind(null, 0) commands.scroll_to_right = helper_scrollToX.bind(null, Infinity) +commands.mark_scroll_position = ({vim}) -> + vim.enterMode('marks', (keyStr) -> vim._run('mark_scroll_position', {keyStr})) + +commands.scroll_to_mark = ({vim}) -> + vim.enterMode('marks', (keyStr) -> + helper_scroll(vim, 'scrollTo', 'other', ['top', 'left'], keyStr, + ['scrollTopMax', 'scrollLeftMax'], 'scroll_to_mark') + ) + commands.tab_new = ({vim}) -> diff --git a/extension/lib/defaults.coffee b/extension/lib/defaults.coffee index 23d8896..22c2b49 100644 --- a/extension/lib/defaults.coffee +++ b/extension/lib/defaults.coffee @@ -52,6 +52,8 @@ shortcuts = 'G': 'scroll_to_bottom' '0 ^': 'scroll_to_left' '$': 'scroll_to_right' + 'm': 'mark_scroll_position' + '`': 'scroll_to_mark' 'tabs': 't': 'tab_new' diff --git a/extension/lib/modes.coffee b/extension/lib/modes.coffee index d52b84f..e78cd36 100644 --- a/extension/lib/modes.coffee +++ b/extension/lib/modes.coffee @@ -31,7 +31,7 @@ translate = require('./l10n') utils = require('./utils') # Helper to create modes in a DRY way. -mode = (modeName, obj, commands) -> +mode = (modeName, obj, commands = null) -> obj.name = translate.bind(null, "mode.#{modeName}") obj.order = defaults.mode_order[modeName] obj.commands = {} @@ -230,3 +230,19 @@ mode('find', { }, { exit: ({findBar}) -> findBar.close() }) + + + +mode('marks', { + onEnter: ({storage}, callback) -> + storage.callback = callback + + onLeave: ({storage}) -> + storage.callback = null + + onInput: (args, match) -> + {vim, storage} = args + storage.callback(match.keyStr) + vim.enterMode('normal') + return true +}) diff --git a/extension/lib/scrollable-elements.coffee b/extension/lib/scrollable-elements.coffee index 9342782..04c786d 100644 --- a/extension/lib/scrollable-elements.coffee +++ b/extension/lib/scrollable-elements.coffee @@ -79,15 +79,22 @@ class ScrollableElements @largest = null @elements.forEach((element) => @largest = element if @isLargest(element)) - # Elements may overflow when zooming in or out. However, the `.scrollHeight` - # of the element is not correctly updated when the 'overflow' event occurs, - # making it possible for unscrollable elements to slip in. This method tells - # whether the largest element really is scrollable, updating it if needed. - hasOrUpdateLargestScrollable: -> + # In theory, this method could return `@largest`. In reality, it is not that + # simple. Elements may overflow when zooming in or out, but the + # `.scrollHeight` of the element is not correctly updated when the 'overflow' + # event occurs, making it possible for unscrollable elements to slip in. So + # this method has to check whether the largest element really is scrollable, + # and update it if needed. In the case where there is no largest element + # (left), it _should_ mean that the page hasn’t got any scrollable elements, + # and the whole page itself isn’t scrollable. However, we cannot be 100% sure + # that nothing is scrollable (for example, if VimFx is updated in the middle + # of a session). So in that case, instead of simply returning `null`, return + # the entire page (the best bet). Not being able to scroll is very annoying. + filterSuitableDefault: -> if @largest and @isScrollable(@largest) - return true + return @largest else @reject((element) => not @isScrollable(element)) - return @largest? + return @largest ? @quirks(@window.document.documentElement) module.exports = ScrollableElements diff --git a/extension/lib/vim-frame.coffee b/extension/lib/vim-frame.coffee index 72eea60..f84d707 100644 --- a/extension/lib/vim-frame.coffee +++ b/extension/lib/vim-frame.coffee @@ -51,6 +51,7 @@ class VimFrame @state = hasInteraction: false shouldRefocus: false + marks: {} lastFocusedTextInput: null scrollableElements: new ScrollableElements(@content, MINIMUM_SCROLL) markerElements: [] diff --git a/extension/lib/vimfx.coffee b/extension/lib/vimfx.coffee index 6a5bb5b..d70547f 100644 --- a/extension/lib/vimfx.coffee +++ b/extension/lib/vimfx.coffee @@ -51,7 +51,9 @@ class VimFx extends utils.EventEmitter getCurrentVim: (window) -> @vims.get(window.gBrowser.selectedBrowser) reset: (mode = null) -> - @currentKeyTree = if mode then @keyTrees[mode] else {} + # Modes without commands are returned by neither `.getGroupedCommands()` nor + # `createKeyTrees`. Fall back to an empty tree. + @currentKeyTree = @keyTrees[mode] ? {} @lastInputTime = 0 @count = '' diff --git a/extension/locale/de/vimfx.properties b/extension/locale/de/vimfx.properties index 98728c7..dd65ddc 100644 --- a/extension/locale/de/vimfx.properties +++ b/extension/locale/de/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Zum Anfang der Seite scrollen mode.normal.scroll_to_bottom=Zum Ende der Seite scrollen mode.normal.scroll_to_left=Zum linken Rand scrollen mode.normal.scroll_to_right=Zum rechten Rand scrollen +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Tabs mode.normal.tab_new=Öffnen eines neuen leeren Tabs @@ -92,6 +96,8 @@ mode.ignore.unquote=Einen einzigen Befehl im Normalmodus ausführen mode.find=Suchmodus mode.find.exit=Suchleiste schließen +mode.marks=Marks mode + pref.hint_chars.title=Zeichen für Hinweise pref.hint_chars.desc= diff --git a/extension/locale/el-GR/vimfx.properties b/extension/locale/el-GR/vimfx.properties index 50de4a3..8750273 100644 --- a/extension/locale/el-GR/vimfx.properties +++ b/extension/locale/el-GR/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Μετακινηθείτε στην κορυφή τη mode.normal.scroll_to_bottom=Μετακινηθείτε στο τέλος της σελίδας mode.normal.scroll_to_left=Scroll to the far left mode.normal.scroll_to_right=Scroll to the far right +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=καρτέλες mode.normal.tab_new=Άνοιγμα νέας κενής καρτέλας @@ -92,6 +96,8 @@ mode.ignore.unquote=Run one Normal mode command mode.find=Find mode mode.find.exit=Close find bar +mode.marks=Marks mode + pref.hint_chars.title=Χαρακτήρες Δεικτών pref.hint_chars.desc= diff --git a/extension/locale/en-US/vimfx.properties b/extension/locale/en-US/vimfx.properties index f36ec43..ddfe921 100644 --- a/extension/locale/en-US/vimfx.properties +++ b/extension/locale/en-US/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Scroll to top mode.normal.scroll_to_bottom=Scroll to bottom mode.normal.scroll_to_left=Scroll to the far left mode.normal.scroll_to_right=Scroll to the far right +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Tabs mode.normal.tab_new=New tab @@ -92,6 +96,8 @@ mode.ignore.unquote=Run one Normal mode command mode.find=Find mode mode.find.exit=Close find bar +mode.marks=Marks mode + pref.hint_chars.title=Hint chars pref.hint_chars.desc= diff --git a/extension/locale/fr/vimfx.properties b/extension/locale/fr/vimfx.properties index 2e1801b..c512058 100644 --- a/extension/locale/fr/vimfx.properties +++ b/extension/locale/fr/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Aller en haut de la page mode.normal.scroll_to_bottom=Aller en bas de la page mode.normal.scroll_to_left=Faire défiler jusqu'au bord gauche mode.normal.scroll_to_right=Faire défiler jusqu'au bord droit +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Onglets mode.normal.tab_new=Ouvrir un nouvel onglet @@ -92,6 +96,8 @@ mode.ignore.unquote=Exécuter une commande en mode normal mode.find=Mode recherche mode.find.exit=Fermer la barre de recherche +mode.marks=Marks mode + pref.hint_chars.title=Marqueurs de liens pref.hint_chars.desc= diff --git a/extension/locale/hu/vimfx.properties b/extension/locale/hu/vimfx.properties index 6433a99..47d33ec 100644 --- a/extension/locale/hu/vimfx.properties +++ b/extension/locale/hu/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Ugrás az oldal tetejére mode.normal.scroll_to_bottom=Ugrás az oldal aljára mode.normal.scroll_to_left=Scroll to the far left mode.normal.scroll_to_right=Scroll to the far right +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Tab mode.normal.tab_new=Új tab nyitása @@ -92,6 +96,8 @@ mode.ignore.unquote=Run one Normal mode command mode.find=Find mode mode.find.exit=Close find bar +mode.marks=Marks mode + pref.hint_chars.title=Segéd karakterek pref.hint_chars.desc= diff --git a/extension/locale/id/vimfx.properties b/extension/locale/id/vimfx.properties index 503808f..1b06cf1 100644 --- a/extension/locale/id/vimfx.properties +++ b/extension/locale/id/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Gulung ke puncak mode.normal.scroll_to_bottom=Gulung ke dasar mode.normal.scroll_to_left=Gulung ke paling kiri mode.normal.scroll_to_right=Gulung ke paling kanan +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Tab mode.normal.tab_new=Tab baru @@ -92,6 +96,8 @@ mode.ignore.unquote=Jalankan satu perintah mode Normal mode.find=Mode Cari mode.find.exit=Tutup bar Cari +mode.marks=Marks mode + pref.hint_chars.title=Karakter Petunjuk pref.hint_chars.desc= diff --git a/extension/locale/it/vimfx.properties b/extension/locale/it/vimfx.properties index a69ea5d..417548e 100644 --- a/extension/locale/it/vimfx.properties +++ b/extension/locale/it/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Scorri all'inizio della pagina mode.normal.scroll_to_bottom=Scorri alla fine della pagina mode.normal.scroll_to_left=Scorri all'estrema sinistra mode.normal.scroll_to_right=Scorri all'estrema destra +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Schede (tab) mode.normal.tab_new=Apri una nuova scheda @@ -92,6 +96,8 @@ mode.ignore.unquote=Esegui un comando della modalità normale mode.find=Modalità trova mode.find.exit=Chiudi la barra di ricerca +mode.marks=Marks mode + pref.hint_chars.title=Caratteri di suggerimento pref.hint_chars.desc= diff --git a/extension/locale/ja/vimfx.properties b/extension/locale/ja/vimfx.properties index 43acd57..cfd3004 100644 --- a/extension/locale/ja/vimfx.properties +++ b/extension/locale/ja/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=ページの最上部へスクロール mode.normal.scroll_to_bottom=ページの最下部へスクロール mode.normal.scroll_to_left=左へスクロール mode.normal.scroll_to_right=右へスクロール +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=タブの操作 mode.normal.tab_new=新規タブを開く @@ -92,6 +96,8 @@ mode.ignore.unquote=ノーマルモードのコマンドを一度限り実行 mode.find=検索モード mode.find.exit=検索バーを閉じる +mode.marks=Marks mode + pref.hint_chars.title=ヒント機能で使用する文字 pref.hint_chars.desc= diff --git a/extension/locale/nl/vimfx.properties b/extension/locale/nl/vimfx.properties index 466b5e6..e156429 100644 --- a/extension/locale/nl/vimfx.properties +++ b/extension/locale/nl/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Scroll naar de bovenkant mode.normal.scroll_to_bottom=Scroll naar de onderkant mode.normal.scroll_to_left=Scroll helemaal naar links mode.normal.scroll_to_right=Scroll helemaal naar rechts +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Tabbladen mode.normal.tab_new=Open een nieuw tabblad @@ -92,6 +96,8 @@ mode.ignore.unquote=Voer een commando uit in normale modus mode.find=Zoekmodus mode.find.exit=Sluit zoekbalk +mode.marks=Marks mode + pref.hint_chars.title=Gebruikte karakters pref.hint_chars.desc= diff --git a/extension/locale/pl/vimfx.properties b/extension/locale/pl/vimfx.properties index 88c195b..5813c7e 100644 --- a/extension/locale/pl/vimfx.properties +++ b/extension/locale/pl/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Przewiń na górę strony mode.normal.scroll_to_bottom=Przewin na dół strony mode.normal.scroll_to_left=Scroll to the far left mode.normal.scroll_to_right=Scroll to the far right +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Karty mode.normal.tab_new=Otwórz nową kartę @@ -92,6 +96,8 @@ mode.ignore.unquote=Run one Normal mode command mode.find=Find mode mode.find.exit=Close find bar +mode.marks=Marks mode + pref.hint_chars.title=Znaki podpowiedzi pref.hint_chars.desc= diff --git a/extension/locale/pt-BR/vimfx.properties b/extension/locale/pt-BR/vimfx.properties index 7083ee3..119c094 100644 --- a/extension/locale/pt-BR/vimfx.properties +++ b/extension/locale/pt-BR/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Rolar até o topo mode.normal.scroll_to_bottom=Rolar até o fim mode.normal.scroll_to_left=Rolar para a esquerda até o fim mode.normal.scroll_to_right=Rolar para a direita até o fim +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Abas mode.normal.tab_new=Nova aba @@ -92,6 +96,8 @@ mode.ignore.unquote=Executar um comando no modo Normal mode.find=Modo de Busca mode.find.exit=Fechar barra de busca +mode.marks=Marks mode + pref.hint_chars.title=Caracteres de Sugestão pref.hint_chars.desc= diff --git a/extension/locale/ru/vimfx.properties b/extension/locale/ru/vimfx.properties index bd0c61f..0829491 100644 --- a/extension/locale/ru/vimfx.properties +++ b/extension/locale/ru/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Прокрутить к верху страницы mode.normal.scroll_to_bottom=Прокрутить к низу страницы mode.normal.scroll_to_left=Прокрутить влево до конца mode.normal.scroll_to_right=Прокрутить вправо до конца +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=Вкладки mode.normal.tab_new=Открыть новую вкладку @@ -92,6 +96,8 @@ mode.ignore.unquote=Выполнить одну команду в нормаль mode.find=Режим поиска mode.find.exit=Закрыть панель поиска +mode.marks=Marks mode + pref.hint_chars.title=Символы на маркерах pref.hint_chars.desc= diff --git a/extension/locale/sv-SE/vimfx.properties b/extension/locale/sv-SE/vimfx.properties index 0d9ab30..9695e1f 100644 --- a/extension/locale/sv-SE/vimfx.properties +++ b/extension/locale/sv-SE/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=Scrolla högst upp mode.normal.scroll_to_bottom=Scrolla längst ned mode.normal.scroll_to_left=Scrolla längst till vänster mode.normal.scroll_to_right=Scroll längst till höger +mode.normal.mark_scroll_position=Markera scrollposition +mark_scroll_position.success=Markör satt: %S +mode.normal.scroll_to_mark=Scrolla till markör +scroll_to_mark.error=Ingen markör för: %S category.tabs=Flikar mode.normal.tab_new=Ny flik @@ -92,6 +96,8 @@ mode.ignore.unquote=Kör ett Normallägeskommando mode.find=Sökläge mode.find.exit=Stäng sökpanelen +mode.marks=Markörläge + pref.hint_chars.title=Etikettstecken pref.hint_chars.desc= diff --git a/extension/locale/zh-CN/vimfx.properties b/extension/locale/zh-CN/vimfx.properties index cc25c3e..5455692 100644 --- a/extension/locale/zh-CN/vimfx.properties +++ b/extension/locale/zh-CN/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=滚动到页面顶部 mode.normal.scroll_to_bottom=滚动到页面底部 mode.normal.scroll_to_left=滚动到最左边 mode.normal.scroll_to_right=滚动到最右边 +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=标签页 mode.normal.tab_new=新建标签页 @@ -92,6 +96,8 @@ mode.ignore.unquote=执行一个普通模式下的命令 mode.find=查找模式 mode.find.exit=关闭查找栏 +mode.marks=Marks mode + pref.hint_chars.title=提示符 pref.hint_chars.desc= diff --git a/extension/locale/zh-TW/vimfx.properties b/extension/locale/zh-TW/vimfx.properties index b303985..0edc95c 100644 --- a/extension/locale/zh-TW/vimfx.properties +++ b/extension/locale/zh-TW/vimfx.properties @@ -37,6 +37,10 @@ mode.normal.scroll_to_top=捲動到網頁最頂端 mode.normal.scroll_to_bottom=捲動到網頁最末端 mode.normal.scroll_to_left=捲動到網頁最左端 mode.normal.scroll_to_right=捲動到網頁最右端 +mode.normal.mark_scroll_position=Mark scroll position +mark_scroll_position.success=Mark set: %S +mode.normal.scroll_to_mark=Scroll to mark +scroll_to_mark.error=No mark for: %S category.tabs=分頁 mode.normal.tab_new=開新分頁 @@ -92,6 +96,8 @@ mode.ignore.unquote=執行一個正常模式下的指令 mode.find=搜尋模式 mode.find.exit=關閉搜尋列 +mode.marks=Marks mode + pref.hint_chars.title=提示字元(Hint Chars) pref.hint_chars.desc=進入 Hints 模式時,用哪些符號進行標記。 -- 2.39.3