From 788900e31aa9ea5c82248036769921fa6d1e9947 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 03:23:25 +0900 Subject: [PATCH 01/29] Added markdownlint rules form --- browser/components/CodeEditor.js | 6 ++++- browser/main/lib/ConfigManager.js | 3 ++- browser/main/modals/PreferencesModal/UiTab.js | 24 ++++++++++++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 2f2b1551..667708a4 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -26,6 +26,7 @@ import {languageMaps} from '../lib/CMLanguageList' import snippetManager from '../lib/SnippetManager' import {generateInEditor, tocExistsInEditor} from 'browser/lib/markdown-toc-generator' import markdownlint from 'markdownlint' +import ConfigManager from '../main/lib/ConfigManager' CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js' @@ -39,11 +40,14 @@ function translateHotkey (hotkey) { } const validatorOfMarkdown = (text, updateLinting) => { + const config = ConfigManager.get() const lintOptions = { 'strings': { 'content': text - } + }, + 'config': JSON.parse(config.editor.customMarkdownLintConfig) } + console.log(config.editor.customMarkdownLintConfig) return markdownlint(lintOptions, (err, result) => { if (!err) { diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 05f3d822..616fdc88 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -59,7 +59,8 @@ export const DEFAULT_CONFIG = { enableFrontMatterTitle: true, frontMatterTitleField: 'title', spellcheck: false, - enableSmartPaste: false + enableSmartPaste: false, + customMarkdownLintConfig: '' }, preview: { fontSize: '14', diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 316b7f9d..310e1e59 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -30,7 +30,9 @@ class UiTab extends React.Component { componentDidMount () { CodeMirror.autoLoadMode(this.codeMirrorInstance.getCodeMirror(), 'javascript') CodeMirror.autoLoadMode(this.customCSSCM.getCodeMirror(), 'css') + CodeMirror.autoLoadMode(this.customMarkdownLintConfigCM.getCodeMirror(), 'json') this.customCSSCM.getCodeMirror().setSize('400px', '400px') + this.customMarkdownLintConfigCM.getCodeMirror().setSize('400px', '400px') this.handleSettingDone = () => { this.setState({UiAlert: { type: 'success', @@ -101,7 +103,8 @@ class UiTab extends React.Component { matchingTriples: this.refs.matchingTriples.value, explodingPairs: this.refs.explodingPairs.value, spellcheck: this.refs.spellcheck.checked, - enableSmartPaste: this.refs.enableSmartPaste.checked + enableSmartPaste: this.refs.enableSmartPaste.checked, + customMarkdownLintConfig: this.customMarkdownLintConfigCM.getCodeMirror().getValue() }, preview: { fontSize: this.refs.previewFontSize.value, @@ -632,6 +635,25 @@ class UiTab extends React.Component { /> +
+
+ {i18n.__('Custom MarkdownLint Rules')} +
+
+
+ this.handleUIChange(e)} + ref={e => (this.customMarkdownLintConfigCM = e)} + value={config.editor.customMarkdownLintConfig} + options={{ + lineNumbers: true, + theme: codemirrorTheme + }} /> +
+
+
{i18n.__('Preview')}
From 7fb22f3f079a6090611252b55266721ce6605f52 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 03:24:16 +0900 Subject: [PATCH 02/29] Translated from English to Japanese --- locales/ja.json | 1 + 1 file changed, 1 insertion(+) diff --git a/locales/ja.json b/locales/ja.json index 087bce36..e1dc553b 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -79,6 +79,7 @@ "Matching character pairs": "自動補完する括弧ペアの列記", "Matching character triples": "自動補完する3文字括弧の列記", "Exploding character pairs": "改行時に空行を挿入する括弧ペアの列記", + "Custom MarkdownLint Rules": "カスタムMarkdownLintルール", "Preview": "プレビュー", "Preview Font Size": "プレビュー時フォントサイズ", "Preview Font Family": "プレビュー時フォント", From 11bed72bed0d39aee9f9c5f53ce1e9e0cc372be6 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 08:49:19 +0900 Subject: [PATCH 03/29] Introduced jsonlint-mod --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index f00fb095..14d2da6d 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,7 @@ "immutable": "^3.8.1", "invert-color": "^2.0.0", "js-yaml": "^3.12.0", + "jsonlint-mod": "^1.7.4", "katex": "^0.9.0", "lodash": "^4.11.1", "lodash-move": "^1.1.1", From 4ba4e68833f038931db5fbf0be0d946e82899aa6 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 08:54:28 +0900 Subject: [PATCH 04/29] Added markdownlint rules form --- browser/components/CodeEditor.js | 13 ++++++++++--- browser/main/lib/ConfigManager.js | 4 +++- browser/main/modals/PreferencesModal/UiTab.js | 7 +++++-- lib/main.html | 2 ++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 667708a4..af546fbf 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -25,8 +25,9 @@ import TurndownService from 'turndown' import {languageMaps} from '../lib/CMLanguageList' import snippetManager from '../lib/SnippetManager' import {generateInEditor, tocExistsInEditor} from 'browser/lib/markdown-toc-generator' +import Jsonlint from 'jsonlint-mod' import markdownlint from 'markdownlint' -import ConfigManager from '../main/lib/ConfigManager' +import ConfigManager, {DEFAULT_CONFIG} from '../main/lib/ConfigManager' CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js' @@ -41,13 +42,19 @@ function translateHotkey (hotkey) { const validatorOfMarkdown = (text, updateLinting) => { const config = ConfigManager.get() + let markdownlintRules = config.editor.customMarkdownLintConfig + try { + Jsonlint.parse(markdownlintRules) + } catch (error) { + markdownlintRules = DEFAULT_CONFIG.editor.customMarkdownLintConfig + } + const lintOptions = { 'strings': { 'content': text }, - 'config': JSON.parse(config.editor.customMarkdownLintConfig) + 'config': JSON.parse(markdownlintRules) } - console.log(config.editor.customMarkdownLintConfig) return markdownlint(lintOptions, (err, result) => { if (!err) { diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 616fdc88..1d59d41d 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -60,7 +60,9 @@ export const DEFAULT_CONFIG = { frontMatterTitleField: 'title', spellcheck: false, enableSmartPaste: false, - customMarkdownLintConfig: '' + customMarkdownLintConfig: `{ + "default": true + }` }, preview: { fontSize: '14', diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 310e1e59..d0b2026d 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -30,7 +30,7 @@ class UiTab extends React.Component { componentDidMount () { CodeMirror.autoLoadMode(this.codeMirrorInstance.getCodeMirror(), 'javascript') CodeMirror.autoLoadMode(this.customCSSCM.getCodeMirror(), 'css') - CodeMirror.autoLoadMode(this.customMarkdownLintConfigCM.getCodeMirror(), 'json') + CodeMirror.autoLoadMode(this.customMarkdownLintConfigCM.getCodeMirror(), 'javascript') this.customCSSCM.getCodeMirror().setSize('400px', '400px') this.customMarkdownLintConfigCM.getCodeMirror().setSize('400px', '400px') this.handleSettingDone = () => { @@ -649,7 +649,10 @@ class UiTab extends React.Component { value={config.editor.customMarkdownLintConfig} options={{ lineNumbers: true, - theme: codemirrorTheme + mode: 'application/json', + theme: codemirrorTheme, + lint: true, + gutters: ['CodeMirror-lint-markers'] }} />
diff --git a/lib/main.html b/lib/main.html index 87a88e2d..c389956b 100644 --- a/lib/main.html +++ b/lib/main.html @@ -126,7 +126,9 @@ + + From 8b3beb45c61df5f7362e74be91d632788632ed18 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 09:17:25 +0900 Subject: [PATCH 05/29] Added a caution of the custom markdownlint rules --- browser/main/modals/PreferencesModal/UiTab.js | 1 + locales/ja.json | 1 + 2 files changed, 2 insertions(+) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index d0b2026d..ee1b892f 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -654,6 +654,7 @@ class UiTab extends React.Component { lint: true, gutters: ['CodeMirror-lint-markers'] }} /> +

