diff --git a/Cargo.toml b/Cargo.toml index db48f98..11fd390 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,3 +1,6 @@ [workspace] -members = [ "codebook","codebook-lsp", "codebook-zed"] +members = ["codebook", "codebook-lsp", "codebook-zed"] resolver = "2" + +[profile.test] +env = { RUST_LOG = "debug" } diff --git a/README.md b/README.md index 84f52bc..e513e03 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,23 @@ Codebook is a spellchecker for code. It binds together the venerable Tree Sitter Codebook is being developed and not yet ready for public (or private, really) use. Hit the Star button to follow for updates though. +## Goals + +Spellchecking is complicated and opinions about how it should be done, especially with code, differs. This section is about the trade offs that steer Codebook's decisions. + +### Privacy + +No remote calls for spellchecking or analytics. Once dictionaries are cached, Codebook needs to be usable offline. Codebook will never send the contents of files to a remote server. + +### Low noise/High signal + +Codebook should only highlight words that users have control over. For example, a misspelled word in an imported function should not be highlighted as the user can't do anything about it. + +### Efficient + +All features will be weighed against their impact on CPU and memory impact. Codebook should be fast on even low-end hardware to spellcheck on every keystroke. + + ## Features ### Code-aware spell checking diff --git a/codebook-lsp/src/lsp.rs b/codebook-lsp/src/lsp.rs index 12bd00b..e1a67bd 100644 --- a/codebook-lsp/src/lsp.rs +++ b/codebook-lsp/src/lsp.rs @@ -5,21 +5,6 @@ use tower_lsp::{Client, LanguageServer}; use codebook::CodeDictionary; use log::info; -// #[derive(Clone, Debug)] -// pub struct TextRange { -// pub start_line: u32, -// pub start_char: u32, -// pub end_line: u32, -// pub end_char: u32, -// } - -// #[derive(Clone, Debug)] -// pub struct SpellCheckResult { -// pub word: String, -// pub suggestions: Vec, -// pub locations: Vec, -// } - #[derive(Debug)] pub struct Backend { pub client: Client, @@ -108,8 +93,9 @@ impl Backend { code_description: None, source: Some("Codebook".to_string()), message: format!( - "Possible spelling error: '{}'. Suggestions: {:?}", - res.word, res.suggestions + "Possible spelling error: '{}'. Suggestions: {}", + res.word, + res.suggestions.join(", ") ), related_information: None, tags: None, diff --git a/codebook/src/downloader.rs b/codebook/src/downloader.rs index 815063a..30ab854 100644 --- a/codebook/src/downloader.rs +++ b/codebook/src/downloader.rs @@ -68,7 +68,7 @@ impl CacheMetadata { } } -/// A downloader for dictionaries from a remote GitHub repository (by default +/// A down-loader for dictionaries from a remote GitHub repository (by default /// https://github.com/blopker/dictionaries), storing them in a local cache /// and avoiding re-download if unchanged. /// diff --git a/codebook/src/lib.rs b/codebook/src/lib.rs index 6e2584a..a360059 100644 --- a/codebook/src/lib.rs +++ b/codebook/src/lib.rs @@ -1,11 +1,12 @@ pub mod downloader; mod queries; mod splitter; +use log::info; use lru::LruCache; use crate::queries::{ - get_language_name_from_filename, get_language_setting, LanguageSetting, LanguageType, - COMMON_DICTIONARY, + get_common_dictionary, get_language_name_from_filename, get_language_setting, LanguageSetting, + LanguageType, }; use std::{ collections::{HashMap, HashSet}, @@ -54,7 +55,7 @@ impl CodeDictionary { let dict = spellbook::Dictionary::new(&aff, &dic) .map_err(|e| format!("Dictionary parse error: {}", e))?; let mut custom_dictionary: HashSet = HashSet::new(); - for word in COMMON_DICTIONARY.lines() { + for word in get_common_dictionary() { custom_dictionary.insert(word.to_string()); } Ok(CodeDictionary { @@ -85,10 +86,10 @@ impl CodeDictionary { } pub fn suggest(&self, word: &str) -> Vec { - println!("Checking Cache: {:?}", word); + info!("Checking Cache: {:?}", word); // First try to get from cache with write lock since get() needs to modify LRU order if let Some(suggestions) = self.suggestion_cache.write().unwrap().get_mut(word) { - println!("Cache hit for {:?}", word); + info!("Cache hit for {:?}", word); return suggestions.clone(); } @@ -278,13 +279,13 @@ impl CodeDictionary { let current_line = node_start.row as u32; let current_column = node_start.column as u32; let words = self.get_words_from_text(node_text); - println!("Found Capture:: {node_text:?}"); - println!("Words:: {words:?}"); - println!("Column: {current_column}"); - println!("Line: {current_line}"); + info!("Found Capture:: {node_text:?}"); + info!("Words:: {words:?}"); + info!("Column: {current_column}"); + info!("Line: {current_line}"); for (word_text, (text_start_char, text_line)) in words { let split = splitter::split_camel_case(&word_text); - println!("Checking: {:?}", split); + info!("Checking: {:?}", split); for split_word in split { if !self.check(&split_word.word) { let offset = if text_line == 0 { current_column } else { 0 }; @@ -327,12 +328,11 @@ mod lib_tests { static EXTRA_WORDS: &'static [&'static str] = &["http", "https", "www", "viewport", "UTF"]; fn get_processor() -> CodeDictionary { - let mut cdict = - CodeDictionary::new("./tests/en_index.aff", "./tests/en_index.dic").unwrap(); + let dict = CodeDictionary::new("./tests/en_index.aff", "./tests/en_index.dic").unwrap(); for word in EXTRA_WORDS { - cdict.add_to_dictionary(word); + dict.add_to_dictionary(word); } - cdict + dict } #[test] @@ -347,7 +347,7 @@ mod lib_tests { #[test] fn test_get_words_from_text() { - let cdict = CodeDictionary::new("./tests/en_index.aff", "./tests/en_index.dic").unwrap(); + let dict = CodeDictionary::new("./tests/en_index.aff", "./tests/en_index.dic").unwrap(); let text = r#" HelloWorld calc_wrld I'm a contraction, don't ignore me @@ -369,7 +369,7 @@ mod lib_tests { ("rd", (23, 3)), ("line", (26, 3)), ]; - let words = cdict.get_words_from_text(text); + let words = dict.get_words_from_text(text); println!("{:?}", words); for (i, w) in expected.into_iter().enumerate() { assert_eq!(words[i], (w.0.to_string(), w.1)); diff --git a/codebook/src/queries.rs b/codebook/src/queries.rs index b6e9752..ffe5ff9 100644 --- a/codebook/src/queries.rs +++ b/codebook/src/queries.rs @@ -28,7 +28,7 @@ impl LanguageType { } } -pub static COMMON_DICTIONARY: &str = include_str!("../../wordlists/common.txt"); +static COMMON_DICTIONARY: &str = include_str!("../../word_lists/combined.gen.txt"); // Use https://intmainreturn0.com/ts-visualizer/ to help with writing grammar queries pub static LANGUAGE_SETTINGS: [LanguageSetting; 7] = [ LanguageSetting { @@ -41,6 +41,10 @@ pub static LANGUAGE_SETTINGS: [LanguageSetting; 7] = [ pattern: (identifier) @identifier) (let_declaration pattern: (identifier) @identifier) + (struct_item + name: (type_identifier) @identifier) + (field_declaration + name: (field_identifier) @identifier) (line_comment) @comment (string_content) @string (char_literal) @string @@ -178,3 +182,7 @@ pub fn get_language_name_from_filename(filename: &str) -> Option { } None } + +pub fn get_common_dictionary() -> impl Iterator { + COMMON_DICTIONARY.lines().filter(|l| !l.contains('#')) +} diff --git a/codebook/tests/test_rust.rs b/codebook/tests/test_rust.rs index 638f465..03f3fda 100644 --- a/codebook/tests/test_rust.rs +++ b/codebook/tests/test_rust.rs @@ -1,9 +1,11 @@ use codebook::{SpellCheckResult, TextRange}; mod utils; -// im a bd speler +use utils::init_logging; + #[test] fn test_rust_simple() { + init_logging(); let processor = utils::get_processor(); let sample_text = r#" fn calculat_user_age(bithDate: String) -> u32 { @@ -25,6 +27,7 @@ fn test_rust_simple() { #[test] fn test_rust_comment_location() { + init_logging(); let sample_rust = r#" // Comment with a typo: mment "#; @@ -44,3 +47,56 @@ fn test_rust_comment_location() { assert_eq!(misspelled, expected); assert!(misspelled[0].locations.len() == 1); } + +#[test] +fn test_rust_struct() { + init_logging(); + let sample_rust = r#" + pub struct BadSpeler { + /// Terrible spelling: dwnloader + pub dataz: String, + } + "#; + let expected = vec![ + SpellCheckResult::new( + "Speler".to_string(), + vec!["Speer", "Speller", "Spewer", "Spengler", "Peeler"], + vec![TextRange { + start_char: 22, + end_char: 28, + start_line: 1, + end_line: 1, + }], + ), + SpellCheckResult::new( + "dwnloader".to_string(), + vec!["loader"], + vec![TextRange { + start_char: 35, + end_char: 44, + start_line: 2, + end_line: 2, + }], + ), + SpellCheckResult::new( + "dataz".to_string(), + vec!["data", "data z"], + vec![TextRange { + start_char: 16, + end_char: 21, + start_line: 3, + end_line: 3, + }], + ), + ]; + let processor = utils::get_processor(); + let misspelled = processor.spell_check(sample_rust, "rust").to_vec(); + println!("Misspelled words: {misspelled:?}"); + for expect in expected.iter() { + println!("Expecting {}", expect.word); + let result = misspelled.iter().find(|r| r.word == expect.word).unwrap(); + assert_eq!(result.word, expect.word); + assert_eq!(result.suggestions, expect.suggestions); + assert_eq!(result.locations, expect.locations); + } +} diff --git a/codebook/tests/utils/mod.rs b/codebook/tests/utils/mod.rs index ac3011c..0711860 100644 --- a/codebook/tests/utils/mod.rs +++ b/codebook/tests/utils/mod.rs @@ -8,3 +8,7 @@ pub fn get_processor() -> CodeDictionary { } cdict } + +pub fn init_logging() { + let _ = env_logger::builder().is_test(true).try_init(); +} diff --git a/scripts/generate_combined_wordlist.ts b/scripts/generate_combined_wordlist.ts new file mode 100644 index 0000000..0b170d3 --- /dev/null +++ b/scripts/generate_combined_wordlist.ts @@ -0,0 +1,39 @@ +// a script that gets all the wordLists in word_lists (that don't have .gen.) and combines them into a single file, de-duping the words. +// Output is written to combined.gen.txt +// input list format: +// --- +// word1 +// word2 +// word3 +// --- + +import fs from "node:fs"; +import path from "node:path"; + +const wordListsPath = path.join(__dirname, "..", "word_lists"); +const wordLists = fs.readdirSync(wordListsPath); + +const combined = new Set(); + +for (const file of wordLists) { + if (!file.endsWith(".gen.txt")) { + const words = fs + .readFileSync(path.join(wordListsPath, file), "utf-8") + .split("\n"); + for (const word of words) { + if (word.length > 1) { + combined.add(word); + } + } + } +} + +const combinedPath = path.join(wordListsPath, "combined.gen.txt"); +fs.writeFileSync( + combinedPath, + "# Generated by generate_combined_wordlist.ts. Do not edit.\n", +); +fs.writeFileSync(combinedPath, Array.from(combined).toSorted().join("\n"), { + flag: "a", +}); +console.log("Combined word list written to", combinedPath); diff --git a/scripts/get_wordlists.ts b/scripts/get_wordlists.ts index 98f1146..b931ba4 100644 --- a/scripts/get_wordlists.ts +++ b/scripts/get_wordlists.ts @@ -1,4 +1,4 @@ -// a script that gets all the wordlists for codebook and writes them to a file +// a script that gets all the wordLists for codebook and writes them to a file // data in https://github.com/blopker/common-words/tree/master/web/static/data // Use `fetch` to get the data // folder format: [programming_language]/index.json @@ -39,68 +39,48 @@ interface WordSummary { } const languages = ["rs", "py", "java", "html", "css", "go", "js"]; -const wordlistsPath = path.join(__dirname, "..", "wordlists"); +const wordListsPath = path.join(__dirname, "..", "word_lists"); // ensure the folder exists -fs.mkdirSync(wordlistsPath, { recursive: true }); -// map of language to wordlist +fs.mkdirSync(wordListsPath, { recursive: true }); +// map of language to wordList // key: language in data repo, value: name in queries.rs -const commonWords: Set = new Set(); - -function addToCommonWords(data: WordSummary) { - commonWords.add(data.text); -} - const fetch = async (url: string) => { const response = await globalThis.fetch(url); return response.json(); }; -const getWordlist = async (language: string) => { +const getWordList = async (language: string) => { const url = `https://raw.githubusercontent.com/blopker/common-words/master/web/static/data/${language}/index.json`; - let data = (await fetch(url)) as WordSummary[]; - data = data - .map((d) => { - return { - ...d, - text: cleanWord(d.text.toLowerCase()), - }; + const data = (await fetch(url)) as WordSummary[]; + const words = data + .flatMap((d) => { + return cleanWord(d.text.toLowerCase()); }) - .filter((d) => d.text.length > 0); - // dedupe - const seen = new Set(); - data = data.filter((item) => { - if (seen.has(item.text)) { - return false; - } - seen.add(item.text); - return true; - }); - for (const item of data) { - addToCommonWords(item); - } - const words = data.map((item: WordSummary) => item.text); - return words.toSorted(); + .filter((d) => d.length > 1); + const set = new Set(words); // De-dupe + return Array.from(set).toSorted(); }; -const writeWordlist = async (language: string) => { - const words = await getWordlist(language); - const wordlistPath = path.join(wordlistsPath, `${language}.txt`); - fs.writeFileSync(wordlistPath, words.join("\n")); +const writeWordList = async (language: string) => { + const words = await getWordList(language); + const wordListPath = path.join(wordListsPath, `${language}.txt`); + fs.writeFileSync(wordListPath, words.join("\n")); }; const cleanWord = (word: string) => { - // strip numbers and special characters - return word.replace(/[^a-zA-Z]/g, ""); + // split on underscore, strip numbers and special characters + const words = word.split(/[_\W]/); + for (let i = 0; i < words.length; i++) { + words[i] = words[i].replace(/[^a-zA-Z]/g, ""); + } + return words; }; const main = async () => { for (const language of languages) { - await writeWordlist(language); + await writeWordList(language); } - const commonWordsPath = path.join(wordlistsPath, "common.txt"); - const commonList = Array.from(commonWords).toSorted(); - fs.writeFileSync(commonWordsPath, commonList.join("\n")); }; main(); diff --git a/word_lists/codebook.txt b/word_lists/codebook.txt new file mode 100644 index 0000000..9c133c3 --- /dev/null +++ b/word_lists/codebook.txt @@ -0,0 +1,10 @@ +cdn +downloader +htm +jsx +linter +lsp +rpc +sha +tsx +webp diff --git a/wordlists/common.txt b/word_lists/combined.gen.txt similarity index 93% rename from wordlists/common.txt rename to word_lists/combined.gen.txt index c2609ca..aec191e 100644 --- a/wordlists/common.txt +++ b/word_lists/combined.gen.txt @@ -1,4 +1,4 @@ -a +# Generated by generate_combined_wordlist.ts. Do not edit. aaa ab abbr @@ -8,7 +8,6 @@ about above abs absolute -absoluteimport abspath abstract accent @@ -29,13 +28,10 @@ actually adapter adb add -addargument addclass -addconstructor added addeventlistener additional -addmethod addon addr address @@ -47,12 +43,9 @@ agent ajax alert align -alignof all allclasses allclasseslink -allclassesnavbarbottom -allclassesnavbartop allerrs allow allowed @@ -73,7 +66,6 @@ anchor and andreturn android -andthen angular animate animation @@ -117,13 +109,9 @@ arrow arrowthick article as -asbytes aside aslist -asptr -asref assert -asserteq assertequal assertequals assertfalse @@ -134,11 +122,8 @@ assertthat asserttrue assets assign -asslice associated ast -astmap -astutil async at atom @@ -167,7 +152,6 @@ awsutil awt ax axis -b back backbone backdrop @@ -219,7 +203,6 @@ black blank blk block -blockflow blocklist blocklistlast blockly @@ -235,16 +218,14 @@ booleanfield boost bootstrap border -borderbox bordered borrow -borrowmut both bottom bottomnav bound bounds -bowercomponents +bower box br brand @@ -279,7 +260,6 @@ byte bytearrayoutputstream bytebuffer bytes -c cache calc calendar @@ -318,7 +298,6 @@ cc ccc cccccc ccccff -cchar ccx cd cdata @@ -357,7 +336,6 @@ chosen chrome chunk chzn -cint circle class classes @@ -377,7 +355,6 @@ cline clip cljs clone -clong close closed closest @@ -391,13 +368,10 @@ cmp cms cmt cn -cobject code codec codecselfer -codecselfercontainerarrayelem -codecselfercontainerarrayend -codecselfercutf +codecselferc codegen codemap coding @@ -433,7 +407,6 @@ components compositor compute computed -computedvalue concat concurrent condensed @@ -449,22 +422,21 @@ console const constant constants -constellationchan +constellation constr constructor -constructordetail -constructorsummary consts contact contain container +containerarrayelem +containerarrayend containers containing contains content contentcontainer contents -contenttype context continue contrib @@ -481,7 +453,6 @@ correct could count course -courseid cover cpu cr @@ -502,16 +473,13 @@ ctrl ctx ctxt cubic -cuint cur current currently currenttimemillis cursor custom -cvoid cx -d dac daemon danger @@ -535,7 +503,7 @@ dd ddd dddddd de -deadcode +dead debug decl decodable @@ -635,6 +603,7 @@ double down downcast download +downloader doxygen drag draggable @@ -654,12 +623,11 @@ during dword dx dximagetransform -e each ease easing ebebeb -ebmlw +ebml ec eclipse ecx @@ -764,7 +732,6 @@ extensions extern external extra -f fa face facebook @@ -795,8 +762,7 @@ fff ffffff ffi field -fielddescriptorprotolabel -fielddescriptorprototype +fielddescriptorproto fieldnum fields fieldset @@ -867,8 +833,6 @@ frames framework free from -fromref -fromstr fs ftype full @@ -879,7 +843,6 @@ function functions future fx -g ga gallery gaq @@ -913,7 +876,6 @@ gettype getvalue gif github -githubcomgogoprotobufproto given gl global @@ -921,6 +883,7 @@ glog glyphicon glyphicons go +gogo golang goog google @@ -953,7 +916,6 @@ gui guid gulp gwt -h hadoop half halign @@ -993,6 +955,7 @@ hidden hide hierarchy highlight +hint history hljs home @@ -1012,7 +975,6 @@ httpservletrequest httpservletresponse httptest hyper -i ico icon iconerrorencoded @@ -1092,7 +1054,6 @@ interruptedexception interval intn into -intoiter intrinsics intro intstringlen @@ -1114,7 +1075,6 @@ iprot is isabs isarray -isconst isdebugenabled isempty isfunction @@ -1122,12 +1082,7 @@ isinstance isize isnan isnil -isnone -isnull -isok -issome issues -isvirtual it italic item @@ -1139,7 +1094,6 @@ iterator iteritems its itself -j jackson java javadoc @@ -1175,8 +1129,7 @@ junit just justified justify -jxrlinenumber -k +jxr kapi kbd kernel @@ -1201,7 +1154,6 @@ kubelet kubernetes kw kwargs -l label labels lambda @@ -1209,11 +1161,9 @@ lang language large last -lastspan latest layer layout -layoutcontext layoutinflater left legend @@ -1241,17 +1191,18 @@ limit line linear lineno +linenumber lines link linkcol linkedlist -linkname links lint list listener listeners listmeta +literals little llapi lldb @@ -1260,18 +1211,15 @@ llvm ln lo load -loaddata loaded loader loading loads loc local -localdef locale locales localhost -localname location locationname lock @@ -1292,12 +1240,9 @@ loose lower lt lucene -m ma machine macro -macrorules -macrouse mail main make @@ -1321,15 +1266,12 @@ matching material materials math -mathrand matplotlib matrix max maximenuck maximum -maxlength maxresults -maxvalue maybeauto mc md @@ -1358,10 +1300,7 @@ messages meta metadata method -methoddetail methods -methodsinheritedfromclassjava -methodsummary metro mfp microsoft @@ -1388,7 +1327,6 @@ mode model models modifier -modifierkind modify module modules @@ -1419,7 +1357,6 @@ mutable mutbl mux mywebsite -n name names namespace @@ -1427,13 +1364,9 @@ namespaces native nav navbar -navbarbottom -navbarbottomfirstrow navbarcell navbarcellrev navbarfontrev -navbartop -navbartopfirstrow navigation navlist nbsp @@ -1499,11 +1432,9 @@ nullpointerexception num number numpy -o obj object objectmeta -objectname objects obligation observer @@ -1578,9 +1509,9 @@ override overview ovirt owl +owned owner ownerdocument -p pack package packages @@ -1605,7 +1536,6 @@ paramtype parent parentnode parse -parseargs parseexception parsefloat parseint @@ -1667,7 +1597,7 @@ pointd pointer points policy -polymerapplayout +polymer pool pop popover @@ -1697,10 +1627,8 @@ preview previous pricing primary -primarykey print printf -printfunction println printstacktrace private @@ -1711,7 +1639,6 @@ progid program progress project -projectid promise prop properties @@ -1734,21 +1661,18 @@ public pull purple push -pushstr put px py pylint pytest python -q qname qtcore qtgui query queue quot -r radio radius raise @@ -1757,7 +1681,7 @@ rand random range raw -rbmlw +rbml rc rcx re @@ -1833,7 +1757,6 @@ retrieved return returned returns -returnvalue retval reveal reverse @@ -1847,7 +1770,6 @@ roachpb roboto role root -rootmodule rotate rotated rotatex @@ -1881,7 +1803,6 @@ rustcdecodable rustcencodable rv rx -s sa safari same @@ -1929,7 +1850,6 @@ selected selection selector self -selfty send sender sent @@ -1984,9 +1904,6 @@ site six size sized -sizehint -sizeof -sizet sizing sizzle skin @@ -2021,8 +1938,6 @@ sp space spacing span -spanbug -spanerr spawn spec special @@ -2143,7 +2058,6 @@ sys syscall system systemexception -t tab tabend tabindex @@ -2160,8 +2074,6 @@ tags tail take target -targetarch -targetos task tbody tc @@ -2174,7 +2086,7 @@ temp tempfile template templates -tenantid +tenant term terms terraform @@ -2237,13 +2149,12 @@ tmpdir to tobe toc -tocss toctree today todo toequal toggle -togleparabout +togle tok token tokens @@ -2252,7 +2163,6 @@ tool toolbar tools tooltip -toowned top topleft topnav @@ -2266,7 +2176,6 @@ trace traceback track trait -traitref traits trans transaction @@ -2292,6 +2201,7 @@ trydecodeasnil ts tsd tt +tta tuple tween twitter @@ -2309,7 +2219,6 @@ typeid typemeta typeof types -u ua uffff ui @@ -2317,7 +2226,6 @@ uid uifaces uint uintptr -uintt uk ul un @@ -2329,7 +2237,6 @@ uneditable unexpected ungrouped unicode -unicodeliterals unique unit unittest @@ -2339,14 +2246,13 @@ unknown unlock unmarshal unreachable +unrecognized unsafe -unsafecode unstable unsupportedoperationexception until unversioned unwrap -unwrapor up upcast update @@ -2364,7 +2270,6 @@ usage use used user -userid username users using @@ -2374,7 +2279,6 @@ utf util utils uuid -v val valid validate @@ -2385,7 +2289,6 @@ valueerror valueof valueref values -valuesof var variable variables @@ -2393,9 +2296,7 @@ variant variants various vars -vcbtn -vcgrid -vctta +vc vec vector verbose @@ -2409,6 +2310,7 @@ view viewgroup viewport views +virtual vis visbl visibility @@ -2421,7 +2323,6 @@ vo void volume volumes -w wait want warn @@ -2436,7 +2337,7 @@ we web webdev webkit -webpackrequire +webpack websites week weight @@ -2462,10 +2363,8 @@ windowtitle wire wiretype with -withcapacity within without -withstatus woocommerce word work @@ -2478,15 +2377,13 @@ write writeheader writeln writer -writestr writestring -writingmode +writing wrong ws wso www wx -x xf xff xhr @@ -2501,8 +2398,7 @@ xmlschema xmlwriter xrange xs -xxxunrecognized -y +xxx yaml year yellow @@ -2513,7 +2409,6 @@ yii you your yui -z zero zone -zoom +zoom \ No newline at end of file diff --git a/wordlists/css.txt b/word_lists/css.txt similarity index 98% rename from wordlists/css.txt rename to word_lists/css.txt index 0fb1b66..fa2f196 100644 --- a/wordlists/css.txt +++ b/word_lists/css.txt @@ -1,4 +1,3 @@ -a aaa ab abbr @@ -46,7 +45,6 @@ auto avatar avoid awesome -b backdrop backface background @@ -77,7 +75,7 @@ border bordered both bottom -bowercomponents +bower box br brand @@ -90,7 +88,6 @@ button buttonelement buttons by -c calc calendar callout @@ -155,7 +152,6 @@ cubic current cursor custom -d danger dark darken @@ -199,7 +195,6 @@ dt duration dx dximagetransform -e ease ebebeb edit @@ -226,7 +221,6 @@ events expand ext external -f fa face fade @@ -292,7 +286,6 @@ grey grid group gt -h half hand handle @@ -317,7 +310,6 @@ href html http https -i icon icons ie @@ -357,12 +349,10 @@ jstree jumbotron justified justify -k kbd keyframes khtml km -l label large last @@ -386,7 +376,6 @@ local localhost login logo -m mail main map @@ -428,7 +417,6 @@ mui multi multiple mywebsite -n name nav navbar @@ -452,7 +440,6 @@ notification nowrap nth number -o object odd of @@ -480,7 +467,6 @@ over overflow overlay owl -p packages padding page @@ -527,7 +513,6 @@ pull purple push px -q radio radius range @@ -559,7 +544,6 @@ rotatey round row rtl -s safari sans sass @@ -644,7 +628,6 @@ sup support svg switch -t tab table tablet @@ -703,10 +686,10 @@ translatez transparent tree triangle +tta twitter two type -u ui uk ul @@ -718,12 +701,9 @@ uppercase url use user -v value var -vcbtn -vcgrid -vctta +vc verdana vertical video @@ -734,7 +714,6 @@ visible visited vjs volume -w warning webdev webkit @@ -756,11 +735,8 @@ wp wrap wrapper www -x xl xs -y yellow yui -z zoom \ No newline at end of file diff --git a/wordlists/go.txt b/word_lists/go.txt similarity index 95% rename from wordlists/go.txt rename to word_lists/go.txt index 2094bb5..2ff109a 100644 --- a/wordlists/go.txt +++ b/word_lists/go.txt @@ -1,4 +1,3 @@ -a abc about access @@ -42,7 +41,6 @@ available aws awserr awsutil -b bad bar base @@ -69,7 +67,6 @@ but by byte bytes -c cache call called @@ -98,9 +95,7 @@ cmd code codec codecselfer -codecselfercontainerarrayelem -codecselfercontainerarrayend -codecselfercutf +codecselferc com command common @@ -111,6 +106,8 @@ conn connection const container +containerarrayelem +containerarrayend containers contains content @@ -135,7 +132,6 @@ ctx ctxt current custom -d daemon data database @@ -175,7 +171,6 @@ dorequest driver dst duration -e each ec edit @@ -222,7 +217,6 @@ expect expected expr extensions -f fail failed fake @@ -231,8 +225,7 @@ fatal fatalf fd field -fielddescriptorprotolabel -fielddescriptorprototype +fielddescriptorproto fieldnum fields file @@ -260,17 +253,16 @@ from fs func function -g gc generated gensupport get github -githubcomgogoprotobufproto given gl glog go +gogo golang google googleapi @@ -280,7 +272,6 @@ gostring got goto group -h handle handler has @@ -297,7 +288,6 @@ http httpmethod https httptest -i id idx if @@ -334,14 +324,12 @@ it item items its -j jc job join json juju just -k kapi key keys @@ -351,7 +339,6 @@ ks kubecontainer kubelet kubernetes -l label labels last @@ -375,7 +362,6 @@ log logf logger logrus -m machine main make @@ -388,7 +374,6 @@ master match matches math -mathrand max maximum maxresults @@ -413,7 +398,6 @@ msglen mu must mux -n name names namespace @@ -440,7 +424,6 @@ now ns num number -o obj object objectmeta @@ -470,7 +453,6 @@ os other out output -p package page pagetoken @@ -517,9 +499,7 @@ provided provider proxy ptr -q query -r rand range raw @@ -574,7 +554,6 @@ runlock running runtime rv -s same sc schema @@ -652,7 +631,6 @@ switch sync syscall system -t table tag tags @@ -702,7 +680,6 @@ type typemeta typeof types -u ui uid uint @@ -712,6 +689,7 @@ unit unixnano unlock unmarshal +unrecognized unsafe until unversioned @@ -728,9 +706,9 @@ used user users using +utf util utils -v val valid validate @@ -742,7 +720,6 @@ variable version volume volumes -w wait want was @@ -765,15 +742,12 @@ writer writestring wrong www -x xf xff xml -xxxunrecognized -y +xxx yaml you your -z zero zone \ No newline at end of file diff --git a/wordlists/html.txt b/word_lists/html.txt similarity index 94% rename from wordlists/html.txt rename to word_lists/html.txt index 5678e91..6db4d11 100644 --- a/wordlists/html.txt +++ b/word_lists/html.txt @@ -1,4 +1,3 @@ -a abbr about absolute @@ -15,8 +14,6 @@ align all allclasses allclasseslink -allclassesnavbarbottom -allclassesnavbartop alt altcolor amp @@ -52,7 +49,6 @@ attributes author auto awesome -b background badge bar @@ -90,7 +86,6 @@ build bundle button by -c can caption card @@ -139,8 +134,6 @@ config const constr constructor -constructordetail -constructorsummary container content contentcontainer @@ -158,7 +151,6 @@ createelement css current custom -d dac danger data @@ -197,7 +189,6 @@ doxygen dropdown dt dtd -e each eeeeff effect @@ -222,7 +213,6 @@ examples exception extension external -f fa faker false @@ -258,7 +248,6 @@ from fullcomment function functions -g ga gaq gedmo @@ -282,7 +271,6 @@ group groupheader gt guid -h hadoop halign has @@ -304,7 +292,6 @@ href html http https -i ico icon iconerrorencoded @@ -356,12 +343,11 @@ jms jpg jquery js -jxrlinenumber +jxr key keyboard keyword kind -l label lang language @@ -378,6 +364,7 @@ libs light line lineno +linenumber link linkcol links @@ -390,7 +377,6 @@ logo long loose lt -m main map mapping @@ -410,10 +396,7 @@ menu message meta method -methoddetail methods -methodsinheritedfromclassjava -methodsummary middle min mlabels @@ -421,26 +404,20 @@ mobile modal model modifier -modifierkind module modules more msearchresults mso must -n name namespace namespaces nav navbar -navbarbottom -navbarbottomfirstrow navbarcell navbarcellrev navbarfontrev -navbartop -navbartopfirstrow navigation navlist nbsp @@ -462,7 +439,6 @@ not nowrap null number -o object of off @@ -492,7 +468,6 @@ other out output overview -p package padding page @@ -519,7 +494,7 @@ pln plugin plugins png -polymerapplayout +polymer popup position post @@ -540,10 +515,8 @@ pull push px py -q query quot -r ready red reference @@ -564,7 +537,6 @@ rowcolor rowspan ruby run -s samp sans scala @@ -633,7 +605,6 @@ symbol symbols symfony system -t tab tabend tabindex @@ -668,7 +639,7 @@ to toc toctree toggle -togleparabout +togle tools tooltip top @@ -686,7 +657,6 @@ tt twitter type typecol -u ua ui ul @@ -702,7 +672,6 @@ user using utf util -v val valign value @@ -716,7 +685,6 @@ views visbl visible void -w wait warning was @@ -741,13 +709,11 @@ wrapper write writeln www -x xf xhtml xml xmlns xs -y yes yii you diff --git a/wordlists/java.txt b/word_lists/java.txt similarity index 98% rename from wordlists/java.txt rename to word_lists/java.txt index 8951d87..e38f1a5 100644 --- a/wordlists/java.txt +++ b/word_lists/java.txt @@ -1,4 +1,3 @@ -a abstract accept access @@ -64,7 +63,6 @@ autowired available awt axis -b bar base based @@ -100,7 +98,6 @@ byte bytearrayoutputstream bytebuffer bytes -c cache calendar call @@ -181,7 +178,6 @@ ctx current currenttimemillis cursor -d dao data database @@ -215,7 +211,6 @@ done double drawable driver -e each eclipse edit @@ -258,7 +253,6 @@ exit expected expression extends -f facebook factory fail @@ -296,7 +290,6 @@ framework from fs function -g generated get getclass @@ -323,7 +316,6 @@ grouplayout gt gui gwt -h hadoop hamcrest handle @@ -347,7 +339,6 @@ http https httpservletrequest httpservletresponse -i id identifier idx @@ -400,7 +391,6 @@ itemstack iter iterator its -j jackson java javadoc @@ -417,13 +407,11 @@ jsonexception jsonobject junit just -k kernel key keyevent keys kuali -l label lang last @@ -457,7 +445,6 @@ logj long lt lucene -m ma main make @@ -471,7 +458,6 @@ materials math matrix max -maxvalue menu merge message @@ -492,7 +478,6 @@ more move msg must -n name names namespace @@ -516,7 +501,6 @@ null nullable nullpointerexception number -o obj object objects @@ -549,7 +533,6 @@ outputstream override ovirt owner -p package page param @@ -594,11 +577,9 @@ provider psi public put -q qname query queue -r random range re @@ -641,7 +622,6 @@ runnable runtime runtimeexception runwith -s same save savedinstancestate @@ -729,7 +709,6 @@ symbol synchronized system systemexception -t table tag target @@ -779,7 +758,6 @@ two tx type types -u uffff ui ul @@ -800,7 +778,6 @@ using util utils uuid -v val valid validate @@ -817,7 +794,6 @@ viewgroup visit vo void -w was wc we @@ -841,14 +817,11 @@ writer ws wso www -x xml xmlaccessortype xmlaccesstype xmlelement xmlschema xmlwriter -y you -your -z \ No newline at end of file +your \ No newline at end of file diff --git a/wordlists/js.txt b/word_lists/js.txt similarity index 98% rename from wordlists/js.txt rename to word_lists/js.txt index 6aba699..d1eed6e 100644 --- a/wordlists/js.txt +++ b/word_lists/js.txt @@ -1,4 +1,3 @@ -a about abs absolute @@ -49,7 +48,6 @@ author auto avoid axis -b back backbone bar @@ -86,7 +84,6 @@ button buttons by bytes -c cache call callback @@ -176,7 +173,6 @@ cur current cursor custom -d data datatype date @@ -232,7 +228,6 @@ dropdown drupal dt duration -e each easing editor @@ -276,7 +271,6 @@ expression ext extend extra -f faces factory fail @@ -311,7 +305,6 @@ func function functions fx -g geometry get getattribute @@ -327,7 +320,6 @@ grid group grunt gulp -h handle handleobj handler @@ -353,7 +345,6 @@ href html http https -i icon id idx @@ -395,7 +386,6 @@ item items iterator its -j javascript join jpg @@ -405,11 +395,9 @@ js jshint json just -k key keycode keys -l label lang language @@ -442,7 +430,6 @@ location lodash log loop -m main make map @@ -485,7 +472,6 @@ ms msg multiple must -n name names namespace @@ -511,7 +497,6 @@ now null num number -o obj object objects @@ -550,7 +535,6 @@ over overflow owner ownerdocument -p padding page panel @@ -607,10 +591,8 @@ ptr public push px -q query queue -r radius random range @@ -659,7 +641,6 @@ rows rule rules run -s same save scale @@ -737,7 +718,6 @@ support sure svg switch -t tab table tabs @@ -798,7 +778,6 @@ two type typeof types -u ui uifaces ul @@ -815,7 +794,6 @@ users using util utils -v val valid validate @@ -831,13 +809,12 @@ view views visible void -w want warn was way we -webpackrequire +webpack week when where @@ -856,11 +833,8 @@ wrap wrapper write www -x xhr xml -y year you -your -z \ No newline at end of file +your \ No newline at end of file diff --git a/wordlists/py.txt b/word_lists/py.txt similarity index 94% rename from wordlists/py.txt rename to word_lists/py.txt index 6d5e924..263d398 100644 --- a/wordlists/py.txt +++ b/word_lists/py.txt @@ -1,7 +1,6 @@ -a abc about -absoluteimport +absolute abspath access account @@ -10,10 +9,7 @@ actions active actual add -addargument -addconstructor added -addmethod addr address admin @@ -59,7 +55,6 @@ autofield available ax axis -b back backend bar @@ -88,7 +83,6 @@ but button by bytes -c cache call callback @@ -149,7 +143,6 @@ containing contains content contents -contenttype context continue contrib @@ -159,7 +152,6 @@ core correct count course -courseid cr create created @@ -169,7 +161,6 @@ ctxt current cursor custom -d data database date @@ -222,7 +213,6 @@ driver dt dtype dumps -e each either element @@ -244,6 +234,7 @@ env environ environment eq +equal err error errors @@ -270,7 +261,6 @@ extend extension extensions extra -f factory fail failed @@ -311,7 +301,6 @@ func function functions future -g generated get getattr @@ -323,7 +312,6 @@ graph group groups gtk -h handle handler has @@ -341,7 +329,6 @@ href html http https -i id ids idx @@ -375,21 +362,17 @@ ioerror ip iprot is -isconst isinstance -isvirtual it item items iteritems its -j job join js json just -k key keyerror keys @@ -397,7 +380,6 @@ keyword kind kw kwargs -l label labels lambda @@ -419,6 +401,7 @@ lines link links list +literals ln load loads @@ -432,7 +415,6 @@ login long loop lower -m main make manager @@ -445,7 +427,6 @@ math matplotlib matrix max -maxlength member menu message @@ -471,7 +452,6 @@ mox msg multiple must -n name names namespace @@ -497,10 +477,8 @@ null num number numpy -o obj object -objectname objects of offset @@ -530,7 +508,6 @@ other out outfile output -p pack package packet @@ -542,7 +519,6 @@ parameters params parent parse -parseargs parser part parts @@ -572,14 +548,12 @@ position post prefix present -primarykey +primary print -printfunction process product profile project -projectid properties property protocol @@ -590,12 +564,10 @@ py pylint pytest python -q qtcore qtgui query queue -r raise raises random @@ -634,12 +606,10 @@ ret return returned returns -returnvalue reverse right role root -rootmodule router row rows @@ -648,7 +618,6 @@ rule rules run running -s sa same save @@ -710,7 +679,6 @@ static staticmethod stats status -statuscode std stderr stdout @@ -742,7 +710,6 @@ sure sympy sys system -t table tag tags @@ -753,7 +720,7 @@ teardown tempfile template templates -tenantid +tenant test testcase testing @@ -797,11 +764,9 @@ type typeerror typeid types -u uid -uintt +uint unicode -unicodeliterals unique unit unittest @@ -816,7 +781,6 @@ usage use used user -userid username users using @@ -825,7 +789,6 @@ utf util utils uuid -v val valid validate @@ -840,9 +803,9 @@ verbose version view views +virtual void volume -w wait want warn @@ -867,12 +830,9 @@ work write www wx -x xml xrange -y year yield you -your -z \ No newline at end of file +your \ No newline at end of file diff --git a/wordlists/rs.txt b/word_lists/rs.txt similarity index 89% rename from wordlists/rs.txt rename to word_lists/rs.txt index 6c3b604..bdd900c 100644 --- a/wordlists/rs.txt +++ b/word_lists/rs.txt @@ -1,4 +1,3 @@ -a abi about above @@ -11,7 +10,6 @@ addr address after align -alignof all allow already @@ -20,7 +18,6 @@ always an and android -andthen any arc arch @@ -32,17 +29,9 @@ arguments arm array as -asbytes -asptr -asref assert -asserteq -assertthat -asslice associated ast -astmap -astutil at atom attr @@ -52,7 +41,6 @@ attrs au authors auto -b back bar base @@ -73,13 +61,10 @@ bitfield bits blk block -blockflow body bool border -borderbox borrow -borrowmut both bottom bound @@ -96,7 +81,6 @@ but by byte bytes -c cache call callback @@ -110,7 +94,6 @@ case cases cast cause -cchar ccx cdata cell @@ -124,7 +107,6 @@ chars check child children -cint class clean cleanup @@ -132,12 +114,10 @@ clear client clip clone -clong closure cmd cmp cmt -cobject code codegen codemap @@ -149,10 +129,9 @@ command common compositor computed -computedvalue config const -constellationchan +constellation consts containing contains @@ -174,17 +153,14 @@ cstore cstring ctx ctxt -cuint cur current currently cursor -cvoid cx -d data datum -deadcode +dead debug decl decodable @@ -223,9 +199,8 @@ dst duration during dword -e each -ebmlw +ebml ecx either elem @@ -259,7 +234,6 @@ expression extend extern extra -f fail failed false @@ -297,12 +271,9 @@ fragments frame free from -fromref -fromstr fs function functions -g gdb generated generics @@ -311,7 +282,6 @@ given gl global gp -h handle handler has @@ -327,12 +297,12 @@ height here hi hidden +hint html htmlelement http https hyper -i id ident identifier @@ -358,7 +328,6 @@ instead int integer into -intoiter intrinsics invalid io @@ -366,12 +335,7 @@ ioerror ioresult ipcsender is -isempty isize -isnone -isnull -isok -issome issues it item @@ -380,7 +344,6 @@ iter iterator its itself -j join js jscontext @@ -389,18 +352,14 @@ json jsontypeinfo jsref just -k key kid kind krate -l lang last -lastspan layer layout -layoutcontext left len length @@ -418,7 +377,6 @@ like line lines link -linkname lint list little @@ -428,19 +386,14 @@ llvm ln lo load -loaddata local -localdef -localname location lock log +long longhands loop -m macro -macrorules -macrouse main make map @@ -476,7 +429,6 @@ must mut mutable mutbl -n name names namespace @@ -501,7 +453,6 @@ ns null num number -o obj object obligation @@ -536,7 +487,7 @@ out output over overflow -p +owned package page panic @@ -586,13 +537,11 @@ ptr pub public push -pushstr queue -r rand range raw -rbmlw +rbml rc rcx re @@ -628,6 +577,7 @@ rng root rs rt +rules run running rust @@ -635,14 +585,12 @@ rustc rustcdecodable rustcencodable rx -s same scope script search see self -selfty send sender serialize @@ -657,9 +605,6 @@ since single size sized -sizehint -sizeof -sizet slice so some @@ -667,8 +612,6 @@ source sp space span -spanbug -spanerr spawn spec specific @@ -708,13 +651,10 @@ sure sync syntax system -t table tail take target -targetarch -targetos task tcx terms @@ -738,16 +678,12 @@ time tm tmpdir to -tocss todo token toml -toowned top -tostring trace trait -traitref traits trans transmute @@ -761,20 +697,15 @@ ty typ type typeck -typeid -typeof types -u uint unit unix unreachable unsafe -unsafecode unstable until unwrap -unwrapor up upcast url @@ -784,13 +715,11 @@ user using usize util -v val valid value valueref values -valuesof variable variables variant @@ -802,7 +731,7 @@ version vis visit visitor -w +void want was way @@ -819,22 +748,16 @@ will window windows with -withcapacity within without -withstatus word work would write writer -writestr -writingmode +writing www -x xs -y yet you -z zero \ No newline at end of file