9 Commits
9 changed files with 110 additions and 32 deletions
+7
View File
@@ -1,3 +1,10 @@
## 0.4.0
- Rename `notational-velocity` to `nvatom`
- Copy `notational-velocity` settings/notes on initialization
## 0.3.0
- Fix the bug that the default note directory is within packages directory. If it happens, it **deletes** all of existing notes. If you read this before updating the package, please check your note directory before updating it.
## 0.2.0
- Use DocQuery
- Introduce autosave features
+14 -3
View File
@@ -1,5 +1,7 @@
# Notational Velocity for Atom
*`notational-velocity` package is renamed to `nvatom` package due to a fatal bug. For more info, refer [migration section](#migration).*
[![Build Status][3]][4]
[Notational Velocity][1] is an application that stores and retrieves notes.
@@ -26,13 +28,13 @@ We do believe Notational Velocity is the precursor of the famous note-taking app
## Settings
To configure your note directory, set `notational-velocity.directory`:
To configure your note directory, set `nvatom.directory`:
* Open your `~/.atom/config.cson` file from the menu: *Atom > Open Your Config*
* Append the following lines:
```cson
'notational-velocity':
'nvatom':
directory: '/path/to/your/notes'
```
@@ -52,9 +54,17 @@ You can also override `cmd-l` if you want to keep your muscle memory from Notati
'atom-text-editor':
'cmd-l': 'unset!'
'atom-workspace':
'cmd-l': 'notational-velocity:toggle'
'cmd-l': 'nvatom:toggle'
```
## Migration
v0.1.0 under published package name `notational-velocity` had a fatal bug that sets the default value of its note directory under package directory. Since package directory is overwritten when the user updates `notational-velocity` package. For more information, refer [#25][6].
To resolve this problem, we renamed our package name to `nvatom`. Users who have the old `notational-velocity` need to **install `nvatom` package first**, activate the package to automatically migrate the existing notes, and then delete `notational-velocity` package.
Since keymaps overlap with `notational-velocity`, follow the menu *Packages > nvAtom > Toggle* to activate this package.
## References
- [Notational Velocity](http://notational.net/)
@@ -69,3 +79,4 @@ You can also override `cmd-l` if you want to keep your muscle memory from Notati
[3]: https://travis-ci.org/seongjaelee/notational-velocity.svg?branch=master
[4]: https://travis-ci.org/seongjaelee/notational-velocity
[5]: https://cloud.githubusercontent.com/assets/948301/7246990/2e2b4c6e-e7b9-11e4-93b0-57954e011e81.gif
[6]: https://github.com/seongjaelee/notational-velocity/issues/25
+1 -1
View File
@@ -8,4 +8,4 @@
# For more detailed documentation see
# https://atom.io/docs/latest/advanced/keymaps
'atom-workspace':
'alt-cmd-l': 'notational-velocity:toggle'
'alt-cmd-l': 'nvatom:toggle'
+3 -3
View File
@@ -2,15 +2,15 @@ path = require 'path'
fs = require 'fs-plus'
_ = require 'underscore-plus'
{$, $$, SelectListView} = require 'atom-space-pen-views'
DocQuery = require 'DocQuery'
DocQuery = require 'docquery'
module.exports =
class NotationalVelocityView extends SelectListView
initialize: (state) ->
@initializedAt = new Date()
super
@addClass('notational-velocity from-top overlay')
@rootDirectory = atom.config.get('notational-velocity.directory')
@addClass('nvatom from-top overlay')
@rootDirectory = atom.config.get('nvatom.directory')
if !fs.existsSync(@rootDirectory)
throw new Error("The given directory #{@rootDirectory} does not exist. "
+ "Set the note directory to the existing one from Settings.")
+46 -3
View File
@@ -8,12 +8,12 @@ module.exports =
title: 'Note Directory'
description: 'The directory to archive notes'
type: 'string'
default: process.env.ATOM_HOME + '/packages/notational-velocity/notebook'
default: path.join(process.env.ATOM_HOME, 'nvatom-notes')
notationalVelocityView: null
activate: (state) ->
@rootDirectory = fs.realpathSync(atom.config.get('notational-velocity.directory'))
@rootDirectory = @ensureNoteDirectory()
# Events subscribed to in atom's system can be easily cleaned up with a
# CompositeDisposable
@@ -21,7 +21,7 @@ module.exports =
# Register command that toggles this view
@subscriptions.add atom.commands.add 'atom-workspace',
'notational-velocity:toggle': => @createView(state).toggle()
'nvatom:toggle': => @createView(state).toggle()
handleBeforeUnload = @autosaveAll.bind(this)
window.addEventListener('beforeunload', handleBeforeUnload, true)
@@ -60,3 +60,46 @@ module.exports =
autosaveAll: ->
@autosave(paneItem) for paneItem in atom.workspace.getPaneItems()
ensureNoteDirectory: ->
noteDirectory = atom.config.get('nvatom.directory')
packagesDirectory = path.join(process.env.ATOM_HOME, 'packages')
defaultNoteDirectory = path.join(packagesDirectory, 'nvatom', 'notebook')
if noteDirectory.startsWith(packagesDirectory)
throw new Error('Note directory #{noteDirectory} cannot reside within atom packages directory. Please change its value from package settings.')
# Initialize note directory.
if !fs.existsSync(noteDirectory)
@tryMigrateFromNotationalVelocity()
noteDirectory = atom.config.get('nvatom.directory')
if !fs.existsSync(noteDirectory)
fs.makeTreeSync(noteDirectory)
fs.copySync(defaultNoteDirectory, noteDirectory)
return fs.realpathSync(noteDirectory)
tryMigrateFromNotationalVelocity: ->
prevNoteDirectory = atom.config.get('notational-velocity.directory')
currNoteDirectory = atom.config.get('nvatom.directory')
packagesDirectory = path.join(process.env.ATOM_HOME, 'packages')
defaultNoteDirectory = path.join(packagesDirectory, 'nvatom', 'notebook')
# notational-velocity does not exist.
if prevNoteDirectory == undefined
return
atom.notifications.addInfo('Migrating from notational-velocity package...')
if !fs.existsSync(prevNoteDirectory)
atom.notifications.addError('notational-velocity.directory #{prevNoteDirectory} does not exists. Migration process is failed.')
return
if prevNoteDirectory.startsWith(packagesDirectory)
fs.makeTreeSync(currNoteDirectory)
fs.copySync(prevNoteDirectory, currNoteDirectory)
else
if path.join(process.env.ATOM_HOME, 'nvatom-notes') == currNoteDirectory
atom.config.set('nvatom.directory', prevNoteDirectory)
atom.notifications.addInfo('Finished migration.')
+2 -2
View File
@@ -3,11 +3,11 @@
{
'label': 'Packages'
'submenu': [
'label': 'Notational Velocity'
'label': 'nvAtom'
'submenu': [
{
'label': 'Toggle'
'command': 'notational-velocity:toggle'
'command': 'nvatom:toggle'
}
]
]
+3 -3
View File
@@ -1,7 +1,7 @@
{
"name": "notational-velocity",
"name": "nvatom",
"main": "./lib/notational-velocity",
"version": "0.2.0",
"version": "0.4.2",
"private": true,
"contributors": [
"Seongjae Lee <seongjae@gmail.com>",
@@ -10,7 +10,7 @@
],
"description": "Notational Velocity for Atom",
"activationCommands": {
"atom-workspace": "notational-velocity:toggle"
"atom-workspace": "nvatom:toggle"
},
"repository": "https://github.com/seongjaelee/notational-velocity",
"license": "MIT",
+33 -16
View File
@@ -1,32 +1,49 @@
# Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs.
#
# To run a specific `it` or `describe` block add an `f` to the front (e.g. `fit`
# or `fdescribe`). Remove the `f` to unfocus the block.
path = require 'path'
describe "NotationalVelocity", ->
defaultDirectory = atom.config.get('notational-velocity.directory')
describe "nvAtom", ->
defaultDirectory = atom.config.get('nvatom.directory')
activationPromise = null
workspaceElement = null
beforeEach ->
workspaceElement = atom.views.getView(atom.workspace)
activationPromise = atom.packages.activatePackage('notational-velocity')
atom.config.set('notational-velocity.directory', 'testdata')
activationPromise = atom.packages.activatePackage('nvatom')
atom.config.set('nvatom.directory', 'testdata')
afterEach ->
atom.config.set('notational-velocity.directory', defaultDirectory)
atom.config.set('nvatom.directory', defaultDirectory)
describe "when the notational-velocity:toggle event is triggered", ->
describe "when the nvatom:toggle event is triggered", ->
it "attaches and then detaches the view", ->
expect(workspaceElement.querySelector('.notational-velocity')).not.toExist()
expect(workspaceElement.querySelector('.nvatom')).not.toExist()
# This is an activation event, triggering it will cause the package to be
# activated.
atom.commands.dispatch workspaceElement, 'notational-velocity:toggle'
# This is an activation event, triggering it will cause the package to be activated.
atom.commands.dispatch workspaceElement, 'nvatom:toggle'
waitsForPromise ->
activationPromise
runs ->
expect(workspaceElement.querySelector('.notational-velocity')).toExist()
atom.commands.dispatch workspaceElement, 'notational-velocity:toggle'
expect(workspaceElement.querySelector('.nvatom')).toExist()
atom.commands.dispatch workspaceElement, 'nvatom:toggle'
it "checks if we banned the default directory under packages directory", ->
atom.notifications.clear()
waitsForPromise ->
atom.packages.activatePackage('notifications')
runs ->
noteDirectoryUnderPackageDirectory = path.join(process.env.ATOM_HOME, 'packages', 'nvatom', 'notebook')
atom.config.set('nvatom.directory', noteDirectoryUnderPackageDirectory)
# This is an activation event, triggering it will cause the package to be activated.
atom.commands.dispatch workspaceElement, 'nvatom:toggle'
waitsForPromise ->
activationPromise
runs ->
notificationContainer = workspaceElement.querySelector('atom-notifications')
notification = notificationContainer.querySelector('atom-notification.fatal')
expect(notification).toExist()
+1 -1
View File
@@ -4,7 +4,7 @@
// for a full listing of what's available.
@import "ui-variables";
.notational-velocity {
.nvatom {
li {
text-overflow: ellipsis;
overflow-x: hidden;