{i18n.__(`⚠️ Please reload boostnote after you change the Custom MarkdownLint rules`)}

diff --git a/locales/ja.json b/locales/ja.json index e1dc553b..42e7644c 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -80,6 +80,7 @@ "Matching character triples": "自動補完する3文字括弧の列記", "Exploding character pairs": "改行時に空行を挿入する括弧ペアの列記", "Custom MarkdownLint Rules": "カスタムMarkdownLintルール", + "⚠️ Please reload boostnote after you change the Custom MarkdownLint rules": "⚠️ カスタムMarkdownLintルール変更後は Boostnote をリロードしてください", "Preview": "プレビュー", "Preview Font Size": "プレビュー時フォントサイズ", "Preview Font Family": "プレビュー時フォント", From 33d1700548002d1aad4d66514c5d06420cd9ea33 Mon Sep 17 00:00:00 2001 From: roottool Date: Mon, 29 Apr 2019 10:01:55 +0900 Subject: [PATCH 06/29] Change styleName of caution --- browser/main/modals/PreferencesModal/ConfigTab.styl | 3 ++- browser/main/modals/PreferencesModal/UiTab.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/browser/main/modals/PreferencesModal/ConfigTab.styl b/browser/main/modals/PreferencesModal/ConfigTab.styl index 0e22833d..e1c867ff 100644 --- a/browser/main/modals/PreferencesModal/ConfigTab.styl +++ b/browser/main/modals/PreferencesModal/ConfigTab.styl @@ -123,6 +123,7 @@ line-height 1.2 .note-for-keymap +.note-for-markdownlint-rules font-size: 12px .code-mirror @@ -266,4 +267,4 @@ body[data-theme="dracula"] colorDraculaControl() .group-section-control select, .group-section-control-input - colorDraculaControl() \ No newline at end of file + colorDraculaControl() diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index ee1b892f..9e1b3f6d 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -654,7 +654,7 @@ class UiTab extends React.Component { lint: true, gutters: ['CodeMirror-lint-markers'] }} /> -

{i18n.__(`⚠️ Please reload boostnote after you change the Custom MarkdownLint rules`)}

+

{i18n.__(`⚠️ Please reload boostnote after you change the Custom MarkdownLint rules`)}

From a162bab5915d4d1baab0733dd79c97d2ff15dd41 Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 00:42:55 +0900 Subject: [PATCH 07/29] Fix: Improved for the app not to need to reload --- browser/components/CodeEditor.js | 118 ++++++++++++---------- browser/components/MarkdownEditor.js | 1 + browser/components/MarkdownSplitEditor.js | 1 + 3 files changed, 69 insertions(+), 51 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index af546fbf..d5f9164f 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -25,9 +25,9 @@ import TurndownService from 'turndown' import {languageMaps} from '../lib/CMLanguageList' import snippetManager from '../lib/SnippetManager' import {generateInEditor, tocExistsInEditor} from 'browser/lib/markdown-toc-generator' -import Jsonlint from 'jsonlint-mod' import markdownlint from 'markdownlint' -import ConfigManager, {DEFAULT_CONFIG} from '../main/lib/ConfigManager' +import Jsonlint from 'jsonlint-mod' +import { DEFAULT_CONFIG } from '../main/lib/ConfigManager' CodeMirror.modeURL = '../node_modules/codemirror/mode/%N/%N.js' @@ -40,47 +40,6 @@ function translateHotkey (hotkey) { return hotkey.replace(/\s*\+\s*/g, '-').replace(/Command/g, 'Cmd').replace(/Control/g, 'Ctrl') } -const validatorOfMarkdown = (text, updateLinting) => { - const config = ConfigManager.get() - let markdownlintRules = config.editor.customMarkdownLintConfig - try { - Jsonlint.parse(markdownlintRules) - } catch (error) { - markdownlintRules = DEFAULT_CONFIG.editor.customMarkdownLintConfig - } - - const lintOptions = { - 'strings': { - 'content': text - }, - 'config': JSON.parse(markdownlintRules) - } - - return markdownlint(lintOptions, (err, result) => { - if (!err) { - const foundIssues = [] - result.content.map(item => { - let ruleNames = '' - item.ruleNames.map((ruleName, index) => { - ruleNames += ruleName - if (index === item.ruleNames.length - 1) { - ruleNames += ': ' - } else { - ruleNames += '/' - } - }) - foundIssues.push({ - from: CodeMirror.Pos(item.lineNumber, 0), - to: CodeMirror.Pos(item.lineNumber, 1), - message: ruleNames + item.ruleDescription, - severity: 'warning' - }) - }) - updateLinting(foundIssues) - } - }) -} - export default class CodeEditor extends React.Component { constructor (props) { super(props) @@ -127,6 +86,8 @@ export default class CodeEditor extends React.Component { this.searchHandler = (e, msg) => this.handleSearch(msg) this.searchState = null this.scrollToLineHandeler = this.scrollToLine.bind(this) + this.setCodeEditorLintConfig = this.setCodeEditorLintConfig.bind(this) + this.validatorOfMarkdown = this.validatorOfMarkdown.bind(this) this.formatTable = () => this.handleFormatTable() @@ -300,7 +261,6 @@ export default class CodeEditor extends React.Component { snippetManager.init() this.updateDefaultKeyMap() - const checkMarkdownNoteIsOpening = this.props.mode === 'Boost Flavored Markdown' this.value = this.props.value this.editor = CodeMirror(this.refs.root, { rulers: buildCMRulers(rulers, enableRulers), @@ -317,10 +277,7 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, foldGutter: true, - lint: checkMarkdownNoteIsOpening ? { - 'getAnnotations': validatorOfMarkdown, - 'async': true - } : false, + lint: this.setCodeEditorLintConfig(), gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs, @@ -557,7 +514,8 @@ export default class CodeEditor extends React.Component { let needRefresh = false const { rulers, - enableRulers + enableRulers, + customMarkdownLintConfig } = this.props if (prevProps.mode !== this.props.mode) { this.setMode(this.props.mode) @@ -575,6 +533,11 @@ export default class CodeEditor extends React.Component { if (prevProps.keyMap !== this.props.keyMap) { needRefresh = true } + if (!needRefresh && prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { + this.setCodeEditorLintConfig() + + needRefresh = true + } if ( prevProps.enableRulers !== enableRulers || @@ -655,6 +618,57 @@ export default class CodeEditor extends React.Component { } } + setCodeEditorLintConfig () { + const { mode } = this.props + const checkMarkdownNoteIsOpening = mode === 'Boost Flavored Markdown' + + return checkMarkdownNoteIsOpening ? { + 'getAnnotations': this.validatorOfMarkdown, + 'async': true + } : false + } + + validatorOfMarkdown (text, updateLinting) { + const { customMarkdownLintConfig } = this.props + let lintConfigJson + try { + Jsonlint.parse(customMarkdownLintConfig) + lintConfigJson = JSON.parse(customMarkdownLintConfig) + } catch (err) { + throw err + } + const lintOptions = { + 'strings': { + 'content': text + }, + 'config': lintConfigJson + } + + return markdownlint(lintOptions, (err, result) => { + if (!err) { + const foundIssues = [] + result.content.map(item => { + let ruleNames = '' + item.ruleNames.map((ruleName, index) => { + ruleNames += ruleName + if (index === item.ruleNames.length - 1) { + ruleNames += ': ' + } else { + ruleNames += '/' + } + }) + foundIssues.push({ + from: CodeMirror.Pos(item.lineNumber, 0), + to: CodeMirror.Pos(item.lineNumber, 1), + message: ruleNames + item.ruleDescription, + severity: 'warning' + }) + }) + updateLinting(foundIssues) + } + }) + } + setMode (mode) { let syntax = CodeMirror.findModeByName(convertModeName(mode || 'text')) if (syntax == null) syntax = CodeMirror.findModeByName('Plain Text') @@ -1160,7 +1174,8 @@ CodeEditor.propTypes = { onChange: PropTypes.func, readOnly: PropTypes.bool, autoDetect: PropTypes.bool, - spellCheck: PropTypes.bool + spellCheck: PropTypes.bool, + customMarkdownLintConfig: PropTypes.string } CodeEditor.defaultProps = { @@ -1172,5 +1187,6 @@ CodeEditor.defaultProps = { indentSize: 4, indentType: 'space', autoDetect: false, - spellCheck: false + spellCheck: false, + customMarkdownLintConfig: DEFAULT_CONFIG.editor.customMarkdownLintConfig } diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 593f7d99..022553fb 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -319,6 +319,7 @@ class MarkdownEditor extends React.Component { enableSmartPaste={config.editor.enableSmartPaste} hotkey={config.hotkey} switchPreview={config.editor.switchPreview} + customMarkdownLintConfig={config.editor.customMarkdownLintConfig} />
this.handleMouseDown(e)} >
From ecfeedeff3a784d2f0769331dd89d5c808415f51 Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 00:44:27 +0900 Subject: [PATCH 08/29] Fix: Removed unnecessary caution --- browser/main/modals/PreferencesModal/UiTab.js | 1 - locales/ja.json | 1 - 2 files changed, 2 deletions(-) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 0fe4fbbb..d8bb8ab5 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -659,7 +659,6 @@ class UiTab extends React.Component { lint: true, gutters: ['CodeMirror-lint-markers'] }} /> -

{i18n.__(`⚠️ Please reload boostnote after you change the Custom MarkdownLint rules`)}

diff --git a/locales/ja.json b/locales/ja.json index 42e7644c..e1dc553b 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -80,7 +80,6 @@ "Matching character triples": "自動補完する3文字括弧の列記", "Exploding character pairs": "改行時に空行を挿入する括弧ペアの列記", "Custom MarkdownLint Rules": "カスタムMarkdownLintルール", - "⚠️ Please reload boostnote after you change the Custom MarkdownLint rules": "⚠️ カスタムMarkdownLintルール変更後は Boostnote をリロードしてください", "Preview": "プレビュー", "Preview Font Size": "プレビュー時フォントサイズ", "Preview Font Family": "プレビュー時フォント", From f3ca893aea176c27705e875a1a74e50e0db0e360 Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 02:30:41 +0900 Subject: [PATCH 09/29] Ajusted markdownlint config editor to code editor --- browser/main/modals/PreferencesModal/UiTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index d8bb8ab5..1f914209 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -657,7 +657,7 @@ class UiTab extends React.Component { mode: 'application/json', theme: codemirrorTheme, lint: true, - gutters: ['CodeMirror-lint-markers'] + gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'] }} /> From f1597f8e84e5347e023030e9f98734b64fa75f9a Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 03:26:47 +0900 Subject: [PATCH 10/29] Fix: Poped up the lint tooptip --- lib/main.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/main.html b/lib/main.html index c389956b..0d9feade 100644 --- a/lib/main.html +++ b/lib/main.html @@ -72,6 +72,10 @@ border-left-color: rgba(142, 142, 142, 0.5); mix-blend-mode: difference; } + + .CodeMirror-lint-tooltip { + z-index: 1003; + } From 0a5c4c092a2bf769f814b2b22d8be55914043bbf Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 04:22:03 +0900 Subject: [PATCH 11/29] Fix: Improved for the app not to need to reload --- browser/components/CodeEditor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index d5f9164f..c8789a53 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -533,8 +533,8 @@ export default class CodeEditor extends React.Component { if (prevProps.keyMap !== this.props.keyMap) { needRefresh = true } - if (!needRefresh && prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { - this.setCodeEditorLintConfig() + if (prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { + this.editor.setOption('lint', this.setCodeEditorLintConfig()) needRefresh = true } From 61e054024beda9bffb5927fd2b684a7b76f8740b Mon Sep 17 00:00:00 2001 From: roottool Date: Tue, 7 May 2019 04:44:23 +0900 Subject: [PATCH 12/29] Fix: Removed unnecessary css code --- browser/main/modals/PreferencesModal/ConfigTab.styl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/browser/main/modals/PreferencesModal/ConfigTab.styl b/browser/main/modals/PreferencesModal/ConfigTab.styl index e1c867ff..0e22833d 100644 --- a/browser/main/modals/PreferencesModal/ConfigTab.styl +++ b/browser/main/modals/PreferencesModal/ConfigTab.styl @@ -123,7 +123,6 @@ line-height 1.2 .note-for-keymap -.note-for-markdownlint-rules font-size: 12px .code-mirror @@ -267,4 +266,4 @@ body[data-theme="dracula"] colorDraculaControl() .group-section-control select, .group-section-control-input - colorDraculaControl() + colorDraculaControl() \ No newline at end of file From 69a62d1b73d0741e7de8ae06d09434a5aed858f8 Mon Sep 17 00:00:00 2001 From: roottool Date: Thu, 9 May 2019 04:06:27 +0900 Subject: [PATCH 13/29] Fix: Changed variable name --- browser/components/CodeEditor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index c8789a53..b8380f2b 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -620,9 +620,9 @@ export default class CodeEditor extends React.Component { setCodeEditorLintConfig () { const { mode } = this.props - const checkMarkdownNoteIsOpening = mode === 'Boost Flavored Markdown' + const checkMarkdownNoteIsOpen = mode === 'Boost Flavored Markdown' - return checkMarkdownNoteIsOpening ? { + return checkMarkdownNoteIsOpen ? { 'getAnnotations': this.validatorOfMarkdown, 'async': true } : false From 2da4f1df327e703bd80c9218bcdd9a98151e335f Mon Sep 17 00:00:00 2001 From: roottool Date: Thu, 9 May 2019 04:11:05 +0900 Subject: [PATCH 14/29] Fix: Rewrote the code to inline --- browser/components/CodeEditor.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index b8380f2b..6b3cbf02 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -651,11 +651,7 @@ export default class CodeEditor extends React.Component { let ruleNames = '' item.ruleNames.map((ruleName, index) => { ruleNames += ruleName - if (index === item.ruleNames.length - 1) { - ruleNames += ': ' - } else { - ruleNames += '/' - } + ruleNames += (index === item.ruleNames.length - 1) ? ': ' : '/' }) foundIssues.push({ from: CodeMirror.Pos(item.lineNumber, 0), From c42eb41fb313c1ab171dbed2379a485543940ac1 Mon Sep 17 00:00:00 2001 From: roottool Date: Thu, 9 May 2019 05:29:43 +0900 Subject: [PATCH 15/29] Fix: Fixed that default rule was shifted by indent --- browser/main/lib/ConfigManager.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index be6422b4..54fce3e9 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -10,6 +10,9 @@ const { ipcRenderer } = electron const consts = require('browser/lib/consts') let isInitialized = false +const DEFAULT_MARKDOWN_LINT_CONFIG = `{ + "default": true +}` export const DEFAULT_CONFIG = { zoom: 1, @@ -60,9 +63,7 @@ export const DEFAULT_CONFIG = { frontMatterTitleField: 'title', spellcheck: false, enableSmartPaste: false, - customMarkdownLintConfig: `{ - "default": true - }` + customMarkdownLintConfig: DEFAULT_MARKDOWN_LINT_CONFIG }, preview: { fontSize: '14', @@ -138,7 +139,7 @@ function get () { const theme = consts.THEMES.find(theme => theme.name === config.editor.theme) if (theme) { - editorTheme.setAttribute('href', `../${theme.path}`) + editorTheme.setAttribute('href', `${theme.path}`) } else { config.editor.theme = 'default' } @@ -180,7 +181,7 @@ function set (updates) { const newTheme = consts.THEMES.find(theme => theme.name === newConfig.editor.theme) if (newTheme) { - editorTheme.setAttribute('href', `../${newTheme.path}`) + editorTheme.setAttribute('href', `${newTheme.path}`) } ipcRenderer.send('config-renew', { From 0d6c95272112cf041dd0a06f5dee5339c9cf71c3 Mon Sep 17 00:00:00 2001 From: roottool Date: Thu, 9 May 2019 05:30:46 +0900 Subject: [PATCH 16/29] Added a newline --- browser/main/lib/ConfigManager.js | 1 + 1 file changed, 1 insertion(+) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 54fce3e9..324403aa 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -10,6 +10,7 @@ const { ipcRenderer } = electron const consts = require('browser/lib/consts') let isInitialized = false + const DEFAULT_MARKDOWN_LINT_CONFIG = `{ "default": true }` From c82dbddc748624cc40758e7f8725a5e2dfabd734 Mon Sep 17 00:00:00 2001 From: roottool Date: Sun, 12 May 2019 13:13:32 +0900 Subject: [PATCH 17/29] Fix markdownlint result desplay works properly --- browser/components/CodeEditor.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 6b3cbf02..99695cdb 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -647,15 +647,17 @@ export default class CodeEditor extends React.Component { return markdownlint(lintOptions, (err, result) => { if (!err) { const foundIssues = [] + const splitText = text.split('\n') result.content.map(item => { let ruleNames = '' item.ruleNames.map((ruleName, index) => { ruleNames += ruleName ruleNames += (index === item.ruleNames.length - 1) ? ': ' : '/' }) + const lineNumber = item.lineNumber - 1 foundIssues.push({ - from: CodeMirror.Pos(item.lineNumber, 0), - to: CodeMirror.Pos(item.lineNumber, 1), + from: CodeMirror.Pos(lineNumber, 0), + to: CodeMirror.Pos(lineNumber, splitText[lineNumber].length), message: ruleNames + item.ruleDescription, severity: 'warning' }) From 2497bdb124468ca1d82251aecd6c13e5b44d0168 Mon Sep 17 00:00:00 2001 From: roottool Date: Wed, 22 May 2019 22:45:09 +0900 Subject: [PATCH 18/29] Fix: Removed changes to debug the app --- browser/main/lib/ConfigManager.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 324403aa..78c91aa1 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -140,7 +140,7 @@ function get () { const theme = consts.THEMES.find(theme => theme.name === config.editor.theme) if (theme) { - editorTheme.setAttribute('href', `${theme.path}`) + editorTheme.setAttribute('href', `../${theme.path}`) } else { config.editor.theme = 'default' } @@ -182,7 +182,7 @@ function set (updates) { const newTheme = consts.THEMES.find(theme => theme.name === newConfig.editor.theme) if (newTheme) { - editorTheme.setAttribute('href', `${newTheme.path}`) + editorTheme.setAttribute('href', `../${newTheme.path}`) } ipcRenderer.send('config-renew', { From 270a015514d64feddbe8bdcb75e1150fae381a94 Mon Sep 17 00:00:00 2001 From: AWolf81 Date: Fri, 24 May 2019 19:06:15 +0200 Subject: [PATCH 19/29] WIP: Add MarkdownLint enable setting. Gutter toggle not working as expected. --- browser/components/CodeEditor.js | 27 ++++++---- browser/components/MarkdownEditor.js | 1 + browser/components/MarkdownSplitEditor.js | 1 + browser/main/lib/ConfigManager.js | 1 + browser/main/modals/PreferencesModal/UiTab.js | 12 +++++ yarn.lock | 54 ++++++++++++++++++- 6 files changed, 86 insertions(+), 10 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 99695cdb..95e1ed7c 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -40,6 +40,8 @@ function translateHotkey (hotkey) { return hotkey.replace(/\s*\+\s*/g, '-').replace(/Command/g, 'Cmd').replace(/Control/g, 'Ctrl') } +const DEFAULT_GUTTERS = ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'] + export default class CodeEditor extends React.Component { constructor (props) { super(props) @@ -255,7 +257,7 @@ export default class CodeEditor extends React.Component { } componentDidMount () { - const { rulers, enableRulers } = this.props + const { rulers, enableRulers, enableMarkdownLint } = this.props eventEmitter.on('line:jump', this.scrollToLineHandeler) snippetManager.init() @@ -277,8 +279,8 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, foldGutter: true, - lint: this.setCodeEditorLintConfig(), - gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], + lint: enableMarkdownLint ? this.setCodeEditorLintConfig() : false, + gutters: [...DEFAULT_GUTTERS, enableMarkdownLint && 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs, triples: this.props.matchingTriples, @@ -515,6 +517,7 @@ export default class CodeEditor extends React.Component { const { rulers, enableRulers, + enableMarkdownLint, customMarkdownLintConfig } = this.props if (prevProps.mode !== this.props.mode) { @@ -533,8 +536,14 @@ export default class CodeEditor extends React.Component { if (prevProps.keyMap !== this.props.keyMap) { needRefresh = true } - if (prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { - this.editor.setOption('lint', this.setCodeEditorLintConfig()) + if (prevProps.enableMarkdownLint !== enableMarkdownLint || prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { + if (!enableMarkdownLint) { + this.editor.setOption('lint', {default: false}) + this.editor.setOption('gutters', DEFAULT_GUTTERS) + } else { + this.editor.setOption('lint', this.setCodeEditorLintConfig()) + this.editor.setOption('gutters', [...DEFAULT_GUTTERS, 'CodeMirror-lint-markers']) + } needRefresh = true } @@ -1128,13 +1137,11 @@ export default class CodeEditor extends React.Component { } ref='root' tabIndex='-1' - style={ - { + style={{ fontFamily, fontSize: fontSize, width: width - } - } + }} onDrop={ e => this.handleDropImage(e) } @@ -1173,6 +1180,7 @@ CodeEditor.propTypes = { readOnly: PropTypes.bool, autoDetect: PropTypes.bool, spellCheck: PropTypes.bool, + enableMarkdownLint: PropTypes.bool, customMarkdownLintConfig: PropTypes.string } @@ -1186,5 +1194,6 @@ CodeEditor.defaultProps = { indentType: 'space', autoDetect: false, spellCheck: false, + enableMarkdownLint: DEFAULT_CONFIG.editor.enableMarkdownLint, customMarkdownLintConfig: DEFAULT_CONFIG.editor.customMarkdownLintConfig } diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 022553fb..526ecb39 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -319,6 +319,7 @@ class MarkdownEditor extends React.Component { enableSmartPaste={config.editor.enableSmartPaste} hotkey={config.hotkey} switchPreview={config.editor.switchPreview} + enableMarkdownLint={config.editor.enableMarkdownLint} customMarkdownLintConfig={config.editor.customMarkdownLintConfig} />
this.handleMouseDown(e)} > diff --git a/browser/main/lib/ConfigManager.js b/browser/main/lib/ConfigManager.js index 78c91aa1..bea019fa 100644 --- a/browser/main/lib/ConfigManager.js +++ b/browser/main/lib/ConfigManager.js @@ -64,6 +64,7 @@ export const DEFAULT_CONFIG = { frontMatterTitleField: 'title', spellcheck: false, enableSmartPaste: false, + enableMarkdownLint: false, customMarkdownLintConfig: DEFAULT_MARKDOWN_LINT_CONFIG }, preview: { diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 1f914209..3e062e9f 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -104,6 +104,7 @@ class UiTab extends React.Component { explodingPairs: this.refs.explodingPairs.value, spellcheck: this.refs.spellcheck.checked, enableSmartPaste: this.refs.enableSmartPaste.checked, + enableMarkdownLint: this.refs.enableMarkdownLint.checked, customMarkdownLintConfig: this.customMarkdownLintConfigCM.getCodeMirror().getValue() }, preview: { @@ -599,6 +600,17 @@ class UiTab extends React.Component {
+
+ +
+
{i18n.__('Matching character pairs')} diff --git a/yarn.lock b/yarn.lock index 8fa53631..a5c507eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -101,6 +101,11 @@ version "8.10.17" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.17.tgz#d48cf10f0dc6dcf59f827f5a3fc7a4a6004318d3" +"JSV@>= 4.0.x": + version "4.0.2" + resolved "https://registry.yarnpkg.com/JSV/-/JSV-4.0.2.tgz#d077f6825571f82132f9dffaed587b4029feff57" + integrity sha1-0Hf2glVx+CEy+d/67Vh7QCn+/1c= + abab@^1.0.3, abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -1620,9 +1625,10 @@ chalk@0.5.1: strip-ansi "^0.3.0" supports-color "^0.2.0" -chalk@^0.4.0: +chalk@^0.4.0, chalk@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + integrity sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8= dependencies: ansi-styles "~1.0.0" has-color "~0.1.0" @@ -5587,6 +5593,14 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +jsonlint-mod@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/jsonlint-mod/-/jsonlint-mod-1.7.4.tgz#310390e1a6a85cef99f45f200e662ef23b48f7a6" + integrity sha512-FYOkwHqiuBbdVCHgXYlmtL+iUOz9AxCgjotzXl+edI0Hc1km1qK6TrBEAyPpO+5R0/IX3XENRp66mfob4jwxow== + dependencies: + JSV ">= 4.0.x" + nomnom ">= 1.5.x" + jsonpointer@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" @@ -5685,6 +5699,13 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +linkify-it@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.1.0.tgz#c4caf38a6cd7ac2212ef3c7d2bde30a91561f9db" + integrity sha512-4REs8/062kV2DSHxNfq5183zrqXMl7WP0WzABH9IeJI+NLm429FgE1PDecltYfnOoFDFlZGh2T8PfZn0r+GTRg== + dependencies: + uc.micro "^1.0.1" + linkify-it@~1.2.0, linkify-it@~1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-1.2.4.tgz#0773526c317c8fd13bd534ee1d180ff88abf881a" @@ -5968,6 +5989,17 @@ markdown-it-sup@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz#cb9c9ff91a5255ac08f3fd3d63286e15df0a1fc3" +markdown-it@8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-8.4.2.tgz#386f98998dc15a37722aa7722084f4020bdd9b54" + integrity sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ== + dependencies: + argparse "^1.0.7" + entities "~1.1.1" + linkify-it "^2.0.0" + mdurl "^1.0.1" + uc.micro "^1.0.5" + markdown-it@^5.0.3: version "5.1.0" resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-5.1.0.tgz#25286b8465bac496f3f1b77eed544643e9bd718d" @@ -6009,6 +6041,13 @@ markdown-toc@^1.2.0: repeat-string "^1.6.1" strip-color "^0.1.0" +markdownlint@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.11.0.tgz#3858bbdbc1ab78abf0c098d841c72b63dd3206a0" + integrity sha512-wE5WdKD6zW2DQaPQ5TFBTXh5j76DnWd/IFffnDQgHmi6Y61DJXBDfLftZ/suJHuv6cwPjM6gKw2GaRLJMOR+Mg== + dependencies: + markdown-it "8.4.2" + match-at@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/match-at/-/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540" @@ -6470,6 +6509,14 @@ nodeify@^1.0.1: is-promise "~1.0.0" promise "~1.3.0" +"nomnom@>= 1.5.x": + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" + integrity sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc= + dependencies: + chalk "~0.4.0" + underscore "~1.6.0" + nopt@^3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -9048,6 +9095,11 @@ uc.micro@^1.0.0, uc.micro@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376" +uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + uglify-js@^2.6: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" From 8b82c448af970ddfab4fc22baf80e9ce16e68ffc Mon Sep 17 00:00:00 2001 From: tool root Date: Sat, 25 May 2019 07:58:43 +0900 Subject: [PATCH 20/29] Fix: Changed the function name --- browser/components/CodeEditor.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 99695cdb..f4e1da65 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -86,7 +86,7 @@ export default class CodeEditor extends React.Component { this.searchHandler = (e, msg) => this.handleSearch(msg) this.searchState = null this.scrollToLineHandeler = this.scrollToLine.bind(this) - this.setCodeEditorLintConfig = this.setCodeEditorLintConfig.bind(this) + this.setCodeEditorLintConfig = this.getCodeEditorLintConfig.bind(this) this.validatorOfMarkdown = this.validatorOfMarkdown.bind(this) this.formatTable = () => this.handleFormatTable() @@ -277,7 +277,7 @@ export default class CodeEditor extends React.Component { inputStyle: 'textarea', dragDrop: false, foldGutter: true, - lint: this.setCodeEditorLintConfig(), + lint: this.getCodeEditorLintConfig(), gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs, @@ -534,7 +534,7 @@ export default class CodeEditor extends React.Component { needRefresh = true } if (prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { - this.editor.setOption('lint', this.setCodeEditorLintConfig()) + this.editor.setOption('lint', this.getCodeEditorLintConfig()) needRefresh = true } @@ -618,7 +618,7 @@ export default class CodeEditor extends React.Component { } } - setCodeEditorLintConfig () { + getCodeEditorLintConfig () { const { mode } = this.props const checkMarkdownNoteIsOpen = mode === 'Boost Flavored Markdown' From 3b473a5f7a66178cfae1511f0a0ef3fbac46c213 Mon Sep 17 00:00:00 2001 From: tool root Date: Sat, 25 May 2019 08:04:40 +0900 Subject: [PATCH 21/29] Fix: Changed the function name --- browser/components/CodeEditor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index f4e1da65..20de5d41 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -86,7 +86,7 @@ export default class CodeEditor extends React.Component { this.searchHandler = (e, msg) => this.handleSearch(msg) this.searchState = null this.scrollToLineHandeler = this.scrollToLine.bind(this) - this.setCodeEditorLintConfig = this.getCodeEditorLintConfig.bind(this) + this.getCodeEditorLintConfig = this.getCodeEditorLintConfig.bind(this) this.validatorOfMarkdown = this.validatorOfMarkdown.bind(this) this.formatTable = () => this.handleFormatTable() From 2cffb50884e3b131ed85b9b1f7806aa3116b2ae3 Mon Sep 17 00:00:00 2001 From: tool root Date: Sat, 25 May 2019 08:16:25 +0900 Subject: [PATCH 22/29] Fix: Changed height of form --- browser/main/modals/PreferencesModal/UiTab.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 1f914209..0601dc23 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -32,7 +32,7 @@ class UiTab extends React.Component { CodeMirror.autoLoadMode(this.customCSSCM.getCodeMirror(), 'css') CodeMirror.autoLoadMode(this.customMarkdownLintConfigCM.getCodeMirror(), 'javascript') this.customCSSCM.getCodeMirror().setSize('400px', '400px') - this.customMarkdownLintConfigCM.getCodeMirror().setSize('400px', '400px') + this.customMarkdownLintConfigCM.getCodeMirror().setSize('400px', '200px') this.handleSettingDone = () => { this.setState({UiAlert: { type: 'success', @@ -648,7 +648,7 @@ class UiTab extends React.Component {
this.handleUIChange(e)} ref={e => (this.customMarkdownLintConfigCM = e)} value={config.editor.customMarkdownLintConfig} From b68b367b3ca870c650c1bcf3809f1ee043f16e33 Mon Sep 17 00:00:00 2001 From: AWolf81 Date: Sat, 25 May 2019 07:16:03 +0200 Subject: [PATCH 23/29] Toggle linting gutter with document.querySelector and style.display --- browser/components/CodeEditor.js | 11 +++++------ browser/components/MarkdownEditor.js | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 95e1ed7c..eaf049f4 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -40,8 +40,6 @@ function translateHotkey (hotkey) { return hotkey.replace(/\s*\+\s*/g, '-').replace(/Command/g, 'Cmd').replace(/Control/g, 'Ctrl') } -const DEFAULT_GUTTERS = ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'] - export default class CodeEditor extends React.Component { constructor (props) { super(props) @@ -280,7 +278,7 @@ export default class CodeEditor extends React.Component { dragDrop: false, foldGutter: true, lint: enableMarkdownLint ? this.setCodeEditorLintConfig() : false, - gutters: [...DEFAULT_GUTTERS, enableMarkdownLint && 'CodeMirror-lint-markers'], + gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter', 'CodeMirror-lint-markers'], autoCloseBrackets: { pairs: this.props.matchingPairs, triples: this.props.matchingTriples, @@ -290,6 +288,8 @@ export default class CodeEditor extends React.Component { extraKeys: this.defaultKeyMap }) + document.querySelector('.CodeMirror-lint-markers').style.display = enableMarkdownLint ? 'inline-block' : 'none' + if (!this.props.mode && this.props.value && this.props.autoDetect) { this.autoDetectLanguage(this.props.value) } else { @@ -539,12 +539,11 @@ export default class CodeEditor extends React.Component { if (prevProps.enableMarkdownLint !== enableMarkdownLint || prevProps.customMarkdownLintConfig !== customMarkdownLintConfig) { if (!enableMarkdownLint) { this.editor.setOption('lint', {default: false}) - this.editor.setOption('gutters', DEFAULT_GUTTERS) + document.querySelector('.CodeMirror-lint-markers').style.display = 'none' } else { this.editor.setOption('lint', this.setCodeEditorLintConfig()) - this.editor.setOption('gutters', [...DEFAULT_GUTTERS, 'CodeMirror-lint-markers']) + document.querySelector('.CodeMirror-lint-markers').style.display = 'inline-block' } - needRefresh = true } diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 526ecb39..95cd7d7f 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -194,6 +194,7 @@ class MarkdownEditor extends React.Component { } reload () { + console.log('reloading editor...') this.refs.code.reload() this.cancelQueue() this.renderPreview(this.props.value) @@ -277,7 +278,7 @@ class MarkdownEditor extends React.Component { if (this.props.ignorePreviewPointerEvents) previewStyle.pointerEvents = 'none' const storage = findStorage(storageKey) - + console.log('render editor', config) return (
Date: Sat, 25 May 2019 07:31:21 +0200 Subject: [PATCH 24/29] move enableMarkdownLint checkbox to customMarkdownLintConfig area (like at allow custom css) --- browser/main/modals/PreferencesModal/UiTab.js | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index c8bfe8d1..da67bbf7 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -600,17 +600,6 @@ class UiTab extends React.Component {
-
- -
-
{i18n.__('Matching character pairs')} @@ -657,6 +646,12 @@ class UiTab extends React.Component { {i18n.__('Custom MarkdownLint Rules')}
+ this.handleUIChange(e)} + checked={this.state.config.editor.enableMarkdownLint} + ref='enableMarkdownLint' + type='checkbox' + />  + {i18n.__('Enable MarkdownLint')}
Date: Sun, 26 May 2019 09:57:40 +0200 Subject: [PATCH 25/29] remove console.logs & improve error handling --- browser/components/CodeEditor.js | 4 +++- browser/components/MarkdownEditor.js | 3 +-- browser/main/modals/PreferencesModal/UiTab.js | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 9eed4054..61b33de1 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -642,8 +642,10 @@ export default class CodeEditor extends React.Component { try { Jsonlint.parse(customMarkdownLintConfig) lintConfigJson = JSON.parse(customMarkdownLintConfig) + console.log(customMarkdownLintConfig, lintConfigJson) } catch (err) { - throw err + eventEmitter.emit('APP_SETTING_ERROR') + return } const lintOptions = { 'strings': { diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 95cd7d7f..526ecb39 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -194,7 +194,6 @@ class MarkdownEditor extends React.Component { } reload () { - console.log('reloading editor...') this.refs.code.reload() this.cancelQueue() this.renderPreview(this.props.value) @@ -278,7 +277,7 @@ class MarkdownEditor extends React.Component { if (this.props.ignorePreviewPointerEvents) previewStyle.pointerEvents = 'none' const storage = findStorage(storageKey) - console.log('render editor', config) + return (
{ + console.log('handle err', err) this.setState({UiAlert: { type: 'error', message: err.message != null ? err.message : i18n.__('An error occurred!') From c70cca277604af0fd04f2647c5a22b4a04b7d7fe Mon Sep 17 00:00:00 2001 From: AWolf81 Date: Sun, 26 May 2019 10:06:13 +0200 Subject: [PATCH 26/29] remove console.log --- browser/components/CodeEditor.js | 1 - browser/main/modals/PreferencesModal/UiTab.js | 1 - 2 files changed, 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 61b33de1..180aca75 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -642,7 +642,6 @@ export default class CodeEditor extends React.Component { try { Jsonlint.parse(customMarkdownLintConfig) lintConfigJson = JSON.parse(customMarkdownLintConfig) - console.log(customMarkdownLintConfig, lintConfigJson) } catch (err) { eventEmitter.emit('APP_SETTING_ERROR') return diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 5b2cf762..da67bbf7 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -40,7 +40,6 @@ class UiTab extends React.Component { }}) } this.handleSettingError = (err) => { - console.log('handle err', err) this.setState({UiAlert: { type: 'error', message: err.message != null ? err.message : i18n.__('An error occurred!') From aa4d06fb1eac8c84bc36516b4f95c223498bc013 Mon Sep 17 00:00:00 2001 From: Zubata SMRTKA Date: Fri, 24 May 2019 17:21:19 +0200 Subject: [PATCH 27/29] formatting --- browser/lib/Languages.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/browser/lib/Languages.js b/browser/lib/Languages.js index 8c3747a9..435747a9 100644 --- a/browser/lib/Languages.js +++ b/browser/lib/Languages.js @@ -62,10 +62,12 @@ const languages = [ { name: 'Spanish', locale: 'es-ES' - }, { + }, + { name: 'Turkish', locale: 'tr' - }, { + }, + { name: 'Thai', locale: 'th' } @@ -82,4 +84,3 @@ module.exports = { return languages } } - From 63eb8584e7520288332d515a5f13c11e40a70116 Mon Sep 17 00:00:00 2001 From: Junyoung Choi Date: Sun, 26 May 2019 18:32:24 +0900 Subject: [PATCH 28/29] Hide markdown lint settings when markdown lint is disabled --- browser/main/modals/PreferencesModal/UiTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index da67bbf7..5de4b12b 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -652,7 +652,7 @@ class UiTab extends React.Component { type='checkbox' />  {i18n.__('Enable MarkdownLint')} -
+
Date: Sun, 26 May 2019 18:49:44 +0900 Subject: [PATCH 29/29] v0.11.17 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 84deed58..aa52ed53 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "boost", "productName": "Boostnote", - "version": "0.11.16", + "version": "0.11.17", "main": "index.js", "description": "Boostnote", "license": "GPL-3.0",