Skip to content
This repository was archived by the owner on Jan 14, 2022. It is now read-only.

Commit 84f1e45

Browse files
committed
added save snippet using ctrl + s shortcut
1 parent b495e57 commit 84f1e45

File tree

8 files changed

+38
-4
lines changed

8 files changed

+38
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Every notable changes in each version will be listed in this file.
77
## Features:
88

99
- **Interface**: New tags input with tag auto complete
10+
- **Core**: Save snippet with keyboard shortcut `ctrl + s`
1011

1112
## Improvements:
1213

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ SnippetStore currently support 2 languages:
9898
| Open setting modal | ctrl + , |
9999
| Toggle small sidebar mode | ctrl + b |
100100
| Close all modal | esc |
101+
| Save snippet | ctrl + s |
101102

102103
## Tech Stack
103104

browser/core/functions/keyboard.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ const actions = [
2828
action: () => {
2929
eventEmitter.emit('modal:close')
3030
}
31+
},
32+
{
33+
name: 'SaveAllSnippets',
34+
action: () => {
35+
eventEmitter.emit('snippets:saveAll')
36+
}
3137
}
3238
]
3339

browser/lib/config-manager.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ const DEFAULT_CONFIG = {
3535
createSnippet: OSX ? 'Cmd + N' : 'Ctrl + N',
3636
openSetting: OSX ? 'Cmd + ,' : 'Ctrl + ,',
3737
toggleSidebar: OSX ? 'Cmd + B' : 'Ctrl + B',
38-
closeAllModals: 'Esc'
38+
closeAllModals: 'Esc',
39+
SaveAllSnippets: OSX ? 'Cmd + S' : 'Ctrl + S'
3940
}
4041
}
4142

browser/render/layouts/list-and-detail/snippet-detail-multi-file/index.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ export default class SnippetDetailMultiFile extends React.Component {
2222
this.state = {
2323
isEditing: false,
2424
selectedFile: 0,
25-
editingFiles: []
25+
editingFiles: props.snippet.files
2626
}
2727
}
2828

2929
componentDidMount () {
30-
const { snippet } = this.props
31-
this.setState({ editingFiles: snippet.files })
30+
eventEmitter.on('snippets:saveAll', () => {
31+
this.handleSaveChangesClick()
32+
})
3233
}
3334

3435
renderTopBar () {

browser/render/layouts/list-and-detail/snippet-detail/index.jsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ export default class SnippetDetail extends React.Component {
2424
}
2525
}
2626

27+
componentDidMount () {
28+
eventEmitter.on('snippets:saveAll', () => {
29+
this.handleSaveChangesClick()
30+
})
31+
}
32+
2733
renderTopBar () {
2834
const { isEditing } = this.state
2935
return (

browser/render/layouts/original/snippet-item-multi-files/index.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { toast } from 'react-toastify'
77
import { toJS } from 'mobx'
88
import _ from 'lodash'
99
import formatDate from 'lib/date-format'
10+
import eventEmitter from 'lib/event-emitter'
1011
import { getExtension, generateKey } from 'lib/util'
1112
import TagItem from 'render/components/tag-item'
1213
import CodeMirror from 'codemirror'
@@ -25,6 +26,14 @@ export default class SnippetItemMultiFiles extends React.Component {
2526
}
2627
}
2728

29+
componentDidMount () {
30+
eventEmitter.on('snippets:saveAll', () => {
31+
if (this.state.isEditing) {
32+
this.handleSaveChangesClick()
33+
}
34+
})
35+
}
36+
2837
renderHeader () {
2938
const { isEditing } = this.state
3039
const { snippet } = this.props

browser/render/layouts/original/snippet-item/index.jsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import TagItem from 'render/components/tag-item'
1111
import i18n from 'render/lib/i18n'
1212
import CodeEditor from 'render/components/code-editor'
1313
import TagInput from 'render/components/tag-input'
14+
import eventEmitter from 'lib/event-emitter'
1415
import CodeMirror from 'codemirror'
1516
import 'codemirror/mode/meta'
1617
import './snippet-item'
@@ -23,6 +24,14 @@ export default class SnippetItem extends React.Component {
2324
}
2425
}
2526

27+
componentDidMount () {
28+
eventEmitter.on('snippets:saveAll', () => {
29+
if (this.state.isEditing) {
30+
this.handleSaveChangesClick()
31+
}
32+
})
33+
}
34+
2635
handleSnippetLangChange () {
2736
const { editor } = this.refs
2837
const snippetMode = CodeMirror.findModeByName(this.refs.lang.value).mode

0 commit comments

Comments
 (0)