From 81441a08958e36646a530b26611afd5c804e2532 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Tue, 19 Jan 2016 20:11:38 +0900 Subject: [PATCH 1/7] done but bugged --- browser/components/CodeEditor.js | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 86dbf5ec..4eb4eee6 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -35,6 +35,38 @@ export default class CodeEditor extends React.Component { if (this.props.onBlur) this.props.onBlur(e) } + + this.killedBuffer = '' + this.execHandler = (e) => { + switch (e.command.name) { + case 'removetolineend': + e.preventDefault() + let range = this.editor.getSelectionRange() + let session = this.editor.getSession() + if (range.isEmpty()) { + console.log(session.getLine(range.end.row).length) + range.setEnd(range.start.row, session.getLine(range.start.row).length) + this.killedBuffer = session.getTextRange(range) + if (this.killedBuffer.length > 0) { + console.log('remove to lineend') + session.remove(range) + } else { + if (session.getLength() === range.start.row) { + return + } + range.setStart(range.start.row, range.end.col) + range.setEnd(range.start.row + 1, 0) + this.killedBuffer = '\n' + session.remove(range) + } + } else { + console.log('selected') + this.killedBuffer = session.getTextRange(range) + session.remove(range) + } + console.log(this.killedBuffer) + } + } this.afterExecHandler = (e) => { switch (e.command.name) { case 'find': @@ -42,6 +74,7 @@ export default class CodeEditor extends React.Component { el.removeEventListener('blur', this.blurHandler) el.addEventListener('blur', this.blurHandler) }) + break } } @@ -83,6 +116,14 @@ export default class CodeEditor extends React.Component { }, readOnly: true }) + editor.commands.addCommand({ + name: 'Emacs cursor up', + bindKey: {mac: 'Ctrl-Y'}, + exec: function (editor) { + editor.insert(this.killedBuffer) + }.bind(this), + readOnly: true + }) editor.commands.addCommand({ name: 'Focus title', bindKey: {win: 'Esc', mac: 'Esc'}, @@ -96,6 +137,7 @@ export default class CodeEditor extends React.Component { readOnly: true }) + editor.commands.on('exec', this.execHandler) editor.commands.on('afterExec', this.afterExecHandler) var session = editor.getSession() @@ -120,6 +162,7 @@ export default class CodeEditor extends React.Component { ipc.removeListener('config-apply', this.configApplyHandler) this.editor.getSession().removeListener('change', this.changeHandler) this.editor.removeListener('blur', this.blurHandler) + this.editor.commands.removeListener('exec', this.execHandler) this.editor.commands.removeListener('afterExec', this.afterExecHandler) } From 01c9d62a2b44554ab8ecc139992730f48e0419d9 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Thu, 21 Jan 2016 05:50:40 +0900 Subject: [PATCH 2/7] fix sanitizing bug in Code block --- browser/lib/markdown.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index eaa55297..d75bdf02 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -14,7 +14,7 @@ var md = markdownit({ return hljs.highlight(lang, str).value } catch (e) {} } - return str + return str.replace(/\&/g, '&').replace(/\/g, '>').replace(/\"/g, '"') } }) md.use(emoji, { From cabcaa892c8f3775d5194711f9b7f16378e7184d Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Thu, 21 Jan 2016 05:50:53 +0900 Subject: [PATCH 3/7] clean old code --- .../HomePage/ArticleDetail/ArticleEditor.js | 1 - browser/main/HomePage/ArticleDetail/index.js | 27 +------------------ 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/browser/main/HomePage/ArticleDetail/ArticleEditor.js b/browser/main/HomePage/ArticleDetail/ArticleEditor.js index 1f1b2070..46a5b325 100644 --- a/browser/main/HomePage/ArticleDetail/ArticleEditor.js +++ b/browser/main/HomePage/ArticleDetail/ArticleEditor.js @@ -32,7 +32,6 @@ export default class ArticleEditor extends React.Component { } componentDidMount () { - console.log(this.state.switchPreview) ipc.on('config-apply', this.configApplyHandler) } diff --git a/browser/main/HomePage/ArticleDetail/index.js b/browser/main/HomePage/ArticleDetail/index.js index 21b78fc5..93529d0f 100644 --- a/browser/main/HomePage/ArticleDetail/index.js +++ b/browser/main/HomePage/ArticleDetail/index.js @@ -4,10 +4,7 @@ import moment from 'moment' import _ from 'lodash' import { switchFolder, - updateArticle, - // cacheArticle, - // saveArticle, - // uncacheArticle + updateArticle } from '../../actions' import linkState from 'browser/lib/linkState' import TagSelect from 'browser/components/TagSelect' @@ -19,22 +16,6 @@ import ArticleEditor from './ArticleEditor' const electron = require('electron') const ipc = electron.ipcRenderer -// const remote = electron.remote -// const { Menu, MenuItem } = remote -// const othersMenu = new Menu() -// othersMenu.append(new MenuItem({ -// label: 'Delete Post', -// click: function () { -// remote.getCurrentWebContents().send('detail-delete') -// } -// })) -// othersMenu.append(new MenuItem({ -// label: 'Discard Change', -// click: function (item) { -// remote.getCurrentWebContents().send('detail-uncache') -// } -// })) - const BRAND_COLOR = '#18AF90' const OSX = global.process.platform === 'darwin' @@ -80,10 +61,6 @@ export default class ArticleDetail extends React.Component { constructor (props) { super(props) - this.saveHandler = e => { - if (isModalOpen()) return true - this.handleSaveButtonClick() - } this.deleteHandler = e => { if (isModalOpen()) return true this.handleDeleteButtonClick() @@ -119,7 +96,6 @@ export default class ArticleDetail extends React.Component { e.stopPropagation() } - // ipc.on('detail-save', this.saveHandler) ipc.on('detail-delete', this.deleteHandler) ipc.on('detail-uncache', this.uncacheHandler) ipc.on('detail-title', this.titleHandler) @@ -130,7 +106,6 @@ export default class ArticleDetail extends React.Component { componentWillUnmount () { clearInterval(this.refreshTimer) - // ipc.removeListener('detail-save', this.saveHandler) ipc.removeListener('detail-delete', this.deleteHandler) ipc.removeListener('detail-uncache', this.uncacheHandler) ipc.removeListener('detail-title', this.titleHandler) From 1a183d78af3b9df90ee233501469ca33ffbf61bf Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Thu, 21 Jan 2016 08:29:09 +0900 Subject: [PATCH 4/7] fix go to line end --- browser/components/CodeEditor.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 4eb4eee6..be5500e5 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -38,13 +38,18 @@ export default class CodeEditor extends React.Component { this.killedBuffer = '' this.execHandler = (e) => { + console.log(e.command.name) switch (e.command.name) { + case 'gotolineend': + e.preventDefault() + let position = this.editor.getCursorPosition() + this.editor.navigateTo(position.row, this.editor.getSession().getLine(position.row).length) + break case 'removetolineend': e.preventDefault() let range = this.editor.getSelectionRange() let session = this.editor.getSession() if (range.isEmpty()) { - console.log(session.getLine(range.end.row).length) range.setEnd(range.start.row, session.getLine(range.start.row).length) this.killedBuffer = session.getTextRange(range) if (this.killedBuffer.length > 0) { @@ -60,11 +65,9 @@ export default class CodeEditor extends React.Component { session.remove(range) } } else { - console.log('selected') this.killedBuffer = session.getTextRange(range) session.remove(range) } - console.log(this.killedBuffer) } } this.afterExecHandler = (e) => { From a0553788b6f86dc7a614204ff194679c1e9a82f3 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Fri, 22 Jan 2016 02:55:02 +0900 Subject: [PATCH 5/7] update h1 style of markdown --- browser/styles/mixins/marked.styl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/browser/styles/mixins/marked.styl b/browser/styles/mixins/marked.styl index cfa893b1..dceef6c5 100644 --- a/browser/styles/mixins/marked.styl +++ b/browser/styles/mixins/marked.styl @@ -48,12 +48,12 @@ marked() *:not(a.lineAnchor) + h1, *:not(a.lineAnchor) + h2, *:not(a.lineAnchor) + h3, *:not(a.lineAnchor) + h4, *:not(a.lineAnchor) + h5, *:not(a.lineAnchor) + h6 margin-top 25px h1 - font-size 2em + font-size 1.8em border-bottom solid 2px borderColor - line-height 2.333em + line-height 2em h2 font-size 1.66em - line-height 2.07em + line-height 1.8em h3 font-size 1.33em line-height 1.6625em From cd4f9d8bb4755aec7e65fca4673e2064f772fc51 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Fri, 22 Jan 2016 02:58:06 +0900 Subject: [PATCH 6/7] emit ARTICLE_CREATE when new post clicked --- browser/lib/activityRecord.js | 2 +- browser/main/HomePage/ArticleTopBar.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/browser/lib/activityRecord.js b/browser/lib/activityRecord.js index 52ec9218..569e65da 100644 --- a/browser/lib/activityRecord.js +++ b/browser/lib/activityRecord.js @@ -108,7 +108,7 @@ export function emit (type, data = {}) { } // Count ARTICLE_CREATE and ARTICLE_UPDATE again by syntax - if ((type === 'ARTICLE_CREATE' || type === 'ARTICLE_UPDATE') && data.mode != null) { + if (type === 'ARTICLE_UPDATE' && data.mode != null) { let recordKey = type + '_BY_SYNTAX' if (todayRecord[recordKey] == null) todayRecord[recordKey] = {} diff --git a/browser/main/HomePage/ArticleTopBar.js b/browser/main/HomePage/ArticleTopBar.js index 0e59473e..54dc7085 100644 --- a/browser/main/HomePage/ArticleTopBar.js +++ b/browser/main/HomePage/ArticleTopBar.js @@ -4,6 +4,7 @@ import ExternalLink from 'browser/components/ExternalLink' import { setSearchFilter, clearSearch, toggleTutorial, saveArticle, switchFolder } from '../actions' import { isModalOpen } from 'browser/lib/modal' import keygen from 'browser/lib/keygen' +import activityRecord from 'browser/lib/activityRecord' const electron = require('electron') const remote = electron.remote @@ -167,6 +168,7 @@ export default class ArticleTopBar extends React.Component { dispatch(saveArticle(newArticle.key, newArticle, true)) if (isFolderFilterApplied) dispatch(switchFolder(targetFolders[0].name)) remote.getCurrentWebContents().send('detail-title') + activityRecord.emit('ARTICLE_CREATE') } handleTutorialButtonClick (e) { From e921e30d64610aec97339b06fab6cbfe49dfe298 Mon Sep 17 00:00:00 2001 From: Rokt33r Date: Fri, 22 Jan 2016 02:59:35 +0900 Subject: [PATCH 7/7] bump up version to v0.5.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db69152a..df38d910 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "boost", - "version": "0.5.2", + "version": "0.5.4", "description": "Boostnote", "main": "index.js", "scripts": {