├── Notepad++ ├── autoCompletion │ ├── Clojure.xml │ └── lisp.xml ├── config.xml ├── functionList │ ├── Clojure.xml │ ├── Lisp.xml │ ├── Markdown_Monokai.xml │ └── overrideMap.xml ├── langs.xml ├── plugins │ ├── Config │ │ ├── AutoSave.ini │ │ ├── BetterMultiSelection.ini │ │ ├── ColumnTools.ini │ │ ├── ComparePlugin.ini │ │ ├── CustomizeToolbar.btn │ │ ├── CustomizeToolbar.dat │ │ ├── ExtSettings.ini │ │ ├── Graphviz.ini │ │ ├── ImgTag.ini │ │ ├── LanguageHelp.ini │ │ ├── MarkdownViewerPlusPlus.ini │ │ ├── NppCCompletionPlugin.ini │ │ ├── NppExec.ini │ │ ├── NppGTags.cfg │ │ ├── NppSnippets.ini │ │ ├── NppSnippets.sqlite │ │ ├── NppTextFX.ini │ │ ├── PreviewHTML │ │ │ ├── Filters.ini │ │ │ └── Settings.ini │ │ ├── SQLPrettyPrinter.ini │ │ ├── SurroundSelection.ini │ │ ├── TopMost.ini │ │ ├── XBrackets.ini │ │ ├── npes_saved.txt │ │ ├── npes_temp.txt │ │ ├── pork2Sausage.ini │ │ ├── template1.dat │ │ └── template2.dat │ └── PythonScript │ │ └── scripts │ │ ├── BracketHighlighter.py │ │ ├── Markdown_Literary_Programming_viewer.py │ │ └── startup.py ├── stylers.xml ├── themes │ ├── Monokai.xml │ ├── TwoDark.xml │ └── VS2012-Dark.xml ├── tools │ ├── CuteMarked │ │ └── readme.md │ ├── Graphviz │ │ └── readme.md │ ├── LanguageHelp │ │ ├── Clojure.chm │ │ └── PostgreSQL.chm │ ├── MarkdownLiteraryProgramming │ │ ├── MLP_Clojure_Example.clj │ │ ├── MLP_Clojure_Example.clj.multimarkdown.html │ │ ├── MLP_Clojure_Example.clj.multimarkdown.md │ │ ├── MLP_Clojure_Example.clj.multimarkdown.pdf │ │ ├── MLP_Clojure_Example_CuteMarked01.png │ │ ├── MLP_Clojure_Example_CuteMarked02.png │ │ ├── MLP_Clojure_Example_CuteMarked03.png │ │ ├── MLP_common_head.md │ │ ├── MLP_common_head_gfm.md │ │ ├── MLP_common_head_mmd.md │ │ ├── Markdown_Literary_Programming_viewer.py.LibreOffice.pdf │ │ ├── Markdown_Literary_Programming_viewer.py.chrome.pdf │ │ ├── Markdown_Literary_Programming_viewer.py.html │ │ ├── Markdown_Literary_Programming_viewer.py.md │ │ ├── Npp_MLP_readme.md │ │ ├── css │ │ │ └── github-markdown.css │ │ ├── image │ │ │ └── cowplot.png │ │ └── js │ │ │ ├── mermaidjs │ │ │ ├── mermaid.css │ │ │ └── mermaid.min.js │ │ │ ├── prismjs │ │ │ ├── prism.css │ │ │ └── prism.js │ │ │ └── sci_script_tag │ │ │ └── sci_script_tag.js │ ├── MultiMarkdown │ │ └── readme.md │ ├── clj │ │ ├── hiccup2html.clj │ │ ├── mlp.clj │ │ ├── npp_convert.clj │ │ └── readme.md │ ├── cmark_gfm │ │ ├── cmark-gfm-extensions.dll │ │ ├── cmark-gfm.dll │ │ ├── cmark-gfm.exe │ │ ├── help.txt │ │ ├── x.html │ │ └── x.md │ ├── ctags │ │ ├── .ctags │ │ ├── .ctags.bk │ │ ├── Clojure.ctags │ │ ├── Lisp.ctags │ │ └── ctags.exe │ └── marp_cli │ │ └── readme.md └── userDefineLangs │ ├── Clojure.xml │ ├── Excel.Formula.xml │ ├── Excel_Formula.xml │ ├── asciidoc.xml │ ├── graphviz.dart.xml │ ├── markdown_monokai.xml │ ├── org.mode.xml │ ├── reStructuredText.xml │ └── reStructuredText_dracula.xml ├── Screenshots ├── ClojureBoxNpp.jpg ├── edit_hiccup_with_live_preview.png ├── md_outline.png ├── mlp_clj.png ├── mlp_image.png ├── mlp_mermaid.png ├── mlp_ui_cljs.png ├── nppBracketHighlighter.png ├── setting_LanguageHelp_plugin.jpg ├── setting_MultiEditing.jpg ├── setting_XBrackets_plugin.jpg ├── setting_autocomplete.jpg ├── setting_defalang.jpg ├── setting_delimiter.jpg └── setting_tab_space.jpg └── readme.md /Notepad++/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | standard 10 | show 11 | 12 | vertical 13 | hide 14 | 15 | 16 | 17 | 18 | no 19 | yes 20 | no 21 | no 22 | yes 23 | yes 24 | yes 25 | yes 26 | 27 | 28 | 29 | 30 | yes 31 | yes 32 | 0 33 | svn:// cvs:// git:// imap:// irc:// irc6:// ircs:// ldap:// ldaps:// news: telnet:// gopher:// ssh:// sftp:// smb:// skype: snmp:// spotify: steam:// sms: slack:// chrome:// bitcoin: 34 | 35 | 36 | 37 | .npps 38 | .nppw 39 | show 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | yes 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /Notepad++/functionList/Clojure.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 15 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Notepad++/functionList/Lisp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 15 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Notepad++/functionList/Markdown_Monokai.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 15 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Notepad++/functionList/overrideMap.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 107 | 108 | 109 | 114 | 117 | 118 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/AutoSave.ini: -------------------------------------------------------------------------------- 1 | [Options] 2 | Timer=1 3 | SaveOnActivateApp=1 4 | SaveOnTimer=0 5 | SaveCurrentFileOnly=0 6 | NamedFilesMode=1 7 | UnNamedFilesMode=0 8 | UnNamedFilesSaveFolder=$CDIR$utorecover 9 | UnNamedFilesRecoverFolder=$CDIR$utorecover 10 | MaxFileSize=0 11 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/BetterMultiSelection.ini: -------------------------------------------------------------------------------- 1 | [BetterMultiSelection] 2 | enabled=1 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/ColumnTools.ini: -------------------------------------------------------------------------------- 1 | [HorizontalRuler] 2 | FontSize=10 3 | Fix=0 4 | Visible=0 5 | [ColumnHighlight] 6 | Mode=0 7 | Column=0 8 | Enable=1 9 | [BackspaceUnindent] 10 | Enable=0 11 | [IndentGuidesLookForward] 12 | Enable=0 13 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/ComparePlugin.ini: -------------------------------------------------------------------------------- 1 | [Main] 2 | Old is First=1 3 | Old on Left=1 4 | Default Compare is to Prev=1 5 | Go to First Diff=0 6 | Check Encodings=1 7 | Wrap Around=0 8 | Compact NavBar=1 9 | Ignore Spaces=0 10 | Detect Moves=1 11 | Navigation Bar=0 12 | [Colors] 13 | Added=14286809 14 | Removed=14145535 15 | Changed=10020839 16 | Moved=16770764 17 | Highlight=427007 18 | Alpha=100 19 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/CustomizeToolbar.btn: -------------------------------------------------------------------------------- 1 | Edit,Select All,,,custom-icon-1.bmp 2 | Plugins,Compare,Compare,,custom-icon-2.bmp 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/CustomizeToolbar.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/plugins/Config/CustomizeToolbar.dat -------------------------------------------------------------------------------- /Notepad++/plugins/Config/ExtSettings.ini: -------------------------------------------------------------------------------- 1 | [Header] 2 | Version=1.0 3 | [Settings] 4 | BackspaceUnindents=0 5 | FoldingLines=1 6 | IndentationGuideStyle=3 7 | WhiteSpaceStyle=0 8 | WhiteSpaceSize=2 9 | UpperLineSpacing=0 10 | LowerLineSpacing=0 11 | LineWrappingMode=0 12 | LineWrappingMarkerType=$00000000 13 | LineWrappingMarkerLocation=$00000000 14 | MatchHighlightingStyle=7 15 | MatchHighlightingColor=$00E08736 16 | MatchHighlightingFillAlpha=100 17 | MatchHighlightingOutlineAlpha=50 18 | CursorBeyondLineEndings=0 19 | WrapCursorAtLineStart=1 20 | SelectFullLine=0 21 | SelectionAlpha=256 22 | MultiPaste=1 23 | ConvertEolOnPaste=1 24 | PrintingMagnification=0 25 | VerticalLine0=60;$004D4D4D 26 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/Graphviz.ini: -------------------------------------------------------------------------------- 1 | ; This file stores parameters for the NppGraphViz plugin. Be careful when 2 | ; modifying. This file is auto-created by the plugin, so to revert back to 3 | ; the default settings, just delete this file and restart Notepad++. 4 | ; 5 | ; *** PREREQUISITE *** 6 | ; A graphviz installation is required for this plugin to work. Graphviz may 7 | ; be downloaded at http://graphviz.org/ 8 | ; 9 | ; * Path: leave blank if GraphViz's bin folder (where dot.exe lives) is in 10 | ; your environment's PATH variable. Otherwise, this parameter should 11 | ; be set to the full path of GraphViz's bin folder. 12 | ; * Layout: the layout program (such as dot.exe) that generates images of 13 | ; graphs from code. 14 | ; * SaveAsPath: the last directory an image was saved to. 15 | ; * SaveAsFilterIndex: an integer that marks the image's last saved type. 16 | [Graphviz] 17 | Path=C:\dev\Notepad++\tools\graphviz\bin\ 18 | Layout=dot.exe 19 | SaveAsPath=D:\temp 20 | SaveAsFilterIndex=38 21 | 22 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/ImgTag.ini: -------------------------------------------------------------------------------- 1 | [ImgTag] 2 | ImgTag=0 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/LanguageHelp.ini: -------------------------------------------------------------------------------- 1 | [Options] 2 | StayOnTop=1 3 | HelpMenuMode=3 4 | HelpMenuSearchWord=1 5 | ShowToolBarButton=1 6 | ShowContextMenuEntry=1 7 | ShowContextMenuEntryOnTop=1 8 | ShowMenuIcons=1 9 | [Clojure Core API] 10 | Mask=*.clj; *.cljs; *.cljc; *.cljr 11 | File=C:\dev\Notepad++\tools\LanguageHelp\Clojure.chm 12 | Show=1 13 | [PostgreSQL Help] 14 | Mask=*.* 15 | File=C:\dev\Notepad++\tools\LanguageHelp\PostgreSQL.chm 16 | Show=1 17 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppCCompletionPlugin.ini: -------------------------------------------------------------------------------- 1 | _ 2 | --fields=-aiklmnSzt+fsK --c-kinds=+lp --excmd=number -f 3 | 19 975 270 251 1 1 1 1 1 1 1 1 1 0 0 1 4 | add project paths as new lines below this text 5 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppExec.ini: -------------------------------------------------------------------------------- 1 | [Console] 2 | Visible=2 3 | ShowHelp=0 4 | Encoding=17 5 | SaveOnExecute=1 6 | CmdHistory=1 7 | SaveCmdHistory=1 8 | NoInternalMsgs=0 9 | TextColorNormal=0(6) 10 | TextColorError=A01010 11 | TextColorMessage=208020 12 | BackgroundColor=00 13 | PrintMsgReady=1 14 | [Options] 15 | ToolbarBtn=2 16 | ScriptNppExit="Clean Markdown Literary Programming" 17 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppGTags.cfg: -------------------------------------------------------------------------------- 1 | # Configuration file for Notepad++ NppGTags plugin 2 | # This file is automatically generated and will be overwritten on next NppGTags config 3 | 4 | UseDefaultDB = no 5 | DefaultDBPath = 6 | RegExp = no 7 | IgnoreCase = no 8 | 9 | # NppGTags database config 10 | 11 | Parser = default 12 | AutoUpdate = yes 13 | UseLibraryDBs = no 14 | LibraryDBPaths = 15 | UsePathFilters = no 16 | PathFilters = 17 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppSnippets.ini: -------------------------------------------------------------------------------- 1 | [Options] 2 | Show=0 3 | ToolbarIcon=1 4 | Version=1.6.0 5 | Indent=1 6 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppSnippets.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/plugins/Config/NppSnippets.sqlite -------------------------------------------------------------------------------- /Notepad++/plugins/Config/NppTextFX.ini: -------------------------------------------------------------------------------- 1 | [FindReplace] 2 | RepositoryFolders=TextFX Original:%CSIDLX_TEXTFXDATA%\ReplaceSets;Most Recent Folder:;My Documents:%CSIDL_PERSONAL% 3 | RepositorySelected=0 4 | [Settings] 5 | SeparateQuickMenus=0 6 | BlockOverwrite=0 7 | AutoCloseBrace=0 8 | AutoCloseHTMLtag=0 9 | AutoSpace2Tab=0 10 | AutoConvertHTML=0 11 | SortAscending=1 12 | SortLinesUnique=0 13 | MarkWordFindCaseSensitive=0 14 | MarkWordFindWholeWord=0 15 | DisableSubclassing=0 16 | CaptureCutCopyPaste=0 17 | CtrlDAlsoDupsBlock=0 18 | [Viz] 19 | VizCaseSensitive=0 20 | VizWholeWords=0 21 | VizRegex=0 22 | VizCutCopyAppend=0 23 | VizClipboardAlwaysCRLF=1 24 | VizClipboardReplaceNulls=0 25 | VizClipboardCopyAlsoUTF8=0 26 | VizClipboardNotUnicode=0 27 | VizPasteRetainsPosition=0 28 | VizPasteBinary=0 29 | VizPasteToEditorEOL=1 30 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/PreviewHTML/Filters.ini: -------------------------------------------------------------------------------- 1 | [--- Information ---] 2 | This SAMPLE file contains the filters to be run before previewing a file in Notepad++. 3 | Save this file as 'filters.ini' (instead of 'filters.sample.ini') to see it in action. 4 | 5 | Each section below defines a custom filter. 6 | 7 | The preview plugin decides whether or not to run each filter based on the file's extension OR the 8 | active highlighter language. The first filter encountered is run, any other matching filters are 9 | ignored. 10 | 11 | Any filter can be disabled by commenting it out, or by starting the name with a '-' hyphen; 12 | for example [-PHP] instead of [PHP]. 13 | 14 | [PHP] 15 | ; PHP is a popular scripting language, mostly used for generating HTML pages on a web server. 16 | ; See http://www.php.net/manual/en/features.commandline.options.php 17 | ;Extension=.php4, .php5, .php 18 | Language=PHP 19 | Command=php-cgi -q "%1" 20 | 21 | [Fossil-wiki] 22 | ; Fossil is a version control system, which also provides wiki. This filter will call fossil to 23 | ; convert a .wiki file to HTML. 24 | ; See http://fossil-scm.org/fossil/doc/trunk/www/wikitheory.wiki 25 | ; (and http://fossil-scm.org/fossil/wiki_rules for the syntax) 26 | Extension=.wiki 27 | Command=fossil test-wiki-render "%1" 28 | 29 | [Markdown] 30 | ; Language=Markdown 31 | Extension=.md 32 | Command=C:\Notepad++\tools\MultiMarkdown\bin\multimarkdown.exe --to=html "%1" 33 | 34 | 35 | [LISP] 36 | Language=LISP 37 | Extension=.clj, .cljs, cljc 38 | Command=C:\Notepad++\tools\clj\bb.exe C:\dev\Notepad++\tools\clj\mlp.clj "%1" 39 | 40 | [Clojure] 41 | Language=Clojure 42 | Extension=.clj, .cljs, cljc 43 | Command=C:\Notepad++\tools\clj\bb.exe C:\dev\Notepad++\tools\clj\mlp.clj "%1" 44 | 45 | 46 | [hiccup] 47 | Extension=.hiccup, .hip 48 | Language=hiccup 49 | Command=C:\Notepad++\tools\clj\bb.exe C:\Notepad++\tools\clj\hiccup2html.clj "%1" 50 | 51 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/PreviewHTML/Settings.ini: -------------------------------------------------------------------------------- 1 | [Autorefresh] 2 | Interval=100 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/SQLPrettyPrinter.ini: -------------------------------------------------------------------------------- 1 | [SomeSection] 2 | SomeKey=0 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/SurroundSelection.ini: -------------------------------------------------------------------------------- 1 | [SurroundSelection] 2 | enabled=1 3 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/TopMost.ini: -------------------------------------------------------------------------------- 1 | [Options] 2 | StayOnTop=0 3 | RememberState=1 4 | ShowToolBarButton=1 5 | [Transparency] 6 | Use=0 7 | OnlyOnLoosingFocus=0 8 | Opacity=80 9 | ShowToolbarIcon=1 10 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/XBrackets.ini: -------------------------------------------------------------------------------- 1 | [Options] 2 | Flags=4105 3 | HtmlFileExts=htm; xml; php 4 | FileExtsRule= 5 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/npes_saved.txt: -------------------------------------------------------------------------------- 1 | ::Clean Markdown Literary Programming 2 | cmd /c del /F /S /Q $(NPP_DIRECTORY)\MarkdownLiteraryProgramming\tmp\*.* 3 | ::clj-kondo.exe --lint 4 | C:\dev\Notepad++\tools\clj\clj-kondo.exe --lint "$(FULL_CURRENT_PATH)" 5 | ::bb.exe --file 6 | C:\dev\Notepad++\tools\clj\bb.exe --file "$(FULL_CURRENT_PATH)" 7 | ::bb.exe --eval select 8 | C:\dev\Notepad++\tools\clj\bb.exe --eval "$(CURRENT_WORD)" 9 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/npes_temp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/plugins/Config/npes_temp.txt -------------------------------------------------------------------------------- /Notepad++/plugins/Config/pork2Sausage.ini: -------------------------------------------------------------------------------- 1 | ; Pork to sausage plugin launches a program you defined, pass a selected text from Notepad++ to your program as input argument, then it replaces the selected text in Notepad++ by the result of your program. 2 | ; - Section parameters 3 | ; progPath: Mandatory. the full path of the program to launch 4 | ; progCmd: Mandatory. the whole command to call the program 5 | ; workDir: Mandatory. the path of working directory 6 | ; progInput: Optional. The full path name of the program input file. Pork to sausage plugin will write the selected text in a new created file with the given full path file name. 7 | ; progOutput: Optional. the full path name of the program output file. Pork to sausage plugin will replace selected text by the content of indicated file, which is supposed to be the output file of the program. If this parameter is absent, then Pork to sausage plugin will use the stdout of program to replace the selected text. 8 | ; replaceSelection: Optional. If its value is "false", then the selected text will be untouched. 9 | ; 10 | ; - Variables 11 | ; $(SELECTION): Your text selection. 12 | ; $(TIMSTAMP): the Timestamp which will be generated by Pork to sausage on the bigining. This varible used for naming the file created by Pork to sausage plugin (progInput) to ensure the unicity of created file. 13 | ; 14 | ; Note that you should provide $(SELECTION) or indicate the file name in progInput for the input of you program. 15 | 16 | [babashka convert selected string] 17 | progPath=C:\dev\Notepad++\tools\clj\bb.exe 18 | progCmd=bb.exe --file C:\dev\Notepad++\tools\clj\npp_convert.clj $(SELECTION) 19 | workDir=C:\dev\Notepad++\tools\clj 20 | ;replaceSelection=false 21 | 22 | [html->hiccup] 23 | progPath=C:\dev\Notepad++\tools\clj\hiccup-cli.exe 24 | progCmd=hiccup-cli --html $(SELECTION) 25 | workDir=C:\dev\Notepad++\tools\clj 26 | ;replaceSelection=false 27 | 28 | ; [zip] 29 | ; progPath=C:\Program Files\Java\jre1.6.0\bin\java.exe 30 | ; progCmd=java -classpath C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64;C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64/commons-codec-1.4.jar zipB64 -zip $(SELECTION) 31 | ; workDir=C:\Users\Don\source\nppRelated\pork2Sausage\zip.base64 32 | ; ;replaceSelection=false 33 | 34 | ; [unzip] 35 | ; progPath=C:\Program Files\Java\jre1.6.0\bin\java.exe 36 | ; progCmd=java -classpath C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64;C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64/commons-codec-1.4.jar zipB64 -unzip $(SELECTION) 37 | ; workDir=C:\Users\Don\source\nppRelated\pork2Sausage\zip.base64 38 | 39 | ; [zip2] 40 | ; progPath=C:\Program Files\Java\jre1.6.0\bin\java.exe 41 | ; progCmd=java -classpath C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64;C:/Users/Don/source/nppRelated/pork2Sausage/zip.base64/commons-codec-1.4.jar zipB64 -zip -input "C:\tmp\in_$(TIMSTAMP)" -output "C:\tmp\out_$(TIMSTAMP)" 42 | ; workDir=C:\Users\Don\source\nppRelated\pork2Sausage\zip.base64 43 | ; progInput=C:\tmp\in_$(TIMESTAMP) 44 | ; progOutput=C:\tmp\out_$(TIMESTAMP) 45 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/template1.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | New Document 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /Notepad++/plugins/Config/template2.dat: -------------------------------------------------------------------------------- 1 | class ^! 2 | { 3 | public static void main(String[] args) 4 | { 5 | System.out.println("Hello World!"); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /Notepad++/plugins/PythonScript/scripts/BracketHighlighter.py: -------------------------------------------------------------------------------- 1 | # ========Bracket Highlighter======== 2 | # Author: Scott Sumner 3 | # https://notepad-plus-plus.org/community/topic/14501/has-a-plugin-like-sublime-plugin-brackethighlighter/7 4 | import sys 5 | from Npp import * 6 | 7 | try: 8 | 9 | BH__dict 10 | 11 | except NameError: 12 | 13 | BH__dict = dict() 14 | 15 | BH__dict['indic_for_box_at_caret'] = 10 # pick a free indicator number 16 | 17 | def indicatorOptionsSet(indicator_number, indicator_style, rgb_color_tup, alpha, outline_alpha, draw_under_text, which_editor=editor): 18 | which_editor.indicSetStyle(indicator_number, indicator_style) # e.g. INDICATORSTYLE.ROUNDBOX 19 | which_editor.indicSetFore(indicator_number, rgb_color_tup) 20 | which_editor.indicSetAlpha(indicator_number, alpha) # integer 21 | which_editor.indicSetOutlineAlpha(indicator_number, outline_alpha) # integer 22 | which_editor.indicSetUnder(indicator_number, draw_under_text) # boolean 23 | 24 | for editorX in (editor1, editor2): 25 | indicatorOptionsSet(BH__dict['indic_for_box_at_caret'], INDICATORSTYLE.STRAIGHTBOX, (80, 150, 80), 100, 50, True, editorX) 26 | # indicatorOptionsSet(BH__dict['indic_for_box_at_caret'], INDICATORSTYLE.STRAIGHTBOX, (255, 255, 0), 100, 50, True, editorX) 27 | # indicatorOptionsSet(BH__dict['indic_for_box_at_caret'], INDICATORSTYLE.STRAIGHTBOX, (180,180,180), 0, 255, True, editorX) #(238,121,159) white box rimmed in "pale violet red 2" 28 | 29 | BH__dict['last_modificationType_for_hack'] = None 30 | 31 | def BH__containing_box_indices_into_string(str_containing_caret, caret_index_into_str): 32 | 33 | class Stack: 34 | def __init__(self): self.clear() 35 | def isEmpty(self): return self.size() == 0 36 | def push(self, item): self.items.append(item) 37 | def pop(self): return None if self.size() == 0 else self.items.pop() 38 | def peek(self): return None if self.size() == 0 else self.items[self.size() - 1] 39 | def size(self): return len(self.items) 40 | def clear(self): self.items = [] 41 | 42 | retval = (None, None) # default to no valid box 43 | 44 | get_opening_char_via_closing_char_dict = { 45 | ')' : '(', 46 | ']' : '[', 47 | '}' : '{', 48 | } 49 | get_closing_char_via_opening_char_dict = dict((v, k) for (k, v) in get_opening_char_via_closing_char_dict.items()) 50 | 51 | closing_chars = get_opening_char_via_closing_char_dict.keys() 52 | opening_chars = get_opening_char_via_closing_char_dict.values() 53 | 54 | box_ending_index = -1 55 | box_starting_index = -1 56 | 57 | stack = Stack() 58 | 59 | for j in range(caret_index_into_str, len(str_containing_caret)): 60 | c = str_containing_caret[j] 61 | if c in closing_chars: 62 | if stack.isEmpty(): 63 | box_ending_index = j 64 | break 65 | else: 66 | if stack.peek() == get_opening_char_via_closing_char_dict[c]: 67 | stack.pop() 68 | else: 69 | break # unbalanced 70 | elif c in opening_chars: 71 | stack.push(c) 72 | 73 | if box_ending_index != -1: 74 | stack.clear() 75 | box_starting_index = -1 76 | for j in range(caret_index_into_str - 1, -1, -1): 77 | c = str_containing_caret[j] 78 | if c in opening_chars: 79 | if stack.isEmpty(): 80 | box_starting_index = j 81 | break 82 | else: 83 | if stack.peek() == get_closing_char_via_opening_char_dict[c]: 84 | stack.pop() 85 | else: 86 | break # unbalanced 87 | elif c in closing_chars: 88 | stack.push(c) 89 | 90 | if box_ending_index != -1: 91 | if box_starting_index != -1: 92 | if str_containing_caret[box_ending_index] == get_closing_char_via_opening_char_dict[str_containing_caret[box_starting_index]]: 93 | retval = (box_starting_index, box_ending_index + 1) 94 | 95 | return retval 96 | 97 | def BH__callback_sci_MODIFIED(args): 98 | global BH__dict 99 | BH__dict['last_modificationType_for_hack'] = args['modificationType'] 100 | 101 | def BH__fileIsCloned(file_name_to_test): 102 | retval = False 103 | clone_detect_dict = {} 104 | file_tup_list = notepad.getFiles() 105 | for tup in file_tup_list: 106 | (filename, _, _, _) = tup 107 | if filename not in clone_detect_dict: 108 | clone_detect_dict[filename] = 0 109 | else: 110 | clone_detect_dict[filename] += 1 111 | if filename == file_name_to_test: break 112 | if file_name_to_test in clone_detect_dict: 113 | if clone_detect_dict[file_name_to_test] >= 1: retval = True 114 | return retval 115 | 116 | def BH__fileIsClonedAndIsActiveInBothViews(file_name_to_test): 117 | retval = False 118 | if editor1 and editor2: 119 | # both views are in use 120 | if BH__fileIsCloned(file_name_to_test): 121 | curr_doc_index_main_view = notepad.getCurrentDocIndex(0) 122 | curr_doc_index_2nd_view = notepad.getCurrentDocIndex(1) 123 | main_view_active_doc_bool = False 124 | secondary_view_active_doc_bool = False 125 | file_tup_list = notepad.getFiles() 126 | for tup in file_tup_list: 127 | (filename, _, index_in_view, view_number) = tup 128 | if filename == file_name_to_test: 129 | if view_number == 0: 130 | if index_in_view == curr_doc_index_main_view: 131 | main_view_active_doc_bool = True 132 | elif view_number == 1: 133 | if index_in_view == curr_doc_index_2nd_view: 134 | secondary_view_active_doc_bool = True 135 | if main_view_active_doc_bool and secondary_view_active_doc_bool: 136 | retval = True 137 | break 138 | return retval 139 | 140 | def BH__getViewableEditorAndRangeTupleListList(work_across_both_views): 141 | retval = [] 142 | # retval looks like these examples: 143 | # [ ( editor, [ (0, 1000), (2020, 3000) ] ) ] 144 | # [ ( editor1, [ (0, 1000), (2020, 3000) ] ), ( editor2, [ (4000, 5000), (6020, 7000) ] ) ] 145 | def consolidate_range_tuple_list(range_tup_list): 146 | sorted_range_tup_list = sorted(range_tup_list) # sort criteria is first element of tuple in list 147 | saved_2element_list = list(sorted_range_tup_list[0]) 148 | for (start, end) in sorted_range_tup_list: 149 | if start <= saved_2element_list[1]: 150 | saved_2element_list[1] = max(saved_2element_list[1], end) 151 | else: 152 | yield tuple(saved_2element_list) 153 | saved_2element_list[0] = start 154 | saved_2element_list[1] = end 155 | yield tuple(saved_2element_list) 156 | def get_onscreen_pos_tup_list(which_editor): # which_editor is editor1 or editor2 (or maybe even just plain editor) 157 | # loosely based upon the N++ source for SmartHighlighter::highlightViewWithWord() 158 | retval_tup_list = list() 159 | temp_tup_list = [] 160 | MAXLINEHIGHLIGHT = 400 161 | firstLine = which_editor.getFirstVisibleLine() 162 | currentLine = firstLine 163 | nbLineOnScreen = which_editor.linesOnScreen() 164 | nrLines = min(nbLineOnScreen, MAXLINEHIGHLIGHT) + 1 165 | lastLine = firstLine + nrLines 166 | prevDocLineChecked = -1 167 | break_out = False 168 | while currentLine < lastLine: 169 | docLine = which_editor.docLineFromVisible(currentLine) 170 | if docLine != prevDocLineChecked: 171 | prevDocLineChecked = docLine 172 | startPos = which_editor.positionFromLine(docLine) 173 | endPos = which_editor.positionFromLine(docLine + 1) 174 | if endPos == -1: 175 | endPos = which_editor.getTextLength() - 1 176 | break_out = True 177 | if endPos > startPos: temp_tup_list.append((startPos, endPos)) 178 | if break_out: break 179 | currentLine += 1 180 | if len(temp_tup_list) > 0: 181 | retval_tup_list = list(consolidate_range_tuple_list(temp_tup_list)) 182 | return retval_tup_list 183 | both_views_open = True if editor1 and editor2 else False 184 | curr_file_active_in_both_views = BH__fileIsClonedAndIsActiveInBothViews(notepad.getCurrentFilename()) if both_views_open else False 185 | if both_views_open: 186 | ed1_range_tup_list = get_onscreen_pos_tup_list(editor1) 187 | ed2_range_tup_list = get_onscreen_pos_tup_list(editor2) 188 | if curr_file_active_in_both_views: 189 | range_tup_list = list(consolidate_range_tuple_list(ed1_range_tup_list + ed2_range_tup_list)) 190 | retval.append((editor, range_tup_list)) 191 | elif both_views_open and work_across_both_views: 192 | retval.append((editor1, ed1_range_tup_list)) 193 | retval.append((editor2, ed2_range_tup_list)) 194 | else: 195 | range_tup_list = get_onscreen_pos_tup_list(editor) 196 | retval.append((editor, range_tup_list)) 197 | return retval 198 | 199 | def BH__callback_sci_UPDATEUI(args): 200 | 201 | # hack, see https://notepad-plus-plus.org/community/topic/12360/vi-simulator-how-to-highlight-a-word/27, look for "16400" in code: 202 | if args['updated'] == UPDATE.CONTENT and BH__dict['last_modificationType_for_hack'] == (MODIFICATIONFLAGS.CHANGEINDICATOR | MODIFICATIONFLAGS.USER): return 203 | 204 | for (editorX, pos_range_tuple_list) in BH__getViewableEditorAndRangeTupleListList(True): 205 | 206 | # clear out any existing highlighting in areas the user can currently see 207 | for (start_pos, end_pos) in pos_range_tuple_list: 208 | editorX.setIndicatorCurrent(BH__dict['indic_for_box_at_caret']) 209 | editorX.indicatorClearRange(start_pos, end_pos - start_pos) 210 | 211 | for (start_pos, end_pos) in pos_range_tuple_list: 212 | 213 | if start_pos <= editorX.getCurrentPos() <= end_pos: 214 | 215 | (box_start_offset, box_end_offset) = BH__containing_box_indices_into_string( 216 | editorX.getTextRange(start_pos, end_pos), 217 | editorX.getCurrentPos() - start_pos 218 | ) 219 | 220 | if box_start_offset != None: 221 | size_of_box_in_chars = box_end_offset - box_start_offset 222 | if size_of_box_in_chars <= 2: 223 | pass # rather pointless to box in if the opening and closing delims are right next to each other 224 | else: 225 | editorX.setIndicatorCurrent(BH__dict['indic_for_box_at_caret']) 226 | editorX.indicatorFillRange(start_pos + box_start_offset, size_of_box_in_chars) 227 | 228 | editor.callbackSync(BH__callback_sci_UPDATEUI, [SCINTILLANOTIFICATION.UPDATEUI]) # install callback 229 | editor.callbackSync(BH__callback_sci_MODIFIED, [SCINTILLANOTIFICATION.MODIFIED]) # may not need to be "Sync", but for now we'll make it that way 230 | 231 | else: 232 | 233 | editor.setSelectionMode(editor.getSelectionMode()) # force manual UPDATEUI to happen 234 | -------------------------------------------------------------------------------- /Notepad++/plugins/PythonScript/scripts/Markdown_Literary_Programming_viewer.py: -------------------------------------------------------------------------------- 1 | #-*- coding:utf-8 -*- 2 | 3 | ## Markdown Literary Programming 4 | 5 | #Author: Lin Pengcheng 6 | 7 | #Blog: [Markdown Literary Programming](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md) 8 | 9 | ### Note 10 | 11 | #### Subdirectorys and file of mlt_base_dir 12 | 13 | #- out (Changeable) 14 | #- js 15 | #- image 16 | #- css 17 | #- MultiMarkdown (Optional) 18 | #- CuteMarked (Optional) 19 | #- ChromePortable (Optional) 20 | #- MLT_common_head.md 21 | # 22 | #out_dir can be separated from mlt_base_dir(public resource directory), 23 | #but must be on the same disk, in "mlt_common_head.md" file, 24 | #the path starts with the root path, for example: 25 | #`/path_to/mlt_base_dir/js/prismjs/prism.js` 26 | 27 | #### Python lib 28 | 29 | #markdown or mistune does not support mermaid 30 | 31 | #### Viewer 32 | 33 | ##### Cutemarked (viewer = 1) 34 | 35 | #- it is the only native Markdown viewer that supports JS, image, HTML. 36 | #- it has an outline view of Markdown. 37 | #- It exports HTML in chrome is not good to display. 38 | 39 | ##### MultiMarkdown + Chrome (viewer = 2) 40 | 41 | #- MultiMarkdown support TOC. 42 | #- MultiMarkdown does not support the GitHub style 43 | # code block block and Mermaid charts, 44 | # I made a correction in py. 45 | #- Multimarkdown faster and lighter than pandoc. 46 | #- When converted to HTML, it is automatically open with Chrome, 47 | # and the display works well. 48 | 49 | ##### Markdownviewer++ (viewer = 3) 50 | 51 | #- It exports HTML in chrome is displayed very well 52 | #- fast, Its viewer is only supported by plain text markdown LivePreview. 53 | #- its viewer no syntax highlighted, no mermaid, no image displayed 54 | 55 | ##### cmark_gfm (viewer = 4) 56 | 57 | ### Config 58 | 59 | #```python 60 | 61 | viewer = 4 62 | is_clean_mlt_out_dir = False 63 | is_delete_generate_file = False 64 | npp_tools_dir = notepad.getNppDir() + "\\tools" 65 | mlt_base_dir = npp_tools_dir + "\\MarkdownLiteraryProgramming" 66 | mlt_out_dir = mlt_base_dir + "\\out" 67 | ## mlt_out_dir = mlt_base_dir 68 | 69 | cmark_gfm_path = npp_tools_dir + "\\cmark_gfm\\cmark-gfm.exe" 70 | multimarkdown_path = npp_tools_dir + "\\MultiMarkdown\\bin\\multimarkdown.exe" 71 | cutemarked_path = npp_tools_dir + "\\cutemarked\\cutemarked.exe" 72 | chrome_path = "D:\\PortableApps\\GoogleChromePortable\\GoogleChromePortable.exe" 73 | 74 | #``` 75 | 76 | ### End Config 77 | 78 | ### Code 79 | 80 | #### Init 81 | 82 | #```python 83 | 84 | import os 85 | import re 86 | import time 87 | 88 | notepad.save() 89 | current_full_path = notepad.getCurrentFilename() 90 | (current_dir, current_filename) = os.path.split(current_full_path) 91 | 92 | if not os.path.exists(mlt_out_dir): 93 | os.makedirs(mlt_out_dir) 94 | 95 | #``` 96 | 97 | #### get Common Head Text 98 | 99 | #```python 100 | 101 | common_head_txt = "" 102 | common_head_file = mlt_base_dir + "\\MLP_common_head.md" 103 | if os.path.exists(common_head_file): 104 | f= open(common_head_file,'r') 105 | common_head_txt = f.read() 106 | f.close() 107 | replace_txt = "" 108 | if mlt_out_dir == mlt_base_dir + "\\out": 109 | replace_txt = ".." 110 | elif mlt_out_dir == mlt_base_dir: 111 | replace_txt = "." 112 | else: # remove disk, unix style 113 | replace_txt = re.sub('[a-z,A-Z]{1}:', "", mlt_base_dir) 114 | replace_txt = replace_txt.replace('\\','/') 115 | common_head_txt = re.sub('%mlt_base_dir%', replace_txt, common_head_txt,0,re.M) 116 | 117 | #``` 118 | 119 | #### Convert Markdown Literary Programming to Markdown 120 | 121 | #```python 122 | 123 | dest_text = editor.getText() 124 | ## lisp or null (default as lisp) 125 | if editor.getLexerLanguage() == 'lisp' or editor.getLexerLanguage() == 'null': 126 | dest_text = re.sub(r'^;', "", dest_text,0,re.M) 127 | elif editor.getLexerLanguage() == 'python' or editor.getLexerLanguage() == 'r': 128 | dest_text = re.sub(r'^#', "", dest_text,0,re.M) 129 | elif editor.getLexerLanguage() == 'cpp': 130 | dest_text = re.sub(r'//', "", dest_text,0,re.M) 131 | else: 132 | dest_text = dest_text 133 | ## dest_text = common_head_txt + markdown.markdown(dest_text) 134 | ## dest_text = common_head_txt + mistune.markdown(dest_text) 135 | 136 | #``` 137 | 138 | #### merge Common Head Text and Markdown 139 | 140 | #```python 141 | 142 | md_body_begin = '\r\n\r\n
\r\n\r\n' 143 | md_body_end = '\r\n\r\n
' 144 | TOC = "# Table of Contents \r\n\r\n{{TOC}}\r\n\r\n" 145 | if viewer == 2: 146 | dest_text = common_head_txt + md_body_begin + TOC + dest_text +md_body_end 147 | else: 148 | dest_text = common_head_txt + md_body_begin + dest_text + md_body_end 149 | 150 | #``` 151 | 152 | #### View 153 | 154 | ##### CuteMarked 155 | 156 | #```python 157 | 158 | if viewer == 1: 159 | # Method 1: create a md file, to open by cutemarked. 160 | if not os.path.exists(cutemarked_path): 161 | cutemarked_url = "https://github.com/cloose/CuteMarkEd" 162 | msg = "CuteMarked.exe does not exists! \r\nvar cutemarked_path: " + cutemarked_path + "\r\nIt can be download from " + cutemarked_url 163 | notepad.messageBox(msg, "Warning", 0) 164 | dest_full_path = mlt_out_dir + "\\" + current_filename + ".md" 165 | f= open(dest_full_path,'w') 166 | f.write(dest_text) 167 | f.close() 168 | cmd = cutemarked_path + " " + dest_full_path 169 | # os.system(cmd) 170 | os.popen(cmd) 171 | if is_delete_generate_file: 172 | os.remove(dest_full_path) 173 | 174 | #``` 175 | 176 | ##### cmark_gfm_path 177 | 178 | #```python 179 | 180 | if viewer == 4: 181 | if not os.path.exists(cmark_gfm_path): 182 | cmark_gfm_url = "https://github.com/github/cmark-gfm" 183 | msg = "cmark_gfm.exe does not exists! \r\nvar cmark_gfm_path: " + cmark_gfm_path + "\r\nIt can be download from " + cmark_gfm_url 184 | notepad.messageBox(msg, "Warning", 0) 185 | if not os.path.exists(chrome_path): 186 | chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable" 187 | msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url 188 | notepad.messageBox(msg, "Warning", 0) 189 | md_full_path = mlt_out_dir + "\\" + current_filename + ".md" 190 | f= open(md_full_path,'w') 191 | f.write(dest_text) 192 | f.close() 193 | html_full_path = mlt_out_dir + "\\" + current_filename + ".html" 194 | cmd = cmark_gfm_path + " --footnotes " + md_full_path 195 | r = os.popen(cmd) 196 | html_text = r.read() 197 | html_text = re.sub(r'
', r'
', html_text, 0, re.M)
198 |     # html_text = re.sub('[\r\n\f]{2,}','\r\n', html_text, 0, re.M)
199 |     # html_text = html_text.replace("\r\n\r\n","\r\n")
200 |     r.close() 
201 |     f = open(html_full_path, "w")  
202 |     f.write(html_text)  
203 |     f.close()
204 |     cmd = chrome_path + " " + html_full_path
205 |     os.popen(cmd)
206 |     if is_delete_generate_file:
207 |         time.sleep(15)
208 |         os.remove(md_full_path)
209 |         os.remove(html_full_path)
210 | 
211 | #```
212 | 
213 | 
214 | ##### MultiMarkdown+Chrome
215 | 
216 | #```python
217 | 
218 | elif viewer == 2:
219 | 	  # Method 2: MultiMarkdown+Chrome 
220 |     if not os.path.exists(multimarkdown_path):
221 |         multimarkdown_url = "https://github.com/fletcher/MultiMarkdown-6"
222 |         msg = "multimarkdown.exe does not exists! \r\nvar multimarkdown_path: " + multimarkdown_path + "\r\nIt can be download from " + multimarkdown_url
223 |         notepad.messageBox(msg, "Warning", 0)
224 |     if not os.path.exists(chrome_path):
225 |         chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable"
226 |         msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url
227 |         notepad.messageBox(msg, "Warning", 0)
228 |     md_full_path = mlt_out_dir + "\\" + current_filename + ".md"
229 |     f= open(md_full_path,'w')
230 |     f.write(dest_text)
231 |     f.close()
232 |     html_full_path = mlt_out_dir + "\\" + current_filename + ".html"
233 |     cmd = multimarkdown_path + " --full --to=html --output=" + html_full_path + " " + md_full_path
234 |     # cmd = multimarkdown_path + " --full " + md_full_path
235 |     os.popen(cmd)
236 |     f= open(html_full_path,'r')
237 |     html_txt = f.read()
238 |     f.close()
239 |     html_txt = re.sub(r'
', r'
', html_txt, 0, re.M)
241 |     html_txt = html_txt.replace("\r\n\r\n","\r\n")
242 |     f= open(html_full_path,'w')
243 |     f.write(html_txt)
244 |     f.close()
245 |     cmd = chrome_path + " " + html_full_path
246 |     os.popen(cmd)
247 |     if is_delete_generate_file:
248 |         time.sleep(15)
249 |         os.remove(md_full_path)
250 |         os.remove(html_full_path)
251 | 
252 | #```
253 | 
254 | ##### MarkdownViewer++Chrome
255 | 
256 | #```python
257 | 
258 | else:  
259 |     # Method 3: MarkdownViewer++Chrome
260 |     editor2= notepad.new()
261 |     editor.setText(dest_text)
262 |     # dest_full_path = mlt_out_dir + current_filename + ".md"
263 |     # notepad.saveAs(dest_full_path)
264 |     notepad.runPluginCommand('MarkdownViewer++','MarkdownViewer++')
265 | 
266 | #```
267 | 
268 | #### Clean mlt_out_dir
269 | 
270 | #```python
271 | 
272 | 
273 | def del_file(path):
274 |     ls = os.listdir(path)
275 |     for i in ls:
276 |         c_path = os.path.join(path, i)
277 |         if os.path.isdir(c_path):
278 |             del_file(c_path)
279 |         else:
280 |             os.remove(c_path)
281 | 
282 | if is_clean_mlt_out_dir:
283 |     if viewer == 2:
284 |         time.sleep(15)
285 |     del_file(mlt_out_dir)
286 |   
287 | #```
288 | 
289 | ### End Code


--------------------------------------------------------------------------------
/Notepad++/plugins/PythonScript/scripts/startup.py:
--------------------------------------------------------------------------------
 1 | # The lines up to and including sys.stderr should always come first
 2 | # Then any errors that occur later get reported to the console
 3 | # If you'd prefer to report errors to a file, you can do that instead here.
 4 | import sys
 5 | from Npp import *
 6 | 
 7 | # Set the stderr to the normal console as early as possible, in case of early errors
 8 | sys.stderr = console
 9 | 
10 | # Define a class for writing to the console in red
11 | class ConsoleError:
12 | 	def __init__(self):
13 | 		global console
14 | 		self._console = console;
15 | 
16 | 	def write(self, text):
17 | 		self._console.writeError(text);
18 | 
19 | # Set the stderr to write errors in red
20 | sys.stderr = ConsoleError()
21 | 
22 | # This imports the "normal" functions, including "help"
23 | import site
24 | 
25 | sys.stdout = console
26 | 
27 | # In order to set the stdout to the current active document, uncomment the following line
28 | # sys.stdout = editor
29 | # So print "hello world", will insert "hello world" at the current cursor position
30 | 
31 | import BracketHighlighter


--------------------------------------------------------------------------------
/Notepad++/tools/CuteMarked/readme.md:
--------------------------------------------------------------------------------
1 | # CuteMarkEd
2 | 
3 | A Qt-based, free and open source 
4 | markdown editor with live HTML preview, 
5 | math expressions, code syntax highlighting 
6 | and syntax highlighting of markdown document.
7 | 
8 | https://github.com/cloose/CuteMarkEd


--------------------------------------------------------------------------------
/Notepad++/tools/Graphviz/readme.md:
--------------------------------------------------------------------------------
 1 | # Graphviz
 2 | 
 3 | Graphviz is open source graph visualization software. 
 4 | Graph visualization is a way of representing 
 5 | structural information as diagrams of abstract 
 6 | graphs and networks. It has important applications 
 7 | in networking, bioinformatics, software engineering, 
 8 | database and web design, machine learning, 
 9 | and in visual interfaces for other technical domains.
10 | 
11 | http://www.graphviz.org/download/


--------------------------------------------------------------------------------
/Notepad++/tools/LanguageHelp/Clojure.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/LanguageHelp/Clojure.chm


--------------------------------------------------------------------------------
/Notepad++/tools/LanguageHelp/PostgreSQL.chm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/LanguageHelp/PostgreSQL.chm


--------------------------------------------------------------------------------
/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example.clj:
--------------------------------------------------------------------------------
 1 | ;# Markdown Literary Programming's Example
 2 | 
 3 | ; Author: Lin Pengcheng
 4 | 
 5 | ; My Blog: [The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Principle-based Warehouse/Workshop Model](https://github.com/linpengcheng/PurefunctionPipelineDataflow)
 6 | 
 7 | ; Reference: [Markdown Literary programming that don't break the syntax of any programming language](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md)
 8 | 
 9 | ;## example01: Code with syntax highlighting.
10 | 
11 | (defn f [[evens odds total amax amin] x]
12 |   (let [[evens odds] (cond 
13 |                        (even? x) [(inc evens ) odds]
14 |                        (odd? x)  [evens (inc odds)]
15 |                        :else     [evens odds])
16 |         total (+ total x)
17 |         amax  (max amax x)
18 |         amin  (min amin x)]   
19 |      [evens odds total amax amin]))
20 | ;;The comment of the code requires at least two line comment characters
21 | (reduce f [0 0 0 ##-Inf ##Inf] [5 6 8 -3 -9 11 156 6 7])
22 | 
23 | ;return `[4 5 187 156 -9]`
24 | 
25 | ;## example02: Mermaid flow chart
26 | 
27 | ; - Notepad++ preview HTML plugin (IE 11) don't display letter, 
28 | ; - It can display letter using chrome open saved html 
29 | ;   if set save html in config.
30 | 
31 | ;```mermaid
32 | ;graph LR
33 | ;      A-->B
34 | ;      B-->C
35 | ;      C-->A
36 | ;      D-->C
37 | ;```
38 | 
39 | ;## example03: Image
40 | 
41 | ;![CowPlot](./image/cowplot.png)
42 | 
43 | ;## example04: UI + javascript/Clojurescript(sci)
44 | 
45 | ; Reference: [sci-script-tag](https://borkdude.github.io/sci-script-tag/)
46 | 
47 | ; - Notepad++ preview HTML plugin (IE 11) don't run UI script, 
48 | ; - It can run UI script using chrome open saved html 
49 | ;   if set save html in config.
50 | 
51 | ;
53 | 
54 | ;


--------------------------------------------------------------------------------
/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example.clj.multimarkdown.html:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 | 
 4 | 	
 5 | 
 6 | 
 7 | 
 8 | 
 9 | 
10 | 
11 | 
12 | 
13 | 
14 | 
15 | 
16 | 
17 | 
34 | 
35 | 
36 |

Table of Contents

37 | 38 | 51 | 52 |

Markdown literary programming Example

53 | 54 |

example01: Code with syntax highlighting.

55 | 56 |

57 | (defn f [[evens odds total amax amin] x]

58 |   (let [[evens odds] (cond 

59 |                        (even? x) [(inc evens ) odds]

60 |                        (odd? x)  [evens (inc odds)]

61 |                        :else     [evens odds])

62 |         total (+ total x)

63 |         amax  (max amax x)

64 |         amin  (min amin x)]   

65 |      [evens odds total amax amin]))

66 | ;The comment of the code requires at least two line comment characters

67 | (reduce f [0 0 0 ##-Inf ##Inf] [5 6 8 -3 -9 11 156 6 7])

68 | 
69 | 70 |

return [4 5 187 156 -9]

71 | 72 |

example02: Mermaid flow chart

73 | 74 |

75 | graph LR

76 |       A-->B

77 |       B-->C

78 |       C-->A

79 |       D-->C

80 | 
81 | 82 |

example03: Image

83 | 84 |
85 | cowplot 86 |
cowplot
87 |
88 | 89 |
90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example.clj.multimarkdown.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 25 | 26 | 27 | 28 |
29 | 30 | # Table of Contents 31 | 32 | {{TOC}} 33 | 34 | # Markdown literary programming Example 35 | 36 | ## example01: Code with syntax highlighting. 37 | 38 | ```clojure 39 | (defn f [[evens odds total amax amin] x] 40 | (let [[evens odds] (cond 41 | (even? x) [(inc evens ) odds] 42 | (odd? x) [evens (inc odds)] 43 | :else [evens odds]) 44 | total (+ total x) 45 | amax (max amax x) 46 | amin (min amin x)] 47 | [evens odds total amax amin])) 48 | ;The comment of the code requires at least two line comment characters 49 | (reduce f [0 0 0 ##-Inf ##Inf] [5 6 8 -3 -9 11 156 6 7]) 50 | ``` 51 | 52 | return `[4 5 187 156 -9]` 53 | 54 | ## example02: Mermaid flow chart 55 | 56 | ```mermaid 57 | graph LR 58 | A-->B 59 | B-->C 60 | C-->A 61 | D-->C 62 | ``` 63 | 64 | ## example03: Image 65 | 66 | ![cowplot](./image/cowplot.png) 67 | 68 | 69 | 70 |
-------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example.clj.multimarkdown.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example.clj.multimarkdown.pdf -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked01.png -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked02.png -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/MLP_Clojure_Example_CuteMarked03.png -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_common_head.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {{TOC}} 35 | 36 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_common_head_gfm.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/MLP_common_head_mmd.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 38 | 39 | 40 | 41 | 42 | 43 | Table of Contents 44 | 45 | {{TOC}} 46 | 47 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/Markdown_Literary_Programming_viewer.py.LibreOffice.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/Markdown_Literary_Programming_viewer.py.LibreOffice.pdf -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/Markdown_Literary_Programming_viewer.py.chrome.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/Markdown_Literary_Programming_viewer.py.chrome.pdf -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/Markdown_Literary_Programming_viewer.py.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 25 | 26 | 27 | 28 |
29 | 30 | # Table of Contents 31 | 32 | {{TOC}} 33 | 34 | -*- coding:utf-8 -*- 35 | 36 | # Markdown Literary Programming 37 | 38 | Author: Lin Pengcheng 39 | 40 | Blog: [Markdown Literary Programming](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md) 41 | 42 | ## Note 43 | 44 | ### Subdirectorys and file of mlt_base_dir 45 | 46 | - out (Changeable) 47 | - js 48 | - image 49 | - css 50 | - MultiMarkdown (Optional) 51 | - CuteMarked (Optional) 52 | - ChromePortable (Optional) 53 | - MLT_common_head.md 54 | 55 | out_dir can be separated from mlt_base_dir(public resource directory), 56 | but must be on the same disk, in "mlt_common_head.md" file, 57 | the path starts with the root path, for example: 58 | `/path_to/mlt_base_dir/js/prismjs/prism.js` 59 | ### Python lib: 60 | markdown or mistune does not support mermaid 61 | 62 | ### Viewer 63 | 64 | #### Cutemarked (viewer = 1) 65 | 66 | - it is the only native Markdown viewer that supports JS, image, HTML. 67 | - it has an outline view of Markdown. 68 | - It exports HTML in chrome is not good to display. 69 | 70 | #### MultiMarkdown + Chrome (viewer = 2) 71 | 72 | - MultiMarkdown support TOC. 73 | - MultiMarkdown does not support the GitHub style 74 | code block block and Mermaid charts, 75 | I made a correction in py. 76 | - Multimarkdown faster and lighter than pandoc. 77 | - When converted to HTML, it is automatically open with Chrome, 78 | and the display works well. 79 | 80 | #### Markdownviewer++ (viewer = 3) 81 | 82 | - It exports HTML in chrome is displayed very well 83 | - fast, Its viewer is only supported by plain text markdown LivePreview. 84 | - its viewer no syntax highlighted, no mermaid, no image displayed 85 | 86 | ## Config 87 | 88 | ```python 89 | 90 | viewer = 2 91 | is_clean_mlt_out_dir = False 92 | is_delete_generate_file = False 93 | mlt_base_dir = notepad.getNppDir() + "\\MarkdownLiteraryProgramming" 94 | # mlt_out_dir = mlt_base_dir + "\\out" 95 | mlt_out_dir = mlt_base_dir 96 | cutemarked_path = mlt_base_dir + "\\cutemarked\\cutemarked.exe" 97 | multimarkdown_path = mlt_base_dir + "\\MultiMarkdown\\bin\\multimarkdown.exe" 98 | chrome_path = "D:\\PortableApps\\GoogleChromePortable\\GoogleChromePortable.exe" 99 | 100 | ``` 101 | 102 | ## End Config 103 | 104 | ## Code 105 | 106 | ### Init 107 | 108 | ```python 109 | 110 | import os 111 | import re 112 | import time 113 | 114 | notepad.save() 115 | current_full_path = notepad.getCurrentFilename() 116 | (current_dir, current_filename) = os.path.split(current_full_path) 117 | 118 | if not os.path.exists(mlt_out_dir): 119 | os.makedirs(mlt_out_dir) 120 | 121 | ``` 122 | 123 | ### get Common Head Text 124 | 125 | ```python 126 | 127 | common_head_txt = "" 128 | common_head_file = mlt_base_dir + "\\MLP_common_head.md" 129 | if os.path.exists(common_head_file): 130 | f= open(common_head_file,'r') 131 | common_head_txt = f.read() 132 | f.close() 133 | replace_txt = "" 134 | if mlt_out_dir == mlt_base_dir + "\\out": 135 | replace_txt = ".." 136 | elif mlt_out_dir == mlt_base_dir: 137 | replace_txt = "." 138 | else: # remove disk, unix style 139 | replace_txt = re.sub('[a-z,A-Z]{1}:', "", mlt_base_dir) 140 | replace_txt = replace_txt.replace('\\','/') 141 | common_head_txt = re.sub('%mlt_base_dir%', replace_txt, common_head_txt,0,re.M) 142 | 143 | ``` 144 | 145 | ### Convert Markdown Literary Programming to Markdown 146 | 147 | ```python 148 | 149 | dest_text = editor.getText() 150 | # lisp or null (default as lisp) 151 | if editor.getLexerLanguage() == 'lisp' or editor.getLexerLanguage() == 'null': 152 | dest_text = re.sub(r'^;', "", dest_text,0,re.M) 153 | elif editor.getLexerLanguage() == 'python' or editor.getLexerLanguage() == 'r': 154 | dest_text = re.sub(r'^#', "", dest_text,0,re.M) 155 | elif editor.getLexerLanguage() == 'cpp': 156 | dest_text = re.sub(r'//', "", dest_text,0,re.M) 157 | else: 158 | dest_text = dest_text 159 | # dest_text = common_head_txt + markdown.markdown(dest_text) 160 | # dest_text = common_head_txt + mistune.markdown(dest_text) 161 | 162 | ``` 163 | 164 | ### merge Common Head Text and Markdown 165 | 166 | ```python 167 | 168 | md_body_begin = '\r\n\r\n
\r\n\r\n' 169 | md_body_end = '\r\n\r\n
' 170 | TOC = "# Table of Contents \r\n\r\n{{TOC}}\r\n\r\n" 171 | if viewer == 2: 172 | dest_text = common_head_txt + md_body_begin + TOC + dest_text +md_body_end 173 | else: 174 | dest_text = common_head_txt + md_body_begin + dest_text + md_body_end 175 | 176 | ``` 177 | 178 | ### View 179 | 180 | #### CuteMarked 181 | 182 | ```python 183 | 184 | if viewer == 1: 185 | # Method 1: create a md file, to open by cutemarked. 186 | if not os.path.exists(cutemarked_path): 187 | cutemarked_url = "https://github.com/cloose/CuteMarkEd" 188 | msg = "CuteMarked.exe does not exists! \r\nvar cutemarked_path: " + cutemarked_path + "\r\nIt can be download from " + cutemarked_url 189 | notepad.messageBox(msg, "Warning", 0) 190 | dest_full_path = mlt_out_dir + "\\" + current_filename + ".md" 191 | f= open(dest_full_path,'w') 192 | f.write(dest_text) 193 | f.close() 194 | cmd = cutemarked_path + " " + dest_full_path 195 | # os.system(cmd) 196 | os.popen(cmd) 197 | if is_delete_generate_file: 198 | os.remove(dest_full_path) 199 | 200 | ``` 201 | 202 | #### MultiMarkdown+Chrome 203 | 204 | ```python 205 | 206 | elif viewer == 2: 207 | # Method 2: MultiMarkdown+Chrome 208 | if not os.path.exists(multimarkdown_path): 209 | multimarkdown_url = "https://github.com/fletcher/MultiMarkdown-6" 210 | msg = "multimarkdown.exe does not exists! \r\nvar multimarkdown_path: " + multimarkdown_path + "\r\nIt can be download from " + multimarkdown_url 211 | notepad.messageBox(msg, "Warning", 0) 212 | if not os.path.exists(chrome_path): 213 | chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable" 214 | msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url 215 | notepad.messageBox(msg, "Warning", 0) 216 | md_full_path = mlt_out_dir + "\\" + current_filename + ".md" 217 | f= open(md_full_path,'w') 218 | f.write(dest_text) 219 | f.close() 220 | html_full_path = mlt_out_dir + "\\" + current_filename + ".html" 221 | cmd = multimarkdown_path + " --full --to=html --output=" + html_full_path + " " + md_full_path 222 | # cmd = multimarkdown_path + " --full " + md_full_path 223 | os.popen(cmd) 224 | f= open(html_full_path,'r') 225 | html_txt = f.read() 226 | f.close() 227 | html_txt = re.sub(r'
', r'
', html_txt, 0, re.M)

229 |     html_txt = html_txt.replace("\r\n\r\n","\r\n")

230 |     f= open(html_full_path,'w')

231 |     f.write(html_txt)

232 |     f.close()

233 |     cmd = chrome_path + " " + html_full_path

234 |     os.popen(cmd)

235 |     if is_delete_generate_file:

236 |         time.sleep(15)

237 |         os.remove(md_full_path)

238 |         os.remove(html_full_path)

239 | 

240 | ```

241 | 

242 | #### MarkdownViewer++Chrome

243 | 

244 | ```python

245 | 

246 | else:  

247 |     # Method 3: MarkdownViewer++Chrome

248 |     editor2= notepad.new()

249 |     editor.setText(dest_text)

250 |     # dest_full_path = mlt_out_dir + current_filename + ".md"

251 |     # notepad.saveAs(dest_full_path)

252 |     notepad.runPluginCommand('MarkdownViewer++','MarkdownViewer++')

253 | 

254 | ```

255 | 

256 | ### Clean mlt_out_dir

257 | 

258 | ```python

259 | 

260 | 

261 | def del_file(path):

262 |     ls = os.listdir(path)

263 |     for i in ls:

264 |         c_path = os.path.join(path, i)

265 |         if os.path.isdir(c_path):

266 |             del_file(c_path)

267 |         else:

268 |             os.remove(c_path)

269 | 

270 | if is_clean_mlt_out_dir:

271 |     if viewer == 2:

272 |         time.sleep(15)

273 |     del_file(mlt_out_dir)

274 |   

275 | ```

276 | 

277 | ## End Code

278 | 

279 | 
-------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/Npp_MLP_readme.md: -------------------------------------------------------------------------------- 1 | ## Usage 2 | 3 | You can put pythonscript on toolbar. 4 | You can choose from the config area of Pythonscript: 5 | 6 | - viewer 7 | - out_path: Out directory 8 | - mlt_base_path: resource directory 9 | (js,image,tools,css,mlt_common_head.md, etc) 10 | - is auto-clean out directory or file? 11 | - tools path: CuteMarked, MultiMarkdown, Chrome. 12 | 13 | ### subdirectorys and file of mlt_base_dir 14 | 15 | 1. out (Changeable) 16 | 2. js 17 | 3. image 18 | 4. css 19 | 5. MultiMarkdown (Optional) 20 | 6. CuteMarked (Optional) 21 | 7. ChromePortable (Optional) 22 | 8. MLT_common_head.md 23 | 24 | out_dir can be separated from mlt_base_dir(public resource directory), 25 | but must be on the same disk, in "mlt_common_head.md" file, 26 | the path starts with the root path, for example: 27 | "/path_to/mlt_base_dir/js/prismjs/prism.js" 28 | 29 | ### Viewer 30 | #### CuteMarked (viewer = 1, default) 31 | - Cutemarked supports sidebar outlines, 32 | which is helpful for reading code. 33 | - Cutemarked is the only one markdown viewer (editor): 34 | - native 35 | - It supports all features of the browser, support: 36 | - js 37 | - image 38 | - css 39 | - syntax highlighting 40 | - Mermaid charts 41 | - Math 42 | - Cutemarked exported HTML has problems 43 | displaying syntax highlighting and Mermaid charts. 44 | 45 | #### MultiMarkdown + Chrome (viewer = 2) 46 | - MultiMarkdown support TOC. 47 | - MultiMarkdown does not support the GitHub style 48 | code block block and Mermaid charts, 49 | I made a correction in py. 50 | - Multimarkdown faster and lighter than pandoc. 51 | - When converted to HTML, it is automatically open with Chrome, 52 | and the display works well. 53 | 54 | #### MarkdownViewer++ plugin + Chrome (viewer = 3) 55 | - MarkdownViewer++ viewer is fast, only support displaying markdown text. 56 | - MarkdownViewer++ viewer don't support syntax highlighting, image, js. 57 | - MarkdownViewer++ viewer only displaying Mermaid text. 58 | - MarkdownViewer++ export as html, chrome displaying is ok : 59 | - syntax highlighting 60 | - Mermaid charts 61 | - image 62 | - js 63 | 64 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/image/cowplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/MarkdownLiteraryProgramming/image/cowplot.png -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/js/mermaidjs/mermaid.css: -------------------------------------------------------------------------------- 1 | /* Flowchart variables */ 2 | /* Sequence Diagram variables */ 3 | /* Gantt chart variables */ 4 | .mermaid .label { 5 | color: #333; 6 | } 7 | .node rect, 8 | .node circle, 9 | .node ellipse, 10 | .node polygon { 11 | fill: #ECECFF; 12 | stroke: #CCCCFF; 13 | stroke-width: 1px; 14 | } 15 | .edgePath .path { 16 | stroke: #333333; 17 | } 18 | .edgeLabel { 19 | background-color: #e8e8e8; 20 | } 21 | .cluster rect { 22 | fill: #ffffde !important; 23 | rx: 4 !important; 24 | stroke: #aaaa33 !important; 25 | stroke-width: 1px !important; 26 | } 27 | .cluster text { 28 | fill: #333; 29 | } 30 | .actor { 31 | stroke: #CCCCFF; 32 | fill: #ECECFF; 33 | } 34 | text.actor { 35 | fill: black; 36 | stroke: none; 37 | } 38 | .actor-line { 39 | stroke: grey; 40 | } 41 | .messageLine0 { 42 | stroke-width: 1.5; 43 | stroke-dasharray: "2 2"; 44 | marker-end: "url(#arrowhead)"; 45 | stroke: #333; 46 | } 47 | .messageLine1 { 48 | stroke-width: 1.5; 49 | stroke-dasharray: "2 2"; 50 | stroke: #333; 51 | } 52 | #arrowhead { 53 | fill: #333; 54 | } 55 | #crosshead path { 56 | fill: #333 !important; 57 | stroke: #333 !important; 58 | } 59 | .messageText { 60 | fill: #333; 61 | stroke: none; 62 | } 63 | .labelBox { 64 | stroke: #CCCCFF; 65 | fill: #ECECFF; 66 | } 67 | .labelText { 68 | fill: black; 69 | stroke: none; 70 | } 71 | .loopText { 72 | fill: black; 73 | stroke: none; 74 | } 75 | .loopLine { 76 | stroke-width: 2; 77 | stroke-dasharray: "2 2"; 78 | marker-end: "url(#arrowhead)"; 79 | stroke: #CCCCFF; 80 | } 81 | .note { 82 | stroke: #aaaa33; 83 | fill: #fff5ad; 84 | } 85 | .noteText { 86 | fill: black; 87 | stroke: none; 88 | font-family: 'trebuchet ms', verdana, arial; 89 | font-size: 14px; 90 | } 91 | /** Section styling */ 92 | .section { 93 | stroke: none; 94 | opacity: 0.2; 95 | } 96 | .section0 { 97 | fill: rgba(102, 102, 255, 0.49); 98 | } 99 | .section2 { 100 | fill: #fff400; 101 | } 102 | .section1, 103 | .section3 { 104 | fill: white; 105 | opacity: 0.2; 106 | } 107 | .sectionTitle0 { 108 | fill: #333; 109 | } 110 | .sectionTitle1 { 111 | fill: #333; 112 | } 113 | .sectionTitle2 { 114 | fill: #333; 115 | } 116 | .sectionTitle3 { 117 | fill: #333; 118 | } 119 | .sectionTitle { 120 | text-anchor: start; 121 | font-size: 11px; 122 | text-height: 14px; 123 | } 124 | /* Grid and axis */ 125 | .grid .tick { 126 | stroke: lightgrey; 127 | opacity: 0.3; 128 | shape-rendering: crispEdges; 129 | } 130 | .grid path { 131 | stroke-width: 0; 132 | } 133 | /* Today line */ 134 | .today { 135 | fill: none; 136 | stroke: red; 137 | stroke-width: 2px; 138 | } 139 | /* Task styling */ 140 | /* Default task */ 141 | .task { 142 | stroke-width: 2; 143 | } 144 | .taskText { 145 | text-anchor: middle; 146 | font-size: 11px; 147 | } 148 | .taskTextOutsideRight { 149 | fill: black; 150 | text-anchor: start; 151 | font-size: 11px; 152 | } 153 | .taskTextOutsideLeft { 154 | fill: black; 155 | text-anchor: end; 156 | font-size: 11px; 157 | } 158 | /* Specific task settings for the sections*/ 159 | .taskText0, 160 | .taskText1, 161 | .taskText2, 162 | .taskText3 { 163 | fill: white; 164 | } 165 | .task0, 166 | .task1, 167 | .task2, 168 | .task3 { 169 | fill: #8a90dd; 170 | stroke: #534fbc; 171 | } 172 | .taskTextOutside0, 173 | .taskTextOutside2 { 174 | fill: black; 175 | } 176 | .taskTextOutside1, 177 | .taskTextOutside3 { 178 | fill: black; 179 | } 180 | /* Active task */ 181 | .active0, 182 | .active1, 183 | .active2, 184 | .active3 { 185 | fill: #bfc7ff; 186 | stroke: #534fbc; 187 | } 188 | .activeText0, 189 | .activeText1, 190 | .activeText2, 191 | .activeText3 { 192 | fill: black !important; 193 | } 194 | /* Completed task */ 195 | .done0, 196 | .done1, 197 | .done2, 198 | .done3 { 199 | stroke: grey; 200 | fill: lightgrey; 201 | stroke-width: 2; 202 | } 203 | .doneText0, 204 | .doneText1, 205 | .doneText2, 206 | .doneText3 { 207 | fill: black !important; 208 | } 209 | /* Tasks on the critical line */ 210 | .crit0, 211 | .crit1, 212 | .crit2, 213 | .crit3 { 214 | stroke: #ff8888; 215 | fill: red; 216 | stroke-width: 2; 217 | } 218 | .activeCrit0, 219 | .activeCrit1, 220 | .activeCrit2, 221 | .activeCrit3 { 222 | stroke: #ff8888; 223 | fill: #bfc7ff; 224 | stroke-width: 2; 225 | } 226 | .doneCrit0, 227 | .doneCrit1, 228 | .doneCrit2, 229 | .doneCrit3 { 230 | stroke: #ff8888; 231 | fill: lightgrey; 232 | stroke-width: 2; 233 | cursor: pointer; 234 | shape-rendering: crispEdges; 235 | } 236 | .doneCritText0, 237 | .doneCritText1, 238 | .doneCritText2, 239 | .doneCritText3 { 240 | fill: black !important; 241 | } 242 | .activeCritText0, 243 | .activeCritText1, 244 | .activeCritText2, 245 | .activeCritText3 { 246 | fill: black !important; 247 | } 248 | .titleText { 249 | text-anchor: middle; 250 | font-size: 18px; 251 | fill: black; 252 | } 253 | /* 254 | 255 | 256 | */ 257 | .node text { 258 | font-family: 'trebuchet ms', verdana, arial; 259 | font-size: 14px; 260 | } 261 | div.mermaidTooltip { 262 | position: absolute; 263 | text-align: center; 264 | max-width: 200px; 265 | padding: 2px; 266 | font-family: 'trebuchet ms', verdana, arial; 267 | font-size: 12px; 268 | background: #ffffde; 269 | border: 1px solid #aaaa33; 270 | border-radius: 2px; 271 | pointer-events: none; 272 | z-index: 100; 273 | } 274 | -------------------------------------------------------------------------------- /Notepad++/tools/MarkdownLiteraryProgramming/js/prismjs/prism.css: -------------------------------------------------------------------------------- 1 | /* PrismJS 1.15.0 2 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+asciidoc+csharp+bash+basic+batch+cpp+clojure+css-extras+fsharp+go+graphql+ini+java+json+julia+markdown+lisp+makefile+pascal+sql+powershell+processing+prolog+python+r+typescript+rest+textile+scheme+plsql+toml+vbnet+visual-basic+wasm+wiki+xquery */ 3 | /** 4 | * prism.js default theme for JavaScript, CSS and HTML 5 | * Based on dabblet (http://dabblet.com) 6 | * @author Lea Verou 7 | */ 8 | 9 | code[class*="language-"], 10 | pre[class*="language-"] { 11 | color: black; 12 | background: none; 13 | text-shadow: 0 1px white; 14 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 15 | text-align: left; 16 | white-space: pre; 17 | word-spacing: normal; 18 | word-break: normal; 19 | word-wrap: normal; 20 | line-height: 1.5; 21 | 22 | -moz-tab-size: 4; 23 | -o-tab-size: 4; 24 | tab-size: 4; 25 | 26 | -webkit-hyphens: none; 27 | -moz-hyphens: none; 28 | -ms-hyphens: none; 29 | hyphens: none; 30 | } 31 | 32 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 33 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 34 | text-shadow: none; 35 | background: #b3d4fc; 36 | } 37 | 38 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 39 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 40 | text-shadow: none; 41 | background: #b3d4fc; 42 | } 43 | 44 | @media print { 45 | code[class*="language-"], 46 | pre[class*="language-"] { 47 | text-shadow: none; 48 | } 49 | } 50 | 51 | /* Code blocks */ 52 | pre[class*="language-"] { 53 | padding: 1em; 54 | margin: .5em 0; 55 | overflow: auto; 56 | } 57 | 58 | :not(pre) > code[class*="language-"], 59 | pre[class*="language-"] { 60 | background: #f5f2f0; 61 | } 62 | 63 | /* Inline code */ 64 | :not(pre) > code[class*="language-"] { 65 | padding: .1em; 66 | border-radius: .3em; 67 | white-space: normal; 68 | } 69 | 70 | .token.comment, 71 | .token.prolog, 72 | .token.doctype, 73 | .token.cdata { 74 | color: slategray; 75 | } 76 | 77 | .token.punctuation { 78 | color: #999; 79 | } 80 | 81 | .namespace { 82 | opacity: .7; 83 | } 84 | 85 | .token.property, 86 | .token.tag, 87 | .token.boolean, 88 | .token.number, 89 | .token.constant, 90 | .token.symbol, 91 | .token.deleted { 92 | color: #905; 93 | } 94 | 95 | .token.selector, 96 | .token.attr-name, 97 | .token.string, 98 | .token.char, 99 | .token.builtin, 100 | .token.inserted { 101 | color: #690; 102 | } 103 | 104 | .token.operator, 105 | .token.entity, 106 | .token.url, 107 | .language-css .token.string, 108 | .style .token.string { 109 | color: #9a6e3a; 110 | background: hsla(0, 0%, 100%, .5); 111 | } 112 | 113 | .token.atrule, 114 | .token.attr-value, 115 | .token.keyword { 116 | color: #07a; 117 | } 118 | 119 | .token.function, 120 | .token.class-name { 121 | color: #DD4A68; 122 | } 123 | 124 | .token.regex, 125 | .token.important, 126 | .token.variable { 127 | color: #e90; 128 | } 129 | 130 | .token.important, 131 | .token.bold { 132 | font-weight: bold; 133 | } 134 | .token.italic { 135 | font-style: italic; 136 | } 137 | 138 | .token.entity { 139 | cursor: help; 140 | } 141 | 142 | -------------------------------------------------------------------------------- /Notepad++/tools/MultiMarkdown/readme.md: -------------------------------------------------------------------------------- 1 | # MultiMarkdown 2 | 3 | Lightweight markup processor to produce HTML, LaTeX, and more. 4 | 5 | https://fletcher.github.io/MultiMarkdown-6/ 6 | 7 | https://github.com/fletcher/MultiMarkdown-6 -------------------------------------------------------------------------------- /Notepad++/tools/clj/hiccup2html.clj: -------------------------------------------------------------------------------- 1 | ; Author: Lin Pengcheng 2 | ; My Blog: [The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Principle-based Warehouse/Workshop Model](https://github.com/linpengcheng/PurefunctionPipelineDataflow) 3 | 4 | (use 'hiccup.core) 5 | (->> *command-line-args* 6 | first 7 | slurp 8 | read-string 9 | eval 10 | html 11 | print) 12 | -------------------------------------------------------------------------------- /Notepad++/tools/clj/mlp.clj: -------------------------------------------------------------------------------- 1 | ; # Markdown literary programming for Clojure 2 | 3 | ; Author: Lin Pengcheng 4 | 5 | ; My Blog: [The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Principle-based Warehouse/Workshop Model](https://github.com/linpengcheng/PurefunctionPipelineDataflow) 6 | 7 | ; Reference: [Markdown Literary programming that don't break the syntax of any programming language](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md) 8 | 9 | ; ## Config 10 | 11 | (def npp-tools "C:/Notepad++/tools") 12 | 13 | ; md2html-method: 14 | ; - :cmark-gfm (support button, don't support TOC) 15 | ; - :MultiMarkdown (support TOC, button display fail) 16 | ; - :pandoc (Don't use, Notepad++ preview HTML plugin don't support) 17 | ; - :bootleg (don't recommended) 18 | 19 | (def md2html-method :cmark-gfm) 20 | (def save-md-file? false) 21 | (def save-html-file? false) 22 | 23 | ; ## Deps 24 | 25 | (use 'babashka.fs 26 | 'clojure.java.shell 27 | 'clojure.string) 28 | 29 | ; ## Var 30 | 31 | (def src-path-txt (first *command-line-args*)) 32 | (def md-path-txt (str src-path-txt ".md")) 33 | (def html-path-txt (str src-path-txt ".html")) 34 | 35 | (def npp_mlp_dir (str npp-tools "/MarkdownLiteraryProgramming")) 36 | 37 | (def re-blank-line #"(?m)^(\s*)[\r\n]+") 38 | (def re-code-blocks #"(?m)^\s*[^;]([.\s\S\w\r\n]*?)\r\n;") ;" 39 | (def re-line-comment #"(?m)^\s*;[ ]?") ;" 40 | 41 | ; ## md2html Method 42 | 43 | ; ### bootleg (don't recommended) 44 | ; ``` 45 | ;; (use 'babashka.pods) 46 | ;; (load-pod "bootleg") 47 | ;; (use 'pod.retrogradeorbit.bootleg.markdown) 48 | ;; (defn bootleg2html [md-txt] 49 | ;; (let [html-txt (markdown md-txt :data :html)] 50 | ;; (if save-md-file? 51 | ;; (spit md-path-txt md-txt :encoding "utf-8") 52 | ;; (delete-if-exists md-path-txt)) 53 | ;; (if save-html-file? 54 | ;; (spit html-path-txt html-txt :encoding "utf-8") 55 | ;; (delete-if-exists html-path-txt)) 56 | ;; html-txt)) 57 | ; ``` 58 | 59 | ; ### MultiMarkdown (option methon) 60 | 61 | (defn mmd-fenced-code-blocks [x] 62 | (-> x 63 | first 64 | (#(str "\r\n```language-clojure\r\n" % "\r\n```\r\n; ")))) 65 | 66 | (defn mmd2html [md-txt] 67 | (let [mmdexe (str npp-tools "/MultiMarkdown/bin/multimarkdown.exe") 68 | _ (spit md-path-txt md-txt :encoding "utf-8") 69 | _ (sh mmdexe "--to=html" 70 | (str "--output=" html-path-txt) 71 | md-path-txt) 72 | html-txt (slurp html-path-txt :encoding "utf-8")] 73 | (when-not save-md-file? 74 | (delete-if-exists md-path-txt)) 75 | (when-not save-html-file? 76 | (delete-if-exists html-path-txt)) 77 | html-txt)) 78 | 79 | (def mmd-head-txt 80 | (-> npp_mlp_dir 81 | (str , "/MLP_common_head_mmd.md") 82 | (slurp , :encoding "utf-8") 83 | (clojure.string/replace , #"%npp_mlp_dir%" npp_mlp_dir))) 84 | 85 | 86 | ; ### cmark_gfm (recommended method) 87 | 88 | (defn gfm-fenced-code-blocks [x] 89 | (-> x 90 | first 91 | (#(str "\r\n```clojure\r\n" % "\r\n```\r\n; ")))) 92 | 93 | (defn gfm2html [md-txt] 94 | (let [gfmexe (str npp-tools "/cmark_gfm/cmark-gfm.exe") 95 | _ (spit md-path-txt md-txt :encoding "utf-8") 96 | html-txt (-> (sh gfmexe "--to" "html" md-path-txt) 97 | :out 98 | (clojure.string/replace , 99 | #"class=\"language-mermaid\"" ;" 100 | "class=\"mermaid\""))] 101 | (when-not save-md-file? 102 | (delete-if-exists md-path-txt)) 103 | (if save-html-file? 104 | (spit html-path-txt html-txt :encoding "utf-8") 105 | (delete-if-exists html-path-txt)) 106 | html-txt)) 107 | 108 | (def gfm-head-txt 109 | (-> npp_mlp_dir 110 | (str , "/MLP_common_head_gfm.md") 111 | (slurp , :encoding "utf-8") 112 | (clojure.string/replace , #"%npp_mlp_dir%" npp_mlp_dir))) 113 | 114 | ; ### pandoc (Don't use, Notepad++ preview HTML plugin don't support) 115 | ;``` 116 | ;;(defn pandoc2html [md-txt] 117 | ;; (let [pandocexe (str npp-tools "/pandoc64/pandoc.exe") 118 | ;; _ (spit md-path-txt md-txt :encoding "utf-8") 119 | ;; _ (sh pandocexe "--from=markdown" 120 | ;; "--to=html" 121 | ;; "-o" html-path-txt 122 | ;; "--toc" 123 | ;; md-path-txt) 124 | ;; html-txt (slurp html-path-txt :encoding "utf-8")] 125 | ;; (when-not save-md-file? 126 | ;; (delete-if-exists md-path-txt)) 127 | ;; (when-not save-html-file? 128 | ;; (delete-if-exists html-path-txt)) 129 | ;; html-txt)) 130 | ;``` 131 | 132 | ; ### United md2html-method API 133 | 134 | ;; add Fenced code blocks 135 | (defn fenced-code-blocks [txt md2html-method] 136 | (case md2html-method 137 | :cmark-gfm 138 | (clojure.string/replace txt re-code-blocks gfm-fenced-code-blocks) 139 | :MultiMarkdown 140 | (clojure.string/replace txt re-code-blocks mmd-fenced-code-blocks) 141 | ;; :pandoc 142 | ;; (clojure.string/replace txt re-code-blocks mmd-fenced-code-blocks) 143 | ;; :bootleg 144 | ;; (clojure.string/replace , re-code-blocks mmd-fenced-code-blocks) 145 | (clojure.string/replace txt re-code-blocks gfm-fenced-code-blocks))) 146 | 147 | (defn common-head-tail [txt md2html-method] 148 | (let [md-tail-txt "\r\n\r\n\r\n\r\n"] 149 | (case md2html-method 150 | :cmark-gfm 151 | (str gfm-head-txt txt md-tail-txt) 152 | :MultiMarkdown 153 | (str mmd-head-txt txt md-tail-txt) 154 | ;; :pandoc 155 | ;; (str gfm-head-txt txt md-tail-txt) 156 | ;; :bootleg 157 | ;; (str gfm-head-txt txt md-tail-txt) 158 | (str gfm-head-txt txt md-tail-txt)))) 159 | 160 | (defn md2html [txt md2html-method] 161 | (case md2html-method 162 | :cmark-gfm 163 | (gfm2html txt) 164 | :MultiMarkdown 165 | (mmd2html txt) 166 | ;; :pandoc 167 | ;; (pandoc2html txt) 168 | ;; :bootleg 169 | ;; (bootleg2html txt) 170 | (gfm2html txt))) 171 | 172 | ; ## Main 173 | 174 | (-> src-path-txt 175 | (slurp , :encoding "utf-8") 176 | (clojure.string/replace , re-blank-line ";\r\n") ;line comment let blank line to md blank line 177 | (fenced-code-blocks , md2html-method) 178 | (clojure.string/replace , re-line-comment "") ;remove all first line comment chars at line ahead 179 | (common-head-tail , md2html-method) 180 | (md2html , md2html-method) 181 | println) 182 | 183 | ; ## End 184 | -------------------------------------------------------------------------------- /Notepad++/tools/clj/npp_convert.clj: -------------------------------------------------------------------------------- 1 | ; Author: Lin Pengcheng 2 | ; My Blog: [The Grand Unified Programming Theory: The Pure Function Pipeline Data Flow with Principle-based Warehouse/Workshop Model](https://github.com/linpengcheng/PurefunctionPipelineDataflow) 3 | 4 | (ns npp-convert) 5 | 6 | (defn convert [] 7 | (->> *command-line-args* 8 | (apply str ,) 9 | (#(str "Hello " % "! ")) 10 | ;class 11 | print)) 12 | 13 | (convert) 14 | -------------------------------------------------------------------------------- /Notepad++/tools/clj/readme.md: -------------------------------------------------------------------------------- 1 | # babashka 2 | 3 | Babashka is a native Clojure interpreter for 4 | scripting with fast startup. Its main goal is 5 | to leverage Clojure in places where you would 6 | be using bash otherwise. 7 | 8 | https://github.com/babashka/babashka 9 | 10 | # Clj-kondo 11 | 12 | Clj-kondo performs static analysis on Clojure, 13 | ClojureScript and EDN, without the need of a 14 | running REPL. It informs you about potential 15 | errors while you are typing. 16 | 17 | https://github.com/clj-kondo/clj-kondo 18 | 19 | # Hiccup-cli 20 | 21 | Command line tool / Emacs plugin to convert HTML to Hiccup syntax. 22 | 23 | https://github.com/kwrooijen/hiccup-cli 24 | -------------------------------------------------------------------------------- /Notepad++/tools/cmark_gfm/cmark-gfm-extensions.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/cmark_gfm/cmark-gfm-extensions.dll -------------------------------------------------------------------------------- /Notepad++/tools/cmark_gfm/cmark-gfm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/cmark_gfm/cmark-gfm.dll -------------------------------------------------------------------------------- /Notepad++/tools/cmark_gfm/cmark-gfm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/cmark_gfm/cmark-gfm.exe -------------------------------------------------------------------------------- /Notepad++/tools/cmark_gfm/help.txt: -------------------------------------------------------------------------------- 1 | cmark-gfm-0.28.3.gfm.15 2 | 3 | Usage: cmark-gfm [FILE*] 4 | Options: 5 | --to, -t FORMAT Specify output format (html, xml, man, commonmark, plaintext, latex) 6 | 指定输出格式 7 | --width WIDTH Specify wrap width (default 0 = nowrap) 8 | 指定换行宽度 9 | --sourcepos Include source position attribute 10 | 源位置属性 11 | --hardbreaks Treat newlines as hard line breaks 12 | 将新行视为硬回车 13 | --nobreaks Render soft line breaks as spaces 14 | 软回车视为空格渲染 15 | --safe Suppress raw HTML and dangerous URLs 16 | 抑制原始 HTML 和危险 Url 17 | --smart Use smart punctuation 18 | 使用智能标点符号 19 | --validate-utf8 Replace UTF-8 invalid sequences with U+FFFD 20 | 将utf8无效序列替换为 U+FFFD 21 | --github-pre-lang Use GitHub-style
 for code blocks
22 |                     对于代码块使用GitHub-style 
23 |   --footnotes       Parse footnotes
24 |                     解析脚注
25 |   --extension, -e EXTENSION_NAME  Specify an extension name to use
26 |                                   指定要使用的扩展名称
27 |   --list-extensions               List available extensions and quit
28 |                                   列出可用扩展列表并退出
29 |   --strikethrough-double-tilde    Only parse strikethrough (if enabled)
30 |                                   with two tildes
31 |                                   仅使用两个倾斜法分析删除线 (如果启用)。
32 |   --table-prefer-style-attributes Use style attributes to align table cells
33 |                                   instead of align attributes.
34 |                                   使用样式属性对齐表格单元格, 而不是对齐属性。
35 | 
36 |   --full-info-string              Include remainder of code block info
37 |                                   string in a separate attribute.
38 |                                   在单独的属性中包含代码块信息字符串的其余部分。
39 |   --help, -h       Print usage information
40 |   
41 |   --version        Print version
42 | 


--------------------------------------------------------------------------------
/Notepad++/tools/cmark_gfm/x.html:
--------------------------------------------------------------------------------
  1 | 
  2 | 
  3 | 
  4 | 
  5 | 
  6 | 
  7 | 
  8 | 
 23 | 
24 |

-- coding:utf-8 --

25 |

Markdown Literary Programming

26 |

Author: Lin Pengcheng

27 |

Blog: Markdown Literary Programming

28 |

Note

29 |

Subdirectorys and file of mlt_base_dir

30 |
    31 |
  • 32 |

    out (Changeable)

    33 |
  • 34 |
  • 35 |

    js

    36 |
  • 37 |
  • 38 |

    image

    39 |
  • 40 |
  • 41 |

    css

    42 |
  • 43 |
  • 44 |

    MultiMarkdown (Optional)

    45 |
  • 46 |
  • 47 |

    CuteMarked (Optional)

    48 |
  • 49 |
  • 50 |

    ChromePortable (Optional)

    51 |
  • 52 |
  • 53 |

    MLT_common_head.md

    54 |
  • 55 |
56 |

out_dir can be separated from mlt_base_dir(public resource directory),

57 |

but must be on the same disk, in "mlt_common_head.md" file,

58 |

the path starts with the root path, for example:

59 |

/path_to/mlt_base_dir/js/prismjs/prism.js

60 |

Python lib

61 |

markdown or mistune does not support mermaid

62 |

Viewer

63 |

Cutemarked (viewer = 1)

64 |
    65 |
  • 66 |

    it is the only native Markdown viewer that supports JS, image, HTML.

    67 |
  • 68 |
  • 69 |

    it has an outline view of Markdown.

    70 |
  • 71 |
  • 72 |

    It exports HTML in chrome is not good to display.

    73 |
  • 74 |
75 |

MultiMarkdown + Chrome (viewer = 2)

76 |
    77 |
  • 78 |

    MultiMarkdown support TOC.

    79 |
  • 80 |
  • 81 |

    MultiMarkdown does not support the GitHub style

    82 |

    code block block and Mermaid charts,

    83 |

    I made a correction in py.

    84 |
  • 85 |
  • 86 |

    Multimarkdown faster and lighter than pandoc.

    87 |
  • 88 |
  • 89 |

    When converted to HTML, it is automatically open with Chrome,

    90 |

    and the display works well.

    91 |
  • 92 |
93 |

Markdownviewer++ (viewer = 3)

94 |
    95 |
  • 96 |

    It exports HTML in chrome is displayed very well

    97 |
  • 98 |
  • 99 |

    fast, Its viewer is only supported by plain text markdown LivePreview.

    100 |
  • 101 |
  • 102 |

    its viewer no syntax highlighted, no mermaid, no image displayed

    103 |
  • 104 |
105 |

cmark_gfm (viewer = 4)

106 |

Config

107 |

108 | 
109 | 
110 | viewer = 4
111 | 
112 | is_clean_mlt_out_dir = False
113 | 
114 | is_delete_generate_file = False
115 | 
116 | mlt_base_dir = notepad.getNppDir() + "\\MarkdownLiteraryProgramming"
117 | 
118 | mlt_out_dir = mlt_base_dir + "\\out"
119 | 
120 | # mlt_out_dir = mlt_base_dir
121 | 
122 | cutemarked_path = mlt_base_dir + "\\cutemarked\\cutemarked.exe"
123 | 
124 | multimarkdown_path = mlt_base_dir + "\\MultiMarkdown\\bin\\multimarkdown.exe"
125 | 
126 | chrome_path = "D:\\PortableApps\\GoogleChromePortable\\GoogleChromePortable.exe"
127 | 
128 | cmark_gfm_path = mlt_base_dir + "\\cmark_gfm\\cmark-gfm.exe"
129 | 
130 | 
131 | 
132 | 
133 |

End Config

134 |

Code

135 |

Init

136 |

137 | 
138 | 
139 | import os
140 | 
141 | import re
142 | 
143 | import time
144 | 
145 | 
146 | 
147 | notepad.save()
148 | 
149 | current_full_path = notepad.getCurrentFilename()
150 | 
151 | (current_dir, current_filename) = os.path.split(current_full_path)
152 | 
153 | 
154 | 
155 | if not os.path.exists(mlt_out_dir):
156 | 
157 |     os.makedirs(mlt_out_dir)
158 | 
159 | 
160 | 
161 | 
162 |

get Common Head Text

163 |

164 | 
165 | 
166 | common_head_txt = ""
167 | 
168 | common_head_file = mlt_base_dir + "\\MLP_common_head.md"
169 | 
170 | if os.path.exists(common_head_file):
171 | 
172 |     f= open(common_head_file,'r')
173 | 
174 |     common_head_txt = f.read()
175 | 
176 |     f.close()
177 | 
178 | replace_txt = ""
179 | 
180 | if mlt_out_dir == mlt_base_dir + "\\out":
181 | 
182 |     replace_txt = ".."
183 | 
184 | elif mlt_out_dir == mlt_base_dir:
185 | 
186 |     replace_txt = "."
187 | 
188 | else: # remove disk, unix style 
189 | 
190 |     replace_txt = re.sub('[a-z,A-Z]{1}:', "", mlt_base_dir)
191 | 
192 |     replace_txt = replace_txt.replace('\\','/')
193 | 
194 | common_head_txt = re.sub('%mlt_base_dir%', replace_txt, common_head_txt,0,re.M)	
195 | 
196 | 
197 | 
198 | 
199 |

Convert Markdown Literary Programming to Markdown

200 |

201 | 
202 | 
203 | dest_text = editor.getText()
204 | 
205 | # lisp or null (default as lisp) 
206 | 
207 | if editor.getLexerLanguage() == 'lisp' or editor.getLexerLanguage() == 'null':
208 | 
209 |     dest_text = re.sub(r'^;', "", dest_text,0,re.M)
210 | 
211 | elif editor.getLexerLanguage() == 'python' or editor.getLexerLanguage() == 'r':
212 | 
213 |     dest_text = re.sub(r'^#', "", dest_text,0,re.M)
214 | 
215 | elif editor.getLexerLanguage() == 'cpp':
216 | 
217 |     dest_text = re.sub(r'//', "", dest_text,0,re.M) 
218 | 
219 | else:
220 | 
221 |     dest_text = dest_text
222 | 
223 | # dest_text = common_head_txt + markdown.markdown(dest_text)
224 | 
225 | # dest_text = common_head_txt + mistune.markdown(dest_text)
226 | 
227 | 
228 | 
229 | 
230 |

merge Common Head Text and Markdown

231 |

232 | 
233 | 
234 | md_body_begin = '\r\n\r\n<article class="markdown-body">\r\n\r\n'
235 | 
236 | md_body_end   = '\r\n\r\n</article>'
237 | 
238 | TOC = "# Table of Contents \r\n\r\n{{TOC}}\r\n\r\n"
239 | 
240 | if viewer == 2:
241 | 
242 |     dest_text = common_head_txt + md_body_begin + TOC + dest_text +md_body_end
243 | 
244 | else:
245 | 
246 |     dest_text = common_head_txt + md_body_begin + dest_text + md_body_end
247 | 
248 | 
249 | 
250 | 
251 |

View

252 |

CuteMarked

253 |

254 | 
255 | 
256 | if viewer == 1:
257 | 
258 |     # Method 1: create a md file, to open by cutemarked.
259 | 
260 |     if not os.path.exists(cutemarked_path):
261 | 
262 |         cutemarked_url = "https://github.com/cloose/CuteMarkEd"
263 | 
264 |         msg = "CuteMarked.exe does not exists! \r\nvar cutemarked_path: " + cutemarked_path + "\r\nIt can be download from " + cutemarked_url
265 | 
266 |         notepad.messageBox(msg, "Warning", 0)
267 | 
268 |     dest_full_path = mlt_out_dir + "\\" + current_filename + ".md"
269 | 
270 |     f= open(dest_full_path,'w')
271 | 
272 |     f.write(dest_text)
273 | 
274 |     f.close()
275 | 
276 |     cmd = cutemarked_path + " " + dest_full_path
277 | 
278 |     # os.system(cmd)
279 | 
280 |     os.popen(cmd)
281 | 
282 |     if is_delete_generate_file:
283 | 
284 |         os.remove(dest_full_path)
285 | 
286 | 
287 | 
288 | 
289 |

cmark_gfm_path

290 |

291 | 
292 | 
293 | if viewer == 4:
294 | 
295 |     if not os.path.exists(cmark_gfm_path):
296 | 
297 |         cmark_gfm_url = "https://github.com/github/cmark-gfm"
298 | 
299 |         msg = "cmark_gfm.exe does not exists! \r\nvar cmark_gfm_path: " + cmark_gfm_path + "\r\nIt can be download from " + cmark_gfm_url
300 | 
301 |         notepad.messageBox(msg, "Warning", 0)
302 | 
303 |     if not os.path.exists(chrome_path):
304 | 
305 |         chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable"
306 | 
307 |         msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url
308 | 
309 |         notepad.messageBox(msg, "Warning", 0)
310 | 
311 |     md_full_path = mlt_out_dir + "\\" + current_filename + ".md"
312 | 
313 |     f= open(md_full_path,'w')
314 | 
315 |     f.write(dest_text)
316 | 
317 |     f.close()
318 | 
319 |     html_full_path = mlt_out_dir + "\\" + current_filename + ".html"
320 | 
321 |     cmd = cmark_gfm_path + " --github-pre-lang --footnotes --to=html " + md_full_path # + " " + html_full_path
322 | 
323 |     os.popen(cmd)
324 | 
325 |     cmd = chrome_path + " " + html_full_path
326 | 
327 |     os.popen(cmd)
328 | 
329 |     if is_delete_generate_file:
330 | 
331 |         time.sleep(15)
332 | 
333 |         os.remove(md_full_path)
334 | 
335 |         os.remove(html_full_path)
336 | 
337 | 
338 | 
339 | 
340 |

MultiMarkdown+Chrome

341 |

342 | 
343 | 
344 | elif viewer == 2:
345 | 
346 | 	  # Method 2: MultiMarkdown+Chrome 
347 | 
348 |     if not os.path.exists(multimarkdown_path):
349 | 
350 |         multimarkdown_url = "https://github.com/fletcher/MultiMarkdown-6"
351 | 
352 |         msg = "multimarkdown.exe does not exists! \r\nvar multimarkdown_path: " + multimarkdown_path + "\r\nIt can be download from " + multimarkdown_url
353 | 
354 |         notepad.messageBox(msg, "Warning", 0)
355 | 
356 |     if not os.path.exists(chrome_path):
357 | 
358 |         chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable"
359 | 
360 |         msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url
361 | 
362 |         notepad.messageBox(msg, "Warning", 0)
363 | 
364 |     md_full_path = mlt_out_dir + "\\" + current_filename + ".md"
365 | 
366 |     f= open(md_full_path,'w')
367 | 
368 |     f.write(dest_text)
369 | 
370 |     f.close()
371 | 
372 |     html_full_path = mlt_out_dir + "\\" + current_filename + ".html"
373 | 
374 |     cmd = multimarkdown_path + " --full --to=html --output=" + html_full_path + " " + md_full_path
375 | 
376 |     # cmd = multimarkdown_path + " --full " + md_full_path
377 | 
378 |     os.popen(cmd)
379 | 
380 |     f= open(html_full_path,'r')
381 | 
382 |     html_txt = f.read()
383 | 
384 |     f.close()
385 | 
386 |     html_txt = re.sub(r'<pre><code class="', r'<pre><code class="language-', html_txt, 0, re.M)
387 | 
388 |     html_txt = re.sub(r'<pre><code class="language-mermaid">', r'<pre><code class="mermaid">', html_txt, 0, re.M)
389 | 
390 |     html_txt = html_txt.replace("\r\n\r\n","\r\n")
391 | 
392 |     f= open(html_full_path,'w')
393 | 
394 |     f.write(html_txt)
395 | 
396 |     f.close()
397 | 
398 |     cmd = chrome_path + " " + html_full_path
399 | 
400 |     os.popen(cmd)
401 | 
402 |     if is_delete_generate_file:
403 | 
404 |         time.sleep(15)
405 | 
406 |         os.remove(md_full_path)
407 | 
408 |         os.remove(html_full_path)
409 | 
410 | 
411 | 
412 | 
413 |

MarkdownViewer++Chrome

414 |

415 | 
416 | 
417 | else:  
418 | 
419 |     # Method 3: MarkdownViewer++Chrome
420 | 
421 |     editor2= notepad.new()
422 | 
423 |     editor.setText(dest_text)
424 | 
425 |     # dest_full_path = mlt_out_dir + current_filename + ".md"
426 | 
427 |     # notepad.saveAs(dest_full_path)
428 | 
429 |     notepad.runPluginCommand('MarkdownViewer++','MarkdownViewer++')
430 | 
431 | 
432 | 
433 | 
434 |

Clean mlt_out_dir

435 |

436 | 
437 | 
438 | 
439 | 
440 | def del_file(path):
441 | 
442 |     ls = os.listdir(path)
443 | 
444 |     for i in ls:
445 | 
446 |         c_path = os.path.join(path, i)
447 | 
448 |         if os.path.isdir(c_path):
449 | 
450 |             del_file(c_path)
451 | 
452 |         else:
453 | 
454 |             os.remove(c_path)
455 | 
456 | 
457 | 
458 | if is_clean_mlt_out_dir:
459 | 
460 |     if viewer == 2:
461 | 
462 |         time.sleep(15)
463 | 
464 |     del_file(mlt_out_dir)
465 | 
466 |   
467 | 
468 | 
469 |

End Code

470 |
471 | -------------------------------------------------------------------------------- /Notepad++/tools/cmark_gfm/x.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 25 | 26 | 27 |
28 | 29 | -*- coding:utf-8 -*- 30 | 31 | # Markdown Literary Programming 32 | 33 | Author: Lin Pengcheng 34 | 35 | Blog: [Markdown Literary Programming](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md) 36 | 37 | ## Note 38 | 39 | ### Subdirectorys and file of mlt_base_dir 40 | 41 | - out (Changeable) 42 | - js 43 | - image 44 | - css 45 | - MultiMarkdown (Optional) 46 | - CuteMarked (Optional) 47 | - ChromePortable (Optional) 48 | - MLT_common_head.md 49 | 50 | out_dir can be separated from mlt_base_dir(public resource directory), 51 | but must be on the same disk, in "mlt_common_head.md" file, 52 | the path starts with the root path, for example: 53 | `/path_to/mlt_base_dir/js/prismjs/prism.js` 54 | 55 | ### Python lib 56 | 57 | markdown or mistune does not support mermaid 58 | 59 | ### Viewer 60 | 61 | #### Cutemarked (viewer = 1) 62 | 63 | - it is the only native Markdown viewer that supports JS, image, HTML. 64 | - it has an outline view of Markdown. 65 | - It exports HTML in chrome is not good to display. 66 | 67 | #### MultiMarkdown + Chrome (viewer = 2) 68 | 69 | - MultiMarkdown support TOC. 70 | - MultiMarkdown does not support the GitHub style 71 | code block block and Mermaid charts, 72 | I made a correction in py. 73 | - Multimarkdown faster and lighter than pandoc. 74 | - When converted to HTML, it is automatically open with Chrome, 75 | and the display works well. 76 | 77 | #### Markdownviewer++ (viewer = 3) 78 | 79 | - It exports HTML in chrome is displayed very well 80 | - fast, Its viewer is only supported by plain text markdown LivePreview. 81 | - its viewer no syntax highlighted, no mermaid, no image displayed 82 | 83 | #### cmark_gfm (viewer = 4) 84 | 85 | ## Config 86 | 87 | ```python 88 | 89 | viewer = 4 90 | is_clean_mlt_out_dir = False 91 | is_delete_generate_file = False 92 | mlt_base_dir = notepad.getNppDir() + "\\MarkdownLiteraryProgramming" 93 | mlt_out_dir = mlt_base_dir + "\\out" 94 | # mlt_out_dir = mlt_base_dir 95 | cutemarked_path = mlt_base_dir + "\\cutemarked\\cutemarked.exe" 96 | multimarkdown_path = mlt_base_dir + "\\MultiMarkdown\\bin\\multimarkdown.exe" 97 | chrome_path = "D:\\PortableApps\\GoogleChromePortable\\GoogleChromePortable.exe" 98 | cmark_gfm_path = mlt_base_dir + "\\cmark_gfm\\cmark-gfm.exe" 99 | 100 | ``` 101 | 102 | ## End Config 103 | 104 | ## Code 105 | 106 | ### Init 107 | 108 | ```python 109 | 110 | import os 111 | import re 112 | import time 113 | 114 | notepad.save() 115 | current_full_path = notepad.getCurrentFilename() 116 | (current_dir, current_filename) = os.path.split(current_full_path) 117 | 118 | if not os.path.exists(mlt_out_dir): 119 | os.makedirs(mlt_out_dir) 120 | 121 | ``` 122 | 123 | ### get Common Head Text 124 | 125 | ```python 126 | 127 | common_head_txt = "" 128 | common_head_file = mlt_base_dir + "\\MLP_common_head.md" 129 | if os.path.exists(common_head_file): 130 | f= open(common_head_file,'r') 131 | common_head_txt = f.read() 132 | f.close() 133 | replace_txt = "" 134 | if mlt_out_dir == mlt_base_dir + "\\out": 135 | replace_txt = ".." 136 | elif mlt_out_dir == mlt_base_dir: 137 | replace_txt = "." 138 | else: # remove disk, unix style 139 | replace_txt = re.sub('[a-z,A-Z]{1}:', "", mlt_base_dir) 140 | replace_txt = replace_txt.replace('\\','/') 141 | common_head_txt = re.sub('%mlt_base_dir%', replace_txt, common_head_txt,0,re.M) 142 | 143 | ``` 144 | 145 | ### Convert Markdown Literary Programming to Markdown 146 | 147 | ```python 148 | 149 | dest_text = editor.getText() 150 | # lisp or null (default as lisp) 151 | if editor.getLexerLanguage() == 'lisp' or editor.getLexerLanguage() == 'null': 152 | dest_text = re.sub(r'^;', "", dest_text,0,re.M) 153 | elif editor.getLexerLanguage() == 'python' or editor.getLexerLanguage() == 'r': 154 | dest_text = re.sub(r'^#', "", dest_text,0,re.M) 155 | elif editor.getLexerLanguage() == 'cpp': 156 | dest_text = re.sub(r'//', "", dest_text,0,re.M) 157 | else: 158 | dest_text = dest_text 159 | # dest_text = common_head_txt + markdown.markdown(dest_text) 160 | # dest_text = common_head_txt + mistune.markdown(dest_text) 161 | 162 | ``` 163 | 164 | ### merge Common Head Text and Markdown 165 | 166 | ```python 167 | 168 | md_body_begin = '\r\n\r\n
\r\n\r\n' 169 | md_body_end = '\r\n\r\n
' 170 | TOC = "# Table of Contents \r\n\r\n{{TOC}}\r\n\r\n" 171 | if viewer == 2: 172 | dest_text = common_head_txt + md_body_begin + TOC + dest_text +md_body_end 173 | else: 174 | dest_text = common_head_txt + md_body_begin + dest_text + md_body_end 175 | 176 | ``` 177 | 178 | ### View 179 | 180 | #### CuteMarked 181 | 182 | ```python 183 | 184 | if viewer == 1: 185 | # Method 1: create a md file, to open by cutemarked. 186 | if not os.path.exists(cutemarked_path): 187 | cutemarked_url = "https://github.com/cloose/CuteMarkEd" 188 | msg = "CuteMarked.exe does not exists! \r\nvar cutemarked_path: " + cutemarked_path + "\r\nIt can be download from " + cutemarked_url 189 | notepad.messageBox(msg, "Warning", 0) 190 | dest_full_path = mlt_out_dir + "\\" + current_filename + ".md" 191 | f= open(dest_full_path,'w') 192 | f.write(dest_text) 193 | f.close() 194 | cmd = cutemarked_path + " " + dest_full_path 195 | # os.system(cmd) 196 | os.popen(cmd) 197 | if is_delete_generate_file: 198 | os.remove(dest_full_path) 199 | 200 | ``` 201 | 202 | #### cmark_gfm_path 203 | 204 | ```python 205 | 206 | if viewer == 4: 207 | if not os.path.exists(cmark_gfm_path): 208 | cmark_gfm_url = "https://github.com/github/cmark-gfm" 209 | msg = "cmark_gfm.exe does not exists! \r\nvar cmark_gfm_path: " + cmark_gfm_path + "\r\nIt can be download from " + cmark_gfm_url 210 | notepad.messageBox(msg, "Warning", 0) 211 | if not os.path.exists(chrome_path): 212 | chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable" 213 | msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url 214 | notepad.messageBox(msg, "Warning", 0) 215 | md_full_path = mlt_out_dir + "\\" + current_filename + ".md" 216 | f= open(md_full_path,'w') 217 | f.write(dest_text) 218 | f.close() 219 | html_full_path = mlt_out_dir + "\\" + current_filename + ".html" 220 | cmd = cmark_gfm_path + " --github-pre-lang --footnotes --to=html " + md_full_path # + " " + html_full_path 221 | os.popen(cmd) 222 | cmd = chrome_path + " " + html_full_path 223 | os.popen(cmd) 224 | if is_delete_generate_file: 225 | time.sleep(15) 226 | os.remove(md_full_path) 227 | os.remove(html_full_path) 228 | 229 | ``` 230 | 231 | 232 | #### MultiMarkdown+Chrome 233 | 234 | ```python 235 | 236 | elif viewer == 2: 237 | # Method 2: MultiMarkdown+Chrome 238 | if not os.path.exists(multimarkdown_path): 239 | multimarkdown_url = "https://github.com/fletcher/MultiMarkdown-6" 240 | msg = "multimarkdown.exe does not exists! \r\nvar multimarkdown_path: " + multimarkdown_path + "\r\nIt can be download from " + multimarkdown_url 241 | notepad.messageBox(msg, "Warning", 0) 242 | if not os.path.exists(chrome_path): 243 | chrome_url = "https://portableapps.com/apps/internet/google_chrome_portable" 244 | msg = "Chrome.exe(or GoogleChromePortable.exe) does not exists! \r\nvar chrome_path: " + chrome_path + "\r\nIt can be download from " + chrome_url 245 | notepad.messageBox(msg, "Warning", 0) 246 | md_full_path = mlt_out_dir + "\\" + current_filename + ".md" 247 | f= open(md_full_path,'w') 248 | f.write(dest_text) 249 | f.close() 250 | html_full_path = mlt_out_dir + "\\" + current_filename + ".html" 251 | cmd = multimarkdown_path + " --full --to=html --output=" + html_full_path + " " + md_full_path 252 | # cmd = multimarkdown_path + " --full " + md_full_path 253 | os.popen(cmd) 254 | f= open(html_full_path,'r') 255 | html_txt = f.read() 256 | f.close() 257 | html_txt = re.sub(r'
', r'
', html_txt, 0, re.M)

259 |     html_txt = html_txt.replace("\r\n\r\n","\r\n")

260 |     f= open(html_full_path,'w')

261 |     f.write(html_txt)

262 |     f.close()

263 |     cmd = chrome_path + " " + html_full_path

264 |     os.popen(cmd)

265 |     if is_delete_generate_file:

266 |         time.sleep(15)

267 |         os.remove(md_full_path)

268 |         os.remove(html_full_path)

269 | 

270 | ```

271 | 

272 | #### MarkdownViewer++Chrome

273 | 

274 | ```python

275 | 

276 | else:  

277 |     # Method 3: MarkdownViewer++Chrome

278 |     editor2= notepad.new()

279 |     editor.setText(dest_text)

280 |     # dest_full_path = mlt_out_dir + current_filename + ".md"

281 |     # notepad.saveAs(dest_full_path)

282 |     notepad.runPluginCommand('MarkdownViewer++','MarkdownViewer++')

283 | 

284 | ```

285 | 

286 | ### Clean mlt_out_dir

287 | 

288 | ```python

289 | 

290 | 

291 | def del_file(path):

292 |     ls = os.listdir(path)

293 |     for i in ls:

294 |         c_path = os.path.join(path, i)

295 |         if os.path.isdir(c_path):

296 |             del_file(c_path)

297 |         else:

298 |             os.remove(c_path)

299 | 

300 | if is_clean_mlt_out_dir:

301 |     if viewer == 2:

302 |         time.sleep(15)

303 |     del_file(mlt_out_dir)

304 |   

305 | ```

306 | 

307 | ## End Code

308 | 

309 | 
-------------------------------------------------------------------------------- /Notepad++/tools/ctags/.ctags: -------------------------------------------------------------------------------- 1 | --langdef=Clojure 2 | --langmap=Clojure:.clj.cljs.cljc.cljr.cljx 3 | --regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 4 | --regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 5 | --regex-clojure=/\([ \t]*defn[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/ 6 | --regex-clojure=/\([ \t]*defn-[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/p,private function/ 7 | --regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 8 | --regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 9 | --regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 10 | --regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 11 | --regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 12 | --regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 13 | --regex-clojure=/\([ \t]*defrecord[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 14 | --regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 15 | --regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 16 | --exclude=target 17 | --exclude=out 18 | --exclude=.git 19 | -------------------------------------------------------------------------------- /Notepad++/tools/ctags/.ctags.bk: -------------------------------------------------------------------------------- 1 | --langdef=Clojure 2 | --langmap=Clojure:.clj.cljs.cljc.cljr.cljx 3 | --regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 4 | --regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 5 | --regex-clojure=/\([ \t]*defn[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/ 6 | --regex-clojure=/\([ \t]*defn-[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/p,private function/ 7 | --regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 8 | --regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 9 | --regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 10 | --regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 11 | --regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 12 | --regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 13 | --regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 14 | --regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 15 | --exclude=target 16 | --exclude=out 17 | --exclude=.git 18 | 19 | --langdef=Lisp 20 | --langmap=Lisp:.clj 21 | --langmap=Lisp:+.cljs 22 | --langmap=Lisp:+.cljc 23 | --langmap=Lisp:+.cljr 24 | --langmap=Lisp:+.cljx 25 | --regex-lisp=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 26 | --regex-lisp=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 27 | --regex-lisp=/\([ \t]*defn[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/ 28 | --regex-lisp=/\([ \t]*defn-[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/p,private function/ 29 | --regex-lisp=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 30 | --regex-lisp=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 31 | --regex-lisp=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 32 | --regex-lisp=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 33 | --regex-lisp=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 34 | --regex-lisp=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 35 | --regex-lisp=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 36 | --regex-lisp=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ -------------------------------------------------------------------------------- /Notepad++/tools/ctags/Clojure.ctags: -------------------------------------------------------------------------------- 1 | --langdef=Clojure 2 | --langmap=Clojure:.clj.cljs.cljc.cljr.cljx 3 | --regex-clojure=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 4 | --regex-clojure=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 5 | --regex-clojure=/\([ \t]*defn[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/ 6 | --regex-clojure=/\([ \t]*defn-[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/p,private function/ 7 | --regex-clojure=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 8 | --regex-clojure=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 9 | --regex-clojure=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 10 | --regex-clojure=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 11 | --regex-clojure=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 12 | --regex-clojure=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 13 | --regex-clojure=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 14 | --regex-clojure=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 15 | --exclude=target 16 | --exclude=out 17 | --exclude=.git 18 | -------------------------------------------------------------------------------- /Notepad++/tools/ctags/Lisp.ctags: -------------------------------------------------------------------------------- 1 | --langdef=Lisp 2 | --langmap=Lisp:.clj 3 | --langmap=Lisp:+.cljs 4 | --langmap=Lisp:+.cljc 5 | --langmap=Lisp:+.cljr 6 | --langmap=Lisp:+.cljx 7 | --regex-lisp=/\([ \t]*create-ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 8 | --regex-lisp=/\([ \t]*def[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/d,definition/ 9 | --regex-lisp=/\([ \t]*defn[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/f,function/ 10 | --regex-lisp=/\([ \t]*defn-[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/p,private function/ 11 | --regex-lisp=/\([ \t]*defmacro[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/m,macro/ 12 | --regex-lisp=/\([ \t]*definline[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/i,inline/ 13 | --regex-lisp=/\([ \t]*defmulti[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/a,multimethod definition/ 14 | --regex-lisp=/\([ \t]*defmethod[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/b,multimethod instance/ 15 | --regex-lisp=/\([ \t]*defonce[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/c,definition (once)/ 16 | --regex-lisp=/\([ \t]*defstruct[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/s,struct/ 17 | --regex-lisp=/\([ \t]*intern[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/v,intern/ 18 | --regex-lisp=/\([ \t]*ns[ \t]+([-[:alnum:]*+!_:\/.?]+)/\1/n,namespace/ 19 | 20 | 21 | -------------------------------------------------------------------------------- /Notepad++/tools/ctags/ctags.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Notepad++/tools/ctags/ctags.exe -------------------------------------------------------------------------------- /Notepad++/tools/marp_cli/readme.md: -------------------------------------------------------------------------------- 1 | # marp-cli 2 | 3 | A CLI interface, for Marp (using @marp-team/marp-core) and any slide deck converter based on Marpit framework. 4 | 5 | It can convert Marp / Marpit Markdown files into static HTML / CSS, PDF, PowerPoint document, and image(s) easily. 6 | 7 | https://github.com/marp-team/marp-cli -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/Clojure.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00; 01 02 03(comment 04) 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | ( ) [ ] { } 17 | 18 | ( 19 | 20 | ) 21 | 22 | 23 | 24 | 25 | 26 | 27 | : 28 | declare def definline defmacro defmethod defmulti defn defn- defonce defprotocol defrecord defstruct deftype fn 29 | if do let quote var loop recur throw try monitor-enter . * *' *1 *2 *3 *agent* *clojure-version* *command-line-args* *compile-files* *compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *in* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* *unchecked-math* *warn-on-reflection* + +' - -' -> ->> ->ArrayChunk ->Vec ->VecNode ->VecSeq .. / < <= = == > >= accessor aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! alter-var-root amap ancestors and apply areduce array-map ArrayChunk aset aset-boolean aset-byte aset-char aset-double aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast byte byte-array bytes case cast char char-array char-escape-string char-name-string char? chars class class? clear-agent-errors clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement concat cond condp conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? default-data-readers delay delay? deliver denominator deref derive descendants disj disj! dissoc dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last drop-while empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword find-ns find-var first flatten float float-array float? floats flush fn fn? fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta methods min min-key mod name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers print print-str printf println println-str prn prn-str promise proxy proxy-mappings proxy-super push-thread-bindings pvalues quot rand rand-int rand-nth range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive update-in update-proxy use val vals var-get var-set var? vary-meta vec Vec VecNode VecSeq vector vector-of vector? when when-first when-let when-not while with-bindings with-bindings* with-in-str with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap true false 30 | \ 31 | 32 | 33 | 34 | 35 | 00" 01 02" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/Excel.Formula.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [00]00 10 | ABS( ACCRINT( ACCRINTM( ACOS( ACOSH( ADDRESS( AGGREGATE( AMORDEGRC( AMORLINC( AND( AREAS( ASC( ASIN( ASINH( ATAN( ATAN2( ATANH( AVEDEV( AVERAGE( AVERAGEA( AVERAGEIF( AVERAGEIFS( BAHTTEXT( BESSELI( BESSELJ( BESSELK( BESSELY( BETA.DIST( BETA.INV( BETADIST( BETAINV( BIN2DEC( BIN2HEX( BIN2OCT( BINOM.DIST( BINOM.INV( BINOMDIST( CEILING( CEILING.PRECISE( CELL( CHAR( CHIDIST( CHIINV( CHISQ.DIST( CHISQ.DIST.RT( CHISQ.INV( CHISQ.INV.RT( CHISQ.TEST( CHITEST( CHOOSE( CLEAN( CODE( COLUMN( COLUMNS( COMBIN( COMPLEX( CONCATENATE( CONFIDENCE( CONFIDENCE.NORM( CONFIDENCE.T( CONVERT( CORREL( COS( COSH( COUNT( COUNTA( COUNTBLANK( COUNTIF( COUNTIFS( COUPDAYBS( COUPDAYS( COUPDAYSNC( COUPNCD( COUPNUM( COUPPCD( COVAR( COVARIANCE.P( COVARIANCE.S( CRITBINOM( CUBEKPIMEMBER( CUBEMEMBER( CUBEMEMBERPROPERTY( CUBERANKEDMEMBER( CUBESET( CUBESETCOUNT( CUBEVALUE( CUMIPMT( CUMPRINC( DATE( DATEDIF( DATEVALUE( DAVERAGE( DAY( DAYS360( DB( DCOUNT( DCOUNTA( DDB( DEC2BIN( DEC2HEX( DEC2OCT( DEGREES( DELTA( DEVSQ( DGET( DISC( DMAX( DMIN( DOLLAR( DOLLARDE( DOLLARFR( DPRODUCT( DSTDEV( DSTDEVP( DSUM( DURATION( DVAR( DVARP( EDATE( EFFECT( EOMONTH( ERF( ERFC( ERROR.TYPE( EUROCONVERT( EVEN( EXACT( EXP( EXPON.DIST( EXPONDIST( F.DIST( F.DIST.RT( F.INV( F.INV.RT( F.TEST( FACT( FACTDOUBLE( FALSE( FDIST( FIND( FINDB( FINV( FISHER( FISHERINV( FIXED( FLOOR( FORECAST( FREQUENCY( FTEST( FV( FVSCHEDULE( GAMMA.DIST( GAMMA.INV( GAMMADIST( GAMMAINV( GAMMALN( GCD( GEOMEAN( GESTEP( GETPIVOTDATA( GROWTH( HARMEAN( HEX2BIN( HEX2DEC( HEX2OCT( HLOOKUP( HOUR( HYPERLINK( HYPGEOM.DIST( HYPGEOMDIST( IF( IFERROR( IMABS( IMAGINARY( IMARGUMENT( IMCONJUGATE( IMCOS( IMDIV( IMEXP( IMLN( IMLOG10( IMLOG2( IMPOWER( IMPRODUCT( IMREAL( IMSIN( IMSQRT( IMSUB( IMSUM( INDEX( INDIRECT( INFO( INT( INTERCEPT( INTRATE( IPMT( IRR( ISBLANK( ISERR( ISERROR( ISEVEN( ISLOGICAL( ISNA( ISNONTEXT( ISNUMBER( ISODD( ISPMT( ISREF( ISTEXT( KURT( LARGE( LCM( LEFT( LEFTB( LEN( LENB( LINEST( LN( LOG( LOG10( LOGEST( LOGINV( LOGNORM.DIST( LOGNORM.INV( LOGNORMDIST( LOOKUP( LOWER( MATCH( MAX( MAXA( MDETERM( MDURATION( MEDIAN( MID( MIDB( MIN( MINA( MINUTE( MINVERSE( MIRR( MMULT( MOD( MODE( MODE.MULT( MODE.SNGL( MONTH( MROUND( MULTINOMIAL( N( NA( NEGBINOM.DIST( NEGBINOMDIST( NETWORKDAYS( NETWORKDAYS.INTL( NOMINAL( NORM.DIST( NORM.INV( NORM.S.DIST( NORM.S.INV( NORMDIST( NORMINV( NORMSDIST( NORMSINV( NOT( NOW( NPER( NPV( OCT2BIN( OCT2DEC( OCT2HEX( ODD( ODDFPRICE( ODDFYIELD( ODDLPRICE( ODDLYIELD( OFFSET( OR( PEARSON( PERCENTILE( PERCENTILE.EXC( PERCENTILE.INC( PERCENTRANK( PERCENTRANK.EXC( PERCENTRANK.INC( PERMUT( PHONETIC( PI( PMT( POISSON( POISSON.DIST( POWER( PPMT( PRICE( PRICEDISC( PRICEMAT( PROB( PRODUCT( PROPER( PV( QUARTILE( QUARTILE.EXC( QUARTILE.EXC( QUARTILE.INC( QUARTILE.INC( QUOTIENT( RADIANS( RAND( RANDBETWEEN( RANK( RANK.AVG( RANK.EQ( RATE( RECEIVED( REPLACE,( REPT( RIGHT,( ROMAN( ROUND( ROUNDDOWN( ROUNDUP( ROW( ROWS( RSQ( RTD( SEARCH,( SEARCHB( SECOND( SERIESSUM( SIGN( SIN( SINH( SKEW( SLN( SLOPE( SMALL( SQL.REQUEST( SQRT( SQRTPI( STANDARDIZE( STDEV( STDEV.P( STDEV.S( STDEVA( STDEVP( STDEVPA( STEYX( SUBSTITUTE( SUBTOTAL( SUM( SUMIF( SUMIFS( SUMIFS( SUMPRODUCT( SUMSQ( SUMX2MY2( SUMX2PY2( SUMXMY2( SYD( T( T.DIST( T.DIST.2T( T.DIST.RT( T.INV( T.INV.2T( T.TEST( TAN( TANH( TBILLEQ( TBILLPRICE( TBILLYIELD( TDIST( TEXT( TIME( TIMEVALUE( TINV( TODAY( TRANSPOSE( TREND( TRIM( TRIMMEAN( TRUE( TRUNC( TTEST( TYPE( UPPER( VALUE( VAR( VAR.P( VAR.S( VARA( VARP( VARPA( VDB( VLOOKUP( WEEKDAY( WEEKNUM( WEIBULL( WEIBULL.DIST( WEIBULL.DIST( WORKDAY( WORKDAY.INTL( WORKDAY.INTL( XIRR( XNPV( YEAR( YEARFRAC( YIELD( YIELDDISC( YIELDMAT( Z.TEST( ZTEST( 11 | ) 12 | - " % & , / ^ { } + < = > 13 | 1' 2' 0' 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/Excel_Formula.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [00]00 10 | ABS( ACCRINT( ACCRINTM( ACOS( ACOSH( ADDRESS( AGGREGATE( AMORDEGRC( AMORLINC( AND( AREAS( ASC( ASIN( ASINH( ATAN( ATAN2( ATANH( AVEDEV( AVERAGE( AVERAGEA( AVERAGEIF( AVERAGEIFS( BAHTTEXT( BESSELI( BESSELJ( BESSELK( BESSELY( BETA.DIST( BETA.INV( BETADIST( BETAINV( BIN2DEC( BIN2HEX( BIN2OCT( BINOM.DIST( BINOM.INV( BINOMDIST( CEILING( CEILING.PRECISE( CELL( CHAR( CHIDIST( CHIINV( CHISQ.DIST( CHISQ.DIST.RT( CHISQ.INV( CHISQ.INV.RT( CHISQ.TEST( CHITEST( CHOOSE( CLEAN( CODE( COLUMN( COLUMNS( COMBIN( COMPLEX( CONCATENATE( CONFIDENCE( CONFIDENCE.NORM( CONFIDENCE.T( CONVERT( CORREL( COS( COSH( COUNT( COUNTA( COUNTBLANK( COUNTIF( COUNTIFS( COUPDAYBS( COUPDAYS( COUPDAYSNC( COUPNCD( COUPNUM( COUPPCD( COVAR( COVARIANCE.P( COVARIANCE.S( CRITBINOM( CUBEKPIMEMBER( CUBEMEMBER( CUBEMEMBERPROPERTY( CUBERANKEDMEMBER( CUBESET( CUBESETCOUNT( CUBEVALUE( CUMIPMT( CUMPRINC( DATE( DATEDIF( DATEVALUE( DAVERAGE( DAY( DAYS360( DB( DCOUNT( DCOUNTA( DDB( DEC2BIN( DEC2HEX( DEC2OCT( DEGREES( DELTA( DEVSQ( DGET( DISC( DMAX( DMIN( DOLLAR( DOLLARDE( DOLLARFR( DPRODUCT( DSTDEV( DSTDEVP( DSUM( DURATION( DVAR( DVARP( EDATE( EFFECT( EOMONTH( ERF( ERFC( ERROR.TYPE( EUROCONVERT( EVEN( EXACT( EXP( EXPON.DIST( EXPONDIST( F.DIST( F.DIST.RT( F.INV( F.INV.RT( F.TEST( FACT( FACTDOUBLE( FALSE( FDIST( FIND( FINDB( FINV( FISHER( FISHERINV( FIXED( FLOOR( FORECAST( FREQUENCY( FTEST( FV( FVSCHEDULE( GAMMA.DIST( GAMMA.INV( GAMMADIST( GAMMAINV( GAMMALN( GCD( GEOMEAN( GESTEP( GETPIVOTDATA( GROWTH( HARMEAN( HEX2BIN( HEX2DEC( HEX2OCT( HLOOKUP( HOUR( HYPERLINK( HYPGEOM.DIST( HYPGEOMDIST( IF( IFERROR( IMABS( IMAGINARY( IMARGUMENT( IMCONJUGATE( IMCOS( IMDIV( IMEXP( IMLN( IMLOG10( IMLOG2( IMPOWER( IMPRODUCT( IMREAL( IMSIN( IMSQRT( IMSUB( IMSUM( INDEX( INDIRECT( INFO( INT( INTERCEPT( INTRATE( IPMT( IRR( ISBLANK( ISERR( ISERROR( ISEVEN( ISLOGICAL( ISNA( ISNONTEXT( ISNUMBER( ISODD( ISPMT( ISREF( ISTEXT( KURT( LARGE( LCM( LEFT( LEFTB( LEN( LENB( LINEST( LN( LOG( LOG10( LOGEST( LOGINV( LOGNORM.DIST( LOGNORM.INV( LOGNORMDIST( LOOKUP( LOWER( MATCH( MAX( MAXA( MDETERM( MDURATION( MEDIAN( MID( MIDB( MIN( MINA( MINUTE( MINVERSE( MIRR( MMULT( MOD( MODE( MODE.MULT( MODE.SNGL( MONTH( MROUND( MULTINOMIAL( N( NA( NEGBINOM.DIST( NEGBINOMDIST( NETWORKDAYS( NETWORKDAYS.INTL( NOMINAL( NORM.DIST( NORM.INV( NORM.S.DIST( NORM.S.INV( NORMDIST( NORMINV( NORMSDIST( NORMSINV( NOT( NOW( NPER( NPV( OCT2BIN( OCT2DEC( OCT2HEX( ODD( ODDFPRICE( ODDFYIELD( ODDLPRICE( ODDLYIELD( OFFSET( OR( PEARSON( PERCENTILE( PERCENTILE.EXC( PERCENTILE.INC( PERCENTRANK( PERCENTRANK.EXC( PERCENTRANK.INC( PERMUT( PHONETIC( PI( PMT( POISSON( POISSON.DIST( POWER( PPMT( PRICE( PRICEDISC( PRICEMAT( PROB( PRODUCT( PROPER( PV( QUARTILE( QUARTILE.EXC( QUARTILE.EXC( QUARTILE.INC( QUARTILE.INC( QUOTIENT( RADIANS( RAND( RANDBETWEEN( RANK( RANK.AVG( RANK.EQ( RATE( RECEIVED( REPLACE,( REPT( RIGHT,( ROMAN( ROUND( ROUNDDOWN( ROUNDUP( ROW( ROWS( RSQ( RTD( SEARCH,( SEARCHB( SECOND( SERIESSUM( SIGN( SIN( SINH( SKEW( SLN( SLOPE( SMALL( SQL.REQUEST( SQRT( SQRTPI( STANDARDIZE( STDEV( STDEV.P( STDEV.S( STDEVA( STDEVP( STDEVPA( STEYX( SUBSTITUTE( SUBTOTAL( SUM( SUMIF( SUMIFS( SUMIFS( SUMPRODUCT( SUMSQ( SUMX2MY2( SUMX2PY2( SUMXMY2( SYD( T( T.DIST( T.DIST.2T( T.DIST.RT( T.INV( T.INV.2T( T.TEST( TAN( TANH( TBILLEQ( TBILLPRICE( TBILLYIELD( TDIST( TEXT( TIME( TIMEVALUE( TINV( TODAY( TRANSPOSE( TREND( TRIM( TRIMMEAN( TRUE( TRUNC( TTEST( TYPE( UPPER( VALUE( VAR( VAR.P( VAR.S( VARA( VARP( VARPA( VDB( VLOOKUP( WEEKDAY( WEEKNUM( WEIBULL( WEIBULL.DIST( WEIBULL.DIST( WORKDAY( WORKDAY.INTL( WORKDAY.INTL( XIRR( XNPV( YEAR( YEARFRAC( YIELD( YIELDDISC( YIELDMAT( Z.TEST( ZTEST( 11 | ) 12 | - " % & , / ^ { } + < = > 13 | 1' 2' 0' 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/asciidoc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00// 01 02 03//// 04//// 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | - " * : ^ ` | ~ + < = > image ( ) _ 17 | ' 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | NOTE IMPORTANT WARNING TIP CAUTION TESTME 30 | 31 | 32 | 33 | 34 | 35 | 00" 01 02" 03[ 04 05] 06` 07 08` 09` 10 11' 12_ 13 14_ 15 16 17 18 19 20 21 22 23 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/graphviz.dart.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 00// 01 02 03/* 04*/ 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | = -> [ ] 26 | 27 | { 28 | 29 | } 30 | 31 | 32 | 33 | 34 | 35 | 36 | node edge graph digraph subgraph strict 37 | area arrowhead arrowsize arrowtail aspect bb bgcolor center charset clusterrank color colorscheme comment compound concentrate constraint Damping decorate defaultdist dim dimen dir diredgeconstraints distortion dpi edgehref edgetarget edgetooltip edgeURL epsilon esep fillcolor fixedsize fontcolor fontname fontnames fontpath fontsize forcelabels gradientangle group head_lp headclip headhref headlabel headport headtarget headtooltip headURL height href id image imagepath imagescale K label label_scheme labelangle labeldistance labelfloat labelfontcolor labelfontname labelfontsize labelhref labeljust labelloc labeltarget labeltooltip labelURL landscape layer layerlistsep layers layerselect layersep layout len levels levelsgap lhead lheight lp ltail lwidth margin maxiter mclimit mindist minlen mode model mosek nodesep nojustify normalize nslimit nslimit1 ordering orientation orientation outputorder overlap overlap_scaling pack packmode pad page pagedir pencolor penwidth peripheries pin pos quadtree quantum rank rankdir ranksep ratio rects regular remincross repulsiveforce resolution root rotate rotation samehead sametail samplepoints scale searchsize sep shape shapefile showboxes sides size skew smoothing sortv splines start style stylesheet tail_lp tailclip tailhref taillabel tailport tailtarget tailtooltip tailURL target tooltip truecolor URL vertices viewport voro_margin weight width xlabel xlp z 38 | n ne e se s sw w nw c _ 39 | cluster 40 | _ 41 | 42 | 43 | 44 | 00" 01 02" 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/markdown_monokai.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00# 01 02 03<!-- 04--> 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | http:// https:// 28 | ==== ---- 29 | 30 | 31 | 32 | 33 | 34 | 35 | 00[ 01 02] 03` 04 05` 06** 07 08** 09* 10 11* 12_ 13 14_ 15( 16 17) 18 19 20 21 22 23 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/org.mode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00 01 02 03 04 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | * 25 | 26 | ____ 27 | TODO 28 | WIP 29 | DONE 30 | PB 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/reStructuredText.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00 01 02 03 04 9 | 10 | 11 | 12 | 13 | . 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | > :a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w :x :y :z 28 | http <http ftp:// ftps:// <ftp 29 | admonition:: attention:: caution:: class:: code:: compound:: container:: contents:: csv-table:: danger:: date:: default-role:: epigraph:: error:: figure:: footer:: header:: highlights:: hint:: image:: important:: include:: line-block:: list-table:: math:: meta:: note:: parsed-literal:: pull-quote:: raw:: replace:: role:: rubric:: section-autonumbering:: sectnum:: sidebar:: table:: target-notes:: tip:: title:: toctree:: topic:: unicode:: warning:: 30 | #. - + 31 | == -- ^^ ~~ +== +-- 32 | _ 33 | 34 | 35 | 00[ 00`` 00` 00| 01 02] 02`` 02` 02((| EOL)) 03_` 04 05` 06** 06* 07 08((** EOL)) 08((* EOL)) 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Notepad++/userDefineLangs/reStructuredText_dracula.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 00 01 02 03 04 9 | 10 | 11 | 12 | 13 | . 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | > :a :b :c :d :e :f :g :h :i :j :k :l :m :n :o :p :q :r :s :t :u :v :w :x :y :z 28 | http <http ftp:// ftps:// <ftp 29 | admonition:: attention:: caution:: class:: code:: compound:: container:: contents:: csv-table:: danger:: date:: default-role:: epigraph:: error:: figure:: footer:: header:: highlights:: hint:: image:: important:: include:: line-block:: list-table:: math:: meta:: note:: parsed-literal:: pull-quote:: raw:: replace:: role:: rubric:: section-autonumbering:: sectnum:: sidebar:: table:: target-notes:: tip:: title:: toctree:: topic:: unicode:: warning:: 30 | #. - + 31 | == -- ^^ ~~ +== +-- 32 | _ 33 | 34 | 35 | 00[ 00`` 00` 00| 01 02] 02`` 02` 02((| EOL)) 03_` 04 05` 06** 06* 07 08((** EOL)) 08((* EOL)) 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Screenshots/ClojureBoxNpp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/ClojureBoxNpp.jpg -------------------------------------------------------------------------------- /Screenshots/edit_hiccup_with_live_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/edit_hiccup_with_live_preview.png -------------------------------------------------------------------------------- /Screenshots/md_outline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/md_outline.png -------------------------------------------------------------------------------- /Screenshots/mlp_clj.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/mlp_clj.png -------------------------------------------------------------------------------- /Screenshots/mlp_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/mlp_image.png -------------------------------------------------------------------------------- /Screenshots/mlp_mermaid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/mlp_mermaid.png -------------------------------------------------------------------------------- /Screenshots/mlp_ui_cljs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/mlp_ui_cljs.png -------------------------------------------------------------------------------- /Screenshots/nppBracketHighlighter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/nppBracketHighlighter.png -------------------------------------------------------------------------------- /Screenshots/setting_LanguageHelp_plugin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_LanguageHelp_plugin.jpg -------------------------------------------------------------------------------- /Screenshots/setting_MultiEditing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_MultiEditing.jpg -------------------------------------------------------------------------------- /Screenshots/setting_XBrackets_plugin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_XBrackets_plugin.jpg -------------------------------------------------------------------------------- /Screenshots/setting_autocomplete.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_autocomplete.jpg -------------------------------------------------------------------------------- /Screenshots/setting_defalang.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_defalang.jpg -------------------------------------------------------------------------------- /Screenshots/setting_delimiter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_delimiter.jpg -------------------------------------------------------------------------------- /Screenshots/setting_tab_space.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/linpengcheng/ClojureBoxNpp/f1faec68a6efe4fa14ec62dbec9230f5a6c72f92/Screenshots/setting_tab_space.jpg -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | **ClojureBoxNpp** 2 | 3 | Notepad++ patch for Clojure by: 4 | - Methord 01: modifying config files of Lisp. 5 | - Methord 02: userDefineLangs: Clojure 6 | 7 | ### Screenshots: 8 | 9 | ![](./Screenshots/ClojureBoxNpp.jpg) 10 | 11 | BracketHighlighter: 12 | 13 | ![](./Screenshots/nppBracketHighlighter.png) 14 | 15 | Markdown outline: 16 | 17 | ![](./Screenshots/md_outline.png) 18 | 19 | Markdown Literary Programming 01: Code with syntax highlighting 20 | 21 | ![](./Screenshots/mlp_clj.png) 22 | 23 | Markdown Literary Programming 02: Mermaid flow chart 24 | 25 | ![](./Screenshots/mlp_mermaid.png) 26 | 27 | Markdown Literary Programming 03: Image 28 | 29 | ![](./Screenshots/mlp_image.png) 30 | 31 | Markdown Literary Programming 04: UI + Javascript/Clojurescript (sci) 32 | 33 | ![](./Screenshots/mlp_ui_cljs.png) 34 | 35 | Edit Clojure hiccup (HTML DSL) with live preview: 36 | 37 | ![](./Screenshots/edit_hiccup_with_live_preview.png) 38 | 39 | LSP 40 | 41 | - Notepad++ LSP client plugin: [Ekopalypse/NppLspClient](https://github.com/Ekopalypse/NppLspClient) 42 | 43 | - Clojure & ClojureScript Language Server: [clojure-lsp](https://github.com/clojure-lsp/clojure-lsp) 44 | 45 | Solutions to clojure-lsp startup bug: If the folder of the Clojure project (or Clojure source files) isn't 46 | on the same disk as the Notepad++ Home folder, create (or open) a temporary Clojure source code file 47 | on the same disk as the Notepad++ Home folder to start the Clojure language server. 48 | 49 | - SQL Language Server: [lighttiger2505/sqls](https://github.com/lighttiger2505/sqls) 50 | 51 | ![](https://user-images.githubusercontent.com/47723516/172181400-37a89d1f-5957-4aed-b35e-7f2f54caa70b.png) 52 | 53 | ### Patch edition Method: 54 | 55 | 1. copy all files of notepad++ directory to notepad++ home directory. 56 | 57 | 2. copy Notepad++/tools/ctags/.ctags file to user home directory (c:\user\xxx). 58 | 59 | ### Config files of Clojure (userDefineLangs Clojure is Clojure, Lisp is also Clojure.) 60 | 61 | - Methord 01: Modify Lisp as Clojure, Lisp is also Clojure. 62 | 63 | * notepad++\langs.xml 64 | 65 | * notepad++\stylers.xml 66 | 67 | * notepad++\autoCompletion\lisp.xml 68 | 69 | * notepad++\functionList\Lisp.xml 70 | 71 | - Methord 02: userDefineLangs: Clojure, Clojure is Clojure 72 | 73 | * notepad++\autoCompletion\Clojure.xml 74 | 75 | * notepad++\userDefineLangs\Clojure.xml 76 | 77 | * notepad++\functionList\Clojure.xml 78 | 79 | - functionList 80 | 81 | * notepad++\functionList\overrideMap.xml 82 | 83 | - notepad++\tools\ctags\ .ctag (clojure config of ctags.exe and NppCCompletionPlugin.dll, copy to user home directory c:\user\xxx) 84 | 85 | - Other: Markdown (userDefineLangs) 86 | 87 | * notepad++\functionList\Markdown_Monokai.xml 88 | 89 | * notepad++\userDefineLangs\markdown_monokai.xml 90 | 91 | * Notepad++/plugins/PythonScript/scripts/Markdown_Literary_Programming_viewer.py 92 | 93 | ### Note 94 | 95 | .ctags : clojure config of ctags.exe and NppCCompletionPlugin.dll, copy to ~ (c:\user\xxx) 96 | 97 | ### Notepad++ 98 | 99 | https://notepad-plus-plus.org/ 100 | 101 | https://github.com/notepad-plus-plus/notepad-plus-plus 102 | 103 | ### Notepad++ plugins 104 | 105 | https://sourceforge.net/projects/npp-plugins/files/ 106 | 107 | - Clojure 108 | 109 | - BracketHighlighter (Only Python 2.x): 110 | 111 | Author: Scott Sumner, 112 | 113 | Notepad++/plugins/PythonScript/scripts/BracketHighlighter.py 114 | 115 | https://notepad-plus-plus.org/community/topic/14501/has-a-plugin-like-sublime-plugin-brackethighlighter/7 116 | 117 | - PythonScript(Python 2.x): 118 | https://github.com/bruderstein/PythonScript 119 | 120 | - XBrackets Lite: 121 | https://sourceforge.net/projects/npp-plugins/files/XBrackets%20Lite/ 122 | 123 | - BracketsCheck: https://github.com/niccord/BracketsCheck 124 | 125 | - cli tools 126 | 127 | - NppExec: https://github.com/d0vgan/nppexec 128 | - notepad++\tools\clj\clj-kondo.exe --lint current-file 129 | - notepad++\tools\clj\babashka --file current-file 130 | - notepad++\tools\clj\babashka --eval selectquotedtext 131 | 132 | - pork2Sausage: https://github.com/npp-plugins/pork2sausage 133 | - notepad++\tools\clj\hiccup-cli (convert selectd HTML to Hiccup) 134 | - notepad++\tools\clj\babashka 135 | - notepad++\tools\clj\npp_convert.clj (convert selected text to ?) 136 | 137 | - Edit hiccup with live preview 138 | * Babashka 139 | * Notepad++/tools/clj/hiccup2html.clj 140 | * Preview HTML plugin 141 | * Notepad++/plugins/Config/PreviewHTML/Settings.ini 142 | * Notepad++/plugins/Config/PreviewHTML/Filters.ini 143 | 144 | - Markdown Literary Programming with live preview for Clojure 145 | * Babashka + sci-script-tag.js 146 | * Notepad++/tools/clj/mlp.clj 147 | * Preview HTML plugin 148 | * Notepad++/plugins/Config/PreviewHTML/Settings.ini 149 | * Notepad++/plugins/Config/PreviewHTML/Filters.ini 150 | 151 | - Develop 152 | 153 | - Languages: https://github.com/MAPJe71/Languages 154 | 155 | - nppTagLEET: https://github.com/vinsworldcom/nppTagLEET 156 | 157 | - NppGTags: https://github.com/pnedev/nppgtags 158 | 159 | - LanguageHelp: 160 | https://github.com/francostellari/NppPlugins 161 | 162 | - NppChomeDebugPlugin: 163 | https://github.com/jdubbeldam/NppChomeDebugPlugin 164 | 165 | - JavaScript Map Parse: 166 | https://github.com/megaboich/js-map-parser/ 167 | 168 | - JSTool: 169 | https://github.com/sunjw/jstoolnpp 170 | 171 | - JSON-Viewer: 172 | https://github.com/kapilratnani/JSON-Viewer 173 | 174 | - sql: http://www.scout-soft.com/sql/ 175 | 176 | - SQLPrettyPrinter: 177 | https://github.com/twentyTwo/Npp.Plugins-SQLPrettyPrinter 178 | 179 | - npp.connections: 180 | https://github.com/vladk1973/npp.connections 181 | 182 | - nppxmltreeview: 183 | https://github.com/joaoasrosa/nppxmltreeview 184 | 185 | - PlantUmlViewer: https://github.com/Fruchtzwerg94/PlantUmlViewer 186 | 187 | - PlantUML_Notepad-_UDL: https://github.com/brianmaher84/PlantUML_Notepad-_UDL 188 | 189 | - NppGraphViz: https://github.com/jrebacz/NppGraphViz 190 | 191 | - graphviz-syntax-highlighting: 192 | https://github.com/signmotion/graphviz-syntax-highlighting 193 | 194 | - Excel formula: 195 | http://dailydoseofexcel.com/archives/2010/09/29/formula-editor-in-notepad/ 196 | 197 | - Compare 198 | 199 | - NppCCompletion 200 | 201 | - Markdown & html & asciidoc 202 | 203 | - MarkdownText: 204 | https://github.com/NotMad-Text-Editor-Plugins/MarkdownText 205 | 206 | - MarkdownViewerPlusPlus: 207 | https://github.com/nea/MarkdownViewerPlusPlus 208 | 209 | - imgtag: http://sourceforge.net/projects/imgtag/ 210 | 211 | - HtmlTag: https://fossil.2of4.net/npp_htmltag/ 212 | 213 | - WebEdit: http://downloads.sourceforge.net/project/npp-plugins/WebEdit 214 | 215 | - html preview: http://fossil.2of4.net/npp_preview/ 216 | 217 | - asciidoc-highlight: 218 | https://github.com/edusantana/asciidoc-highlight 219 | 220 | - NppSnippets 221 | 222 | - Edit 223 | 224 | - CodeExpress (Snippets): 225 | 226 | https://code.google.com/archive/p/code-express/downloads 227 | 228 | - ElasticTabstops: https://github.com/dail8859/ElasticTabstops 229 | 230 | - SurroundSelection: 231 | https://github.com/dail8859/SurroundSelection 232 | 233 | - BetterMultiSelection: 234 | https://github.com/dail8859/BetterMultiSelection 235 | 236 | - selectquotedtext: 237 | https://www.fesevur.com/selectquotedtext/ 238 | 239 | - NavigateTo: https://github.com/young-developer/nppNavigateTo 240 | 241 | - NewFileBrowser: https://sourceforge.net/projects/locationnav/ 242 | 243 | - ColumnTools: 244 | https://github.com/vinsworldcom/nppColumnTools 245 | 246 | - ViSimulator: https://github.com/bycn82/visimulator 247 | 248 | - Search 249 | 250 | - NppQuickSearchPanel: https://github.com/nex3z/NppQuickSearchPanel 251 | 252 | - Regex Trainer: 253 | https://github.com/ahmoylaw/RegexTrainer-Descriptions 254 | 255 | - Sys 256 | 257 | - explorer: https://github.com/prekageo/npp-explorer 258 | 259 | - Themes 260 | 261 | - VS2012-Dark: https://github.com/SeanCline/Npp-VS2012-Dark 262 | 263 | - TwoDark: https://github.com/RobU23/NotepadPlusPlus 264 | 265 | - Others 266 | 267 | - CustomizeToolbar: 268 | 269 | - TextFX: https://sourceforge.net/projects/npp-plugins/files/TextFX/ 270 | 271 | - QrCode: https://github.com/vladk1973/NppQrCode 272 | 273 | - MathPad 274 | 275 | - anmX: http://www.semelinanno.com/downloads/anmxnpp/anmXNpp_Page.html 276 | 277 | - calc: http://sourceforge.net/projects/nppcalc/ 278 | 279 | - ToolBucket: https://github.com/phdesign/NppToolBucket/ 280 | 281 | - TopMost: https://sites.google.com/site/fstellari/nppplugins 282 | 283 | - translate: https://sourceforge.net/projects/npptranslate/ 284 | 285 | --------------------------------------------------------------------------------