From 2eee4d5da1863849d7a6a85a12d682d858c081e6 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Sun, 24 Sep 2023 22:47:50 +0200 Subject: [PATCH] Few changes --- babele-register.js | 280 ++++++++++++++++++++---------------------- fr.json | 4 +- module.json | 6 +- tory | grep github | 298 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 434 insertions(+), 154 deletions(-) create mode 100644 tory | grep github diff --git a/babele-register.js b/babele-register.js index ab80c40..422effe 100644 --- a/babele-register.js +++ b/babele-register.js @@ -149,39 +149,40 @@ Hooks.once('init', () => { Babele.get().registerConverters({ "career_skills": (skills_list) => { - let compendiumName = 'wfrp4e-core.skills' // Per default - if (game.system.version.match("7.")) { - compendiumName = 'wfrp4e-core.items' - } - //console.log( "Thru here ...", compendium, skills_list); + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill") + //DEBUG: console.log( "Thru here ...", compendium, skills_list); if (skills_list) { let i; let len = skills_list.length; let re = /(.*)\((.*)\)/i; for (i = 0; i < len; i++) { skills_list[i] = skills_list[i].trim(); - let transl = game.babele.translate(compendiumName, { name: skills_list[i] }, true).name; - if (!transl) transl = skills_list[i] - //console.log("List ...", skills_list[i]); - if (transl == skills_list[i]) { - let res = re.exec(skills_list[i]); - if (res) { - //console.log("Matched/split:", res[1], res[2]); - let subword = game.i18n.localize(res[2].trim()); - let s1 = res[1].trim() + " ()"; - let translw = game.babele.translate(compendiumName, { name: s1 }, true).name; - if (translw != s1) { - let res2 = re.exec(translw); - transl = res2[1] + "(" + subword + ")"; - } else { - s1 = res[1].trim() + " ( )"; - translw = game.babele.translate(compendiumName, { name: s1 }, true).name; - let res2 = re.exec(translw); - transl = res2[1] + "(" + subword + ")"; + for (let compData of validCompendiums) { + let transl = game.babele.translate(compData.metadata.id, { name: skills_list[i] }, true).name; + if (!transl) transl = skills_list[i] + //console.log("List ...", skills_list[i]); + if (transl == skills_list[i]) { + let res = re.exec(skills_list[i]); + if (res) { + //console.log("Matched/split:", res[1], res[2]); + let subword = game.i18n.localize(res[2].trim()); + let s1 = res[1].trim() + " ()"; + let translw = game.babele.translate(compData.metadata.id, { name: s1 }, true).name; + if (translw != s1) { + let res2 = re.exec(translw); + transl = res2[1] + "(" + subword + ")"; + } else { + s1 = res[1].trim() + " ( )"; + translw = game.babele.translate(compData.metadata.id, { name: s1 }, true).name; + let res2 = re.exec(translw); + transl = res2[1] + "(" + subword + ")"; + } } } + skills_list[i] = transl; + if (transl?.system) + break; } - skills_list[i] = transl; } } return skills_list; @@ -234,39 +235,40 @@ Hooks.once('init', () => { }, "career_talents": (talents_list) => { - let compendiumName = 'wfrp4e-core.talents' // Per default - if (game.system.version.match("7.")) { - compendiumName = 'wfrp4e-core.items' - } + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent") let i; if (talents_list) { let len = talents_list.length; let re = /(.*)\((.*)\)/i; for (i = 0; i < len; i++) { - let transl = game.babele.translate(compendiumName, { name: talents_list[i] }, true).name; - if (!transl) transl = talents_list[i] - if (transl == talents_list[i]) { - let res = re.exec(talents_list[i]); - if (res) { - //console.log("Matched/split:", res[1], res[2]); - let subword = game.i18n.localize(res[2].trim()); - let s1 = res[1].trim(); // No () in talents table - let translw = game.babele.translate(compendiumName, { name: s1 }, true).name; - if (translw != s1) { - transl = translw + " (" + subword + ")"; - } else { - s1 = res[1].trim() + " ( )"; - translw = game.babele.translate(compendiumName, { name: s1 }, true).name; - let res2 = re.exec(translw); - if (res2) { - transl = res2[1] + " (" + subword + ")"; + for (let compData of validCompendiums) { + let transl = game.babele.translate(compData.metadata.id, { name: talents_list[i] }, true).name; + if (!transl) transl = talents_list[i] + if (transl == talents_list[i]) { + let res = re.exec(talents_list[i]); + if (res) { + //console.log("Matched/split:", res[1], res[2]); + let subword = game.i18n.localize(res[2].trim()); + let s1 = res[1].trim(); // No () in talents table + let translw = game.babele.translate(compData.metadata.id, { name: s1 }, true).name; + if (translw != s1) { + transl = translw + " (" + subword + ")"; } else { - transl = translw + s1 = res[1].trim() + " ( )"; + translw = game.babele.translate(compData.metadata.id, { name: s1 }, true).name; + let res2 = re.exec(translw); + if (res2) { + transl = res2[1] + " (" + subword + ")"; + } else { + transl = translw + } } } } + talents_list[i] = transl; + if (transl?.system) + break; } - talents_list[i] = transl; } } return talents_list; @@ -313,30 +315,19 @@ Hooks.once('init', () => { name_en = res[1]; // Get the root traits name special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword } - let compendiumName = 'wfrp4e-core.traits' // Per default - if (game.system.version.match("7.")) { - compendiumName = 'wfrp4e-core.items' - } - let trait_fr = game.babele.translate(compendiumName, { name: name_en }, true); - //console.log(">>>>> Trait ?", name_en, nbt, trait_fr, trait_fr.name, special); - if (trait_fr?.name) { - trait_fr.name = trait_fr.name || trait_en.name - trait_en.name = nbt + trait_fr.name + special; - } - if (trait_fr.system?.description?.value) { - trait_en.system.description.value = trait_fr.system.description.value; - } else if (game.modules.get('wfrp4e-eis')) { // No description in the FR compendium -> test other compendium if presenr - trait_fr = game.babele.translate('wfrp4e-eis.items', { name: name_en }, true); - if (trait_fr?.name) { - trait_en.name = nbt + trait_fr.name + special + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("trait") + for (let compData of validCompendiums) { + let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true) + if (trait_fr?.system) { + trait_fr.name = trait_fr.name || trait_en.name + trait_en.name = nbt + trait_fr.name + special; + trait_en.system.description.value = trait_fr.system.description.value; + if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it + //console.log("Translating : ", trait_en.system.specification.value); + trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim()); + } + break // Translation has been found, skip other compendiums } - if (trait_fr.system?.description?.value) { - trait_en.system.description.value = trait_fr.system.description.value - } - } - if (trait_en.system?.specification && isNaN(trait_en.system.specification.value)) { // This is a string, so translate it - //console.log("Translating : ", trait_en.system.specification.value); - trait_en.system.specification.value = game.i18n.localize(trait_en.system.specification.value.trim()); } } else if (trait_en.type == "skill") { if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside @@ -345,50 +336,45 @@ Hooks.once('init', () => { name_en = res[1].trim(); // Get the root skill name special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword } - let compendiumSkills = 'wfrp4e-core.skills' // Per default - if (game.system.version.match("7.")) { - compendiumSkills = 'wfrp4e-core.items' - } - let trait_fr = game.babele.translate(compendiumSkills, { name: name_en }, true); - //console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr); - trait_fr.name = trait_fr.name || name_en - if (trait_fr.name != name_en) { // Translation OK - trait_en.name = trait_fr.name + special; - if (trait_fr.system) { + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill") + for (let compData of validCompendiums) { + let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true) + if (trait_fr?.system) { + //console.log(">>>>> Skill ?", name_en, special, trait_fr.name, trait_fr); + trait_fr.name = trait_fr.name || name_en + trait_en.name = trait_fr.name + special; trait_en.system.description.value = trait_fr.system.description.value; + break; // Translation has been found, skip other compendiums } } - } else if (trait_en.type == "prayer") { - let compendiumPrayers = 'wfrp4e-core.prayers' // Per default - if (game.system.version.match("7.")) { - compendiumPrayers = 'wfrp4e-core.items' + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("prayer") + for (let compData of validCompendiums) { + let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true) + if (trait_fr?.system) { + //DEBUG : console.log(">>>>> Prayer ?", name_en, special, trait_fr.name ); + trait_fr.name = trait_fr.name || name_en + trait_en.name = trait_fr.name + special; + if (trait_fr.system?.description?.value) { + trait_en.system.description.value = trait_fr.system.description.value; + } + break; + } } - let trait_fr = game.babele.translate(compendiumPrayers, { name: name_en }, true); - //console.log(">>>>> Prayer ?", name_en, special, trait_fr.name ); - trait_fr.name = trait_fr.name || name_en - trait_en.name = trait_fr.name + special; - if (trait_fr.system?.description?.value) - trait_en.system.description.value = trait_fr.system.description.value; - } else if (trait_en.type == "spell") { - let compendiumSpells = 'wfrp4e-core.spells' // Per default - if (game.system.version.match("7.")) { - compendiumSpells = 'wfrp4e-core.items' + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("spell") + for (let compData of validCompendiums) { + let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true) + if (trait_fr?.system) { + trait_fr.name = trait_fr.name || name_en + //DEBUG : console.log(">>>>> Spell ?", name_en, special, trait_fr.name ); + trait_en.name = trait_fr.name + special; + if (trait_fr.system?.description?.value) { + trait_en.system.description.value = trait_fr.system.description.value; + } + break; + } } - let trait_fr = game.babele.translate(compendiumSpells, { name: name_en }, true) - if (trait_fr.name == name_en) { // If no translation, test eisspells - trait_fr = game.babele.translate('wfrp4e-eis.eisspells', { name: name_en }, true); - } - if (trait_fr.name == name_en) { // If no translation, test unofficial grimoire - trait_fr = game.babele.translate('wfrp4e-unofficial-grimoire.ug-spells', { name: name_en }, true); - } - trait_fr.name = trait_fr.name || name_en - //console.log(">>>>> Spell ?", name_en, special, trait_fr.name ); - trait_en.name = trait_fr.name + special; - if (trait_fr.system?.description?.value) - trait_en.system.description.value = trait_fr.system.description.value; - } else if (trait_en.type == "talent") { if (name_en.includes("(") && name_en.includes(")")) { // Then process specific skills name with (xxxx) inside let re = /(.*) +\((.*)\)/i; @@ -396,45 +382,44 @@ Hooks.once('init', () => { name_en = res[1].trim(); // Get the root talent name, no parenthesis this time... special = " (" + game.i18n.localize(res[2].trim()) + ")"; // And the special keyword } - let compendiumTalents = 'wfrp4e-core.talents' // Per default - if (game.system.version.match("7.")) { - compendiumTalents = 'wfrp4e-core.items' - } - let trait_fr = game.babele.translate(compendiumTalents, { name: name_en }, true) - trait_fr.name = trait_fr.name || name_en // Security since babele v10 - //console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name); - if (trait_fr.name != "Sprinter" && trait_fr.name == name_en) { // If no translation, test ugtalents - trait_fr = game.babele.translate('wfrp4e-unofficial-grimoire.ug-careerstalentstraits', { name: name_en }, true); - trait_fr.name = trait_fr.name || name_en // Security since babele v10 - } - if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated! - trait_en.name = trait_fr.name.trim() + special - if (trait_fr.system?.description?.value) { // Why ??? - trait_en.system.description.value = trait_fr.system.description.value; + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("talent") + for (let compData of validCompendiums) { + let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true) + if (trait_fr?.system) { + trait_fr.name = trait_fr.name || name_en // Security since babele v10 + //console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name); + if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated! + trait_en.name = trait_fr.name.trim() + special + if (trait_fr.system?.description?.value) { // Why ??? + trait_en.system.description.value = trait_fr.system.description.value; + } + } + break; } } } else if (trait_en.type == "career") { - let compendiumCareers = 'wfrp4e-core.careers' // Per default - if (game.system.version.match("7.")) { - compendiumCareers = 'wfrp4e-core.items' + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career") + for (let compData of validCompendiums) { + let career_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true); + if (career_fr?.system) { + trait_en.name = career_fr.name || trait_en.name + // DEBG: console.log(">>>>> Career ?", career_fr.name ); + trait_en.system = duplicate(career_fr.system); + break; + } } - let career_fr = game.babele.translate(compendiumCareers, { name: name_en }, true); - trait_en.name = career_fr.name || trait_en.name - //console.log(">>>>> Career ?", career_fr.name ); - if (career_fr?.system) { - trait_en.system = duplicate(career_fr.system); - } - } else if (trait_en.type == "trapping" || trait_en.type == "weapon" || trait_en.type == "armour" || trait_en.type == "container" || trait_en.type == "money") { - let compendiumTrappings = 'wfrp4e-core.trappings' // Per default - if (game.system.version.match("7.")) { - compendiumTrappings = 'wfrp4e-core.items' - } - let trapping_fr = game.babele.translate(compendiumTrappings, { name: name_en }, true); - //console.log(">>>>> Trapping ?", name_en, trapping_fr.name); - trait_en.name = trapping_fr.name || trait_en.name - if (trapping_fr.system?.description?.value) { - trait_en.system.description.value = trapping_fr.system.description.value + let validCompendiums = game.wfrp4e.tags.getPacksWithTag(["trapping"], ["weapon", "armour", "container", "money"]) + for (let compData of validCompendiums) { + let trapping_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true); + if (trapping_fr?.system) { + //console.log(">>>>> Trapping ?", name_en, trapping_fr.name); + trait_en.name = trapping_fr.name || trait_en.name + if (trapping_fr.system?.description?.value) { + trait_en.system.description.value = trapping_fr.system.description.value + } + break; + } } } } @@ -486,18 +471,13 @@ Hooks.once('init', () => { } //console.log("Carre groupe : ", value ) // Per default - let compendiumCareers = 'wfrp4e-core.careers' // Per default - if (game.system.version.match("7.")) { - compendiumCareers = 'wfrp4e-core.items' - } - let compendium = game.packs.find(p => p.collection === compendiumCareers); - if (compendium) { - let newName = game.babele.translate(compendiumCareers, { name: value }).name + let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career") + for (let compData of validCompendiums) { + let newName = game.babele.translate(compData.metadata.id, { name: value }).name if (!newName) newName = value return newName - } else { - ui.notifications.error("Impossible de trouver la carrière " + value + ". Elle n'est probablement pas traduite.", { permanent: true }) } + ui.notifications.error("Impossible de trouver la carrière " + value + ". Elle n'est probablement pas traduite.", { permanent: true }) return value }, diff --git a/fr.json b/fr.json index 7b10595..84226f0 100644 --- a/fr.json +++ b/fr.json @@ -2308,5 +2308,7 @@ "TYPES.Item.weapon":"Arme", "Badger": "Blaireau", - "Badgers": "Blaireaux" + "Badgers": "Blaireaux", + "Choose one": "A choisir", + "Bestial": "Bestial" } diff --git a/module.json b/module.json index 0d5919c..23dfcc6 100644 --- a/module.json +++ b/module.json @@ -8,7 +8,7 @@ } ], "url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr", - "version": "7.0.9", + "version": "7.0.10", "esmodules": [ "babele-register.js", "addon-register.js", @@ -160,7 +160,7 @@ } ], "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json", - "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.9.zip", + "download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-7.0.10.zip", "id": "wh4-fr-translation", "compatibility": { "minimum": "10", @@ -182,4 +182,4 @@ } ] } -} \ No newline at end of file +} diff --git a/tory | grep github b/tory | grep github new file mode 100644 index 0000000..50a9202 --- /dev/null +++ b/tory | grep github @@ -0,0 +1,298 @@ + + SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS + + Commands marked with * may be preceded by a number, _N. + Notes in parentheses indicate the behavior if _N is given. + A key preceded by a caret indicates the Ctrl key; thus ^K is ctrl-K. + + h H Display this help. + q :q Q :Q ZZ Exit. + --------------------------------------------------------------------------- + + MMOOVVIINNGG + + e ^E j ^N CR * Forward one line (or _N lines). + y ^Y k ^K ^P * Backward one line (or _N lines). + f ^F ^V SPACE * Forward one window (or _N lines). + b ^B ESC-v * Backward one window (or _N lines). + z * Forward one window (and set window to _N). + w * Backward one window (and set window to _N). + ESC-SPACE * Forward one window, but don't stop at end-of-file. + d ^D * Forward one half-window (and set half-window to _N). + u ^U * Backward one half-window (and set half-window to _N). + ESC-) RightArrow * Right one half screen width (or _N positions). + ESC-( LeftArrow * Left one half screen width (or _N positions). + ESC-} ^RightArrow Right to last column displayed. + ESC-{ ^LeftArrow Left to first column. + F Forward forever; like "tail -f". + ESC-F Like F but stop when search pattern is found. + r ^R ^L Repaint screen. + R Repaint screen, discarding buffered input. + --------------------------------------------------- + Default "window" is the screen height. + Default "half-window" is half of the screen height. + --------------------------------------------------------------------------- + + SSEEAARRCCHHIINNGG + + /_p_a_t_t_e_r_n * Search forward for (_N-th) matching line. + ?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line. + n * Repeat previous search (for _N-th occurrence). + N * Repeat previous search in reverse direction. + ESC-n * Repeat previous search, spanning files. + ESC-N * Repeat previous search, reverse dir. & spanning files. + ESC-u Undo (toggle) search highlighting. + ESC-U Clear search highlighting. + &_p_a_t_t_e_r_n * Display only matching lines. + --------------------------------------------------- + A search pattern may begin with one or more of: + ^N or ! Search for NON-matching lines. + ^E or * Search multiple files (pass thru END OF FILE). + ^F or @ Start search at FIRST file (for /) or last file (for ?). + ^K Highlight matches, but don't move (KEEP position). + ^R Don't use REGULAR EXPRESSIONS. + ^S _n Search for match in _n-th parenthesized subpattern. + ^W WRAP search if no match found. + --------------------------------------------------------------------------- + + JJUUMMPPIINNGG + + g < ESC-< * Go to first line in file (or line _N). + G > ESC-> * Go to last line in file (or line _N). + p % * Go to beginning of file (or _N percent into file). + t * Go to the (_N-th) next tag. + T * Go to the (_N-th) previous tag. + { ( [ * Find close bracket } ) ]. + } ) ] * Find open bracket { ( [. + ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>. + ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>. + --------------------------------------------------- + Each "find close bracket" command goes forward to the close bracket + matching the (_N-th) open bracket in the top line. + Each "find open bracket" command goes backward to the open bracket + matching the (_N-th) close bracket in the bottom line. + + m_<_l_e_t_t_e_r_> Mark the current top line with . + M_<_l_e_t_t_e_r_> Mark the current bottom line with . + '_<_l_e_t_t_e_r_> Go to a previously marked position. + '' Go to the previous position. + ^X^X Same as '. + ESC-m_<_l_e_t_t_e_r_> Clear a mark. + --------------------------------------------------- + A mark is any upper-case or lower-case letter. + Certain marks are predefined: + ^ means beginning of the file + $ means end of the file + --------------------------------------------------------------------------- + + CCHHAANNGGIINNGG FFIILLEESS + + :e [_f_i_l_e] Examine a new file. + ^X^V Same as :e. + :n * Examine the (_N-th) next file from the command line. + :p * Examine the (_N-th) previous file from the command line. + :x * Examine the first (or _N-th) file from the command line. + :d Delete the current file from the command line list. + = ^G :f Print current file name. + --------------------------------------------------------------------------- + + MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS + + -_<_f_l_a_g_> Toggle a command line option [see OPTIONS below]. + --_<_n_a_m_e_> Toggle a command line option, by name. + __<_f_l_a_g_> Display the setting of a command line option. + ___<_n_a_m_e_> Display the setting of an option, by name. + +_c_m_d Execute the less cmd each time a new file is examined. + + !_c_o_m_m_a_n_d Execute the shell command with $LESSSHELL. + #_c_o_m_m_a_n_d Execute the shell command, expanded like a prompt. + |XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command. + s _f_i_l_e Save input to a file. + v Edit the current file with $VISUAL or $EDITOR. + V Print version number of "less". + --------------------------------------------------------------------------- + + OOPPTTIIOONNSS + + Most options may be changed either on the command line, + or from within less by using the - or -- command. + Options may be given in one of two forms: either a single + character preceded by a -, or a name preceded by --. + + -? ........ --help + Display help (from command line). + -a ........ --search-skip-screen + Search skips current screen. + -A ........ --SEARCH-SKIP-SCREEN + Search starts just after target line. + -b [_N] .... --buffers=[_N] + Number of buffers. + -B ........ --auto-buffers + Don't automatically allocate buffers for pipes. + -c ........ --clear-screen + Repaint by clearing rather than scrolling. + -d ........ --dumb + Dumb terminal. + -D xx_c_o_l_o_r . --color=xx_c_o_l_o_r + Set screen colors. + -e -E .... --quit-at-eof --QUIT-AT-EOF + Quit at end of file. + -f ........ --force + Force open non-regular files. + -F ........ --quit-if-one-screen + Quit if entire file fits on first screen. + -g ........ --hilite-search + Highlight only last match for searches. + -G ........ --HILITE-SEARCH + Don't highlight any matches for searches. + -h [_N] .... --max-back-scroll=[_N] + Backward scroll limit. + -i ........ --ignore-case + Ignore case in searches that do not contain uppercase. + -I ........ --IGNORE-CASE + Ignore case in all searches. + -j [_N] .... --jump-target=[_N] + Screen position of target lines. + -J ........ --status-column + Display a status column at left edge of screen. + -k [_f_i_l_e] . --lesskey-file=[_f_i_l_e] + Use a lesskey file. + -K ........ --quit-on-intr + Exit less in response to ctrl-C. + -L ........ --no-lessopen + Ignore the LESSOPEN environment variable. + -m -M .... --long-prompt --LONG-PROMPT + Set prompt style. + -n ......... --line-numbers + Suppress line numbers in prompts and messages. + -N ......... --LINE-NUMBERS + Display line number at start of each line. + -o [_f_i_l_e] . --log-file=[_f_i_l_e] + Copy to log file (standard input only). + -O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e] + Copy to log file (unconditionally overwrite). + -p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n] + Start at pattern (from command line). + -P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t] + Define new prompt. + -q -Q .... --quiet --QUIET --silent --SILENT + Quiet the terminal bell. + -r -R .... --raw-control-chars --RAW-CONTROL-CHARS + Output "raw" control characters. + -s ........ --squeeze-blank-lines + Squeeze multiple blank lines. + -S ........ --chop-long-lines + Chop (truncate) long lines rather than wrapping. + -t [_t_a_g] .. --tag=[_t_a_g] + Find a tag. + -T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e] + Use an alternate tags file. + -u -U .... --underline-special --UNDERLINE-SPECIAL + Change handling of backspaces, tabs and carriage returns. + -V ........ --version + Display the version number of "less". + -w ........ --hilite-unread + Highlight first new line after forward-screen. + -W ........ --HILITE-UNREAD + Highlight first new line after any forward movement. + -x [_N[,...]] --tabs=[_N[,...]] + Set tab stops. + -X ........ --no-init + Don't use termcap init/deinit strings. + -y [_N] .... --max-forw-scroll=[_N] + Forward scroll limit. + -z [_N] .... --window=[_N] + Set size of window. + -" [_c[_c]] . --quotes=[_c[_c]] + Set shell quote characters. + -~ ........ --tilde + Don't display tildes after end of file. + -# [_N] .... --shift=[_N] + Set horizontal scroll amount (0 = one half screen width). + --exit-follow-on-close + Exit F command on a pipe when writer closes pipe. + --file-size + Automatically determine the size of the input file. + --follow-name + The F command changes files if the input file is renamed. + --header=[_N[,_M]] + Use N lines and M columns to display file headers. + --incsearch + Search file as each pattern character is typed in. + --intr=_C + Use _C instead of ^X to interrupt a read. + --line-num-width=_N + Set the width of the -N line number field to _N characters. + --modelines=_N + Read _N lines from the input file and look for vim modelines. + --mouse + Enable mouse input. + --no-keypad + Don't send termcap keypad init/deinit strings. + --no-histdups + Remove duplicates from command history. + --no-number-headers + Don't give line numbers to header lines. + --no-search-headers + Don't search in header lines or columns. + --no-vbell + Disable the terminal's visual bell. + --redraw-on-quit + Redraw final screen when quitting. + --rscroll=_C + Set the character used to mark truncated lines. + --save-marks + Retain marks across invocations of less. + --search-options=[EFKNRW-] + Set default options for every search. + --show-preproc-errors + Display a message if preprocessor exits with an error status. + --proc-backspace + Process backspaces for bold/underline. + --SPECIAL-BACKSPACE + Treat backspaces as control characters. + --proc-return + Delete carriage returns before newline. + --SPECIAL-RETURN + Treat carriage returns as control characters. + --proc-tab + Expand tabs to spaces. + --SPECIAL-TAB + Treat tabs as control characters. + --status-col-width=_N + Set the width of the -J status column to _N characters. + --status-line + Highlight or color the entire line containing a mark. + --use-backslash + Subsequent options use backslash as escape char. + --use-color + Enables colored text. + --wheel-lines=_N + Each click of the mouse wheel moves _N lines. + --wordwrap + Wrap lines at spaces. + + + --------------------------------------------------------------------------- + + LLIINNEE EEDDIITTIINNGG + + These keys can be used to edit text being entered + on the "command line" at the bottom of the screen. + + RightArrow ..................... ESC-l ... Move cursor right one character. + LeftArrow ...................... ESC-h ... Move cursor left one character. + ctrl-RightArrow ESC-RightArrow ESC-w ... Move cursor right one word. + ctrl-LeftArrow ESC-LeftArrow ESC-b ... Move cursor left one word. + HOME ........................... ESC-0 ... Move cursor to start of line. + END ............................ ESC-$ ... Move cursor to end of line. + BACKSPACE ................................ Delete char to left of cursor. + DELETE ......................... ESC-x ... Delete char under cursor. + ctrl-BACKSPACE ESC-BACKSPACE ........... Delete word to left of cursor. + ctrl-DELETE .... ESC-DELETE .... ESC-X ... Delete word under cursor. + ctrl-U ......... ESC (MS-DOS only) ....... Delete entire line. + UpArrow ........................ ESC-k ... Retrieve previous command line. + DownArrow ...................... ESC-j ... Retrieve next command line. + TAB ...................................... Complete filename & cycle. + SHIFT-TAB ...................... ESC-TAB Complete filename & reverse cycle. + ctrl-L ................................... Complete filename, list all.