mirror of
https://github.com/wassname/nvatom.git
synced 2026-09-11 12:30:45 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ca6f9e76a3 | ||
|
|
5e44098ae3 | ||
|
|
a3f5d445c0 | ||
|
|
abb7339a6e | ||
|
|
4ddc133920 | ||
|
|
bca1646f8f | ||
|
|
40e785ef57 | ||
|
|
273d506f38 | ||
|
|
09d0efc06f | ||
|
|
4dd0b518aa | ||
|
|
bdf384f158 | ||
|
|
c2db598f17 | ||
|
|
1e1aa06e3c | ||
|
|
8384b81a04 | ||
|
|
ef3fb73c88 | ||
|
|
6c9752ae25 | ||
|
|
bb80f5e203 | ||
|
|
5f26638a78 |
@@ -1,3 +1,15 @@
|
|||||||
|
## 0.5.0
|
||||||
|
- Add `useLunrPipeline` feature
|
||||||
|
- Improve autoselect/autocomplete logic
|
||||||
|
- Fix a bug that autocomplete feature does not work
|
||||||
|
|
||||||
|
## 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
|
## 0.2.0
|
||||||
- Use DocQuery
|
- Use DocQuery
|
||||||
- Introduce autosave features
|
- Introduce autosave features
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# Notational Velocity for Atom
|
# 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]
|
[![Build Status][3]][4]
|
||||||
|
|
||||||
[Notational Velocity][1] is an application that stores and retrieves notes.
|
[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
|
## 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*
|
* Open your `~/.atom/config.cson` file from the menu: *Atom > Open Your Config*
|
||||||
* Append the following lines:
|
* Append the following lines:
|
||||||
|
|
||||||
```cson
|
```cson
|
||||||
'notational-velocity':
|
'nvatom':
|
||||||
directory: '/path/to/your/notes'
|
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':
|
'atom-text-editor':
|
||||||
'cmd-l': 'unset!'
|
'cmd-l': 'unset!'
|
||||||
'atom-workspace':
|
'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
|
## References
|
||||||
|
|
||||||
- [Notational Velocity](http://notational.net/)
|
- [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
|
[3]: https://travis-ci.org/seongjaelee/notational-velocity.svg?branch=master
|
||||||
[4]: https://travis-ci.org/seongjaelee/notational-velocity
|
[4]: https://travis-ci.org/seongjaelee/notational-velocity
|
||||||
[5]: https://cloud.githubusercontent.com/assets/948301/7246990/2e2b4c6e-e7b9-11e4-93b0-57954e011e81.gif
|
[5]: https://cloud.githubusercontent.com/assets/948301/7246990/2e2b4c6e-e7b9-11e4-93b0-57954e011e81.gif
|
||||||
|
[6]: https://github.com/seongjaelee/notational-velocity/issues/25
|
||||||
|
|||||||
@@ -8,4 +8,4 @@
|
|||||||
# For more detailed documentation see
|
# For more detailed documentation see
|
||||||
# https://atom.io/docs/latest/advanced/keymaps
|
# https://atom.io/docs/latest/advanced/keymaps
|
||||||
'atom-workspace':
|
'atom-workspace':
|
||||||
'alt-cmd-l': 'notational-velocity:toggle'
|
'alt-cmd-l': 'nvatom:toggle'
|
||||||
|
|||||||
@@ -2,19 +2,19 @@ path = require 'path'
|
|||||||
fs = require 'fs-plus'
|
fs = require 'fs-plus'
|
||||||
_ = require 'underscore-plus'
|
_ = require 'underscore-plus'
|
||||||
{$, $$, SelectListView} = require 'atom-space-pen-views'
|
{$, $$, SelectListView} = require 'atom-space-pen-views'
|
||||||
DocQuery = require 'DocQuery'
|
DocQuery = require 'docquery'
|
||||||
|
|
||||||
module.exports =
|
module.exports =
|
||||||
class NotationalVelocityView extends SelectListView
|
class NotationalVelocityView extends SelectListView
|
||||||
initialize: (state) ->
|
initialize: (state) ->
|
||||||
@initializedAt = new Date()
|
@initializedAt = new Date()
|
||||||
super
|
super
|
||||||
@addClass('notational-velocity from-top overlay')
|
@addClass('nvatom from-top overlay')
|
||||||
@rootDirectory = atom.config.get('notational-velocity.directory')
|
@rootDirectory = atom.config.get('nvatom.directory')
|
||||||
if !fs.existsSync(@rootDirectory)
|
if !fs.existsSync(@rootDirectory)
|
||||||
throw new Error("The given directory #{@rootDirectory} does not exist. "
|
throw new Error("The given directory #{@rootDirectory} does not exist. "
|
||||||
+ "Set the note directory to the existing one from Settings.")
|
+ "Set the note directory to the existing one from Settings.")
|
||||||
@prevFilterQuery = ''
|
@skipPopulateList = false
|
||||||
@prevCursorPosition = 0
|
@prevCursorPosition = 0
|
||||||
@documentsLoaded = false
|
@documentsLoaded = false
|
||||||
@docQuery = new DocQuery(@rootDirectory, {recursive: true})
|
@docQuery = new DocQuery(@rootDirectory, {recursive: true})
|
||||||
@@ -28,27 +28,41 @@ class NotationalVelocityView extends SelectListView
|
|||||||
@populateList() if @documentsLoaded
|
@populateList() if @documentsLoaded
|
||||||
@docQuery.on "removed", (fileDetails) =>
|
@docQuery.on "removed", (fileDetails) =>
|
||||||
@populateList() if @documentsLoaded
|
@populateList() if @documentsLoaded
|
||||||
|
if !atom.config.get('nvatom.enableLunrPipeline')
|
||||||
|
@docQuery.searchIndex.pipeline.reset()
|
||||||
|
|
||||||
selectItem: (filterQuery) ->
|
isCursorProceeded: ->
|
||||||
if filterQuery.length == 0
|
|
||||||
@prevCursorPosition = 0
|
|
||||||
return null
|
|
||||||
|
|
||||||
titleItem = @docQuery.search(filterQuery)[0]
|
|
||||||
|
|
||||||
# If title item is not null, auto-fill the search panel.
|
|
||||||
# But we don't want to fill it when deleting.
|
|
||||||
editor = @filterEditorView.model
|
editor = @filterEditorView.model
|
||||||
currCursorPosition = editor.getCursorBufferPosition().column
|
currCursorPosition = editor.getCursorBufferPosition().column
|
||||||
if titleItem != undefined && @prevCursorPosition < currCursorPosition
|
isCursorProceeded = @prevCursorPosition < currCursorPosition
|
||||||
@prevFilterQuery = titleItem.title
|
|
||||||
editor.setText(filterQuery + titleItem.title.slice(filterQuery.length))
|
|
||||||
editor.selectLeft(titleItem.title.length - filterQuery.length)
|
|
||||||
@prevCursorPosition = currCursorPosition
|
@prevCursorPosition = currCursorPosition
|
||||||
|
return isCursorProceeded
|
||||||
|
|
||||||
return titleItem
|
selectItem: (filteredItems, filterQuery) ->
|
||||||
|
isCursorProceeded = @isCursorProceeded()
|
||||||
|
|
||||||
|
for item in filteredItems
|
||||||
|
if item.title.match(///^#{filterQuery}$///i) != null
|
||||||
|
# autoselect
|
||||||
|
n = filteredItems.indexOf(item) + 1
|
||||||
|
@selectItemView(@list.find("li:nth-child(#{n})"))
|
||||||
|
return
|
||||||
|
|
||||||
|
for item in filteredItems
|
||||||
|
if item.title.match(///^#{filterQuery}///i) != null && isCursorProceeded
|
||||||
|
# autocomplete
|
||||||
|
@skipPopulateList = true
|
||||||
|
editor = @filterEditorView.model
|
||||||
|
editor.setText(filterQuery + item.title.slice(filterQuery.length))
|
||||||
|
editor.selectLeft(item.title.length - filterQuery.length)
|
||||||
|
|
||||||
|
# autoselect
|
||||||
|
n = filteredItems.indexOf(item) + 1
|
||||||
|
@selectItemView(@list.find("li:nth-child(#{n})"))
|
||||||
|
|
||||||
filter: (filterQuery) ->
|
filter: (filterQuery) ->
|
||||||
|
if filterQuery == "" || filterQuery == undefined
|
||||||
|
return @docQuery.documents
|
||||||
return @docQuery.search(filterQuery)
|
return @docQuery.search(filterQuery)
|
||||||
|
|
||||||
getFilterKey: ->
|
getFilterKey: ->
|
||||||
@@ -75,8 +89,8 @@ class NotationalVelocityView extends SelectListView
|
|||||||
@div class: 'secondary-line', "#{content}"
|
@div class: 'secondary-line', "#{content}"
|
||||||
|
|
||||||
confirmSelection: ->
|
confirmSelection: ->
|
||||||
item = @getSelectedItem()
|
item = @getSelectedItem()
|
||||||
filePath = null
|
filePath = null
|
||||||
sanitizedQuery = @getFilterQuery().replace(/\s+$/, '')
|
sanitizedQuery = @getFilterQuery().replace(/\s+$/, '')
|
||||||
calculatedPath = path.join(@rootDirectory, sanitizedQuery + '.md')
|
calculatedPath = path.join(@rootDirectory, sanitizedQuery + '.md')
|
||||||
if item?
|
if item?
|
||||||
@@ -115,15 +129,15 @@ class NotationalVelocityView extends SelectListView
|
|||||||
hide: ->
|
hide: ->
|
||||||
@panel?.hide()
|
@panel?.hide()
|
||||||
|
|
||||||
|
getFilterQuery: ->
|
||||||
|
editor = @filterEditorView.model
|
||||||
|
fullText = editor.getText()
|
||||||
|
selectedText = editor.getSelectedText()
|
||||||
|
return fullText.substring(0, fullText.length - selectedText.length)
|
||||||
|
|
||||||
populateList: ->
|
populateList: ->
|
||||||
filterQuery = @getFilterQuery()
|
filterQuery = @getFilterQuery()
|
||||||
filteredItems = null
|
filteredItems = @filter(filterQuery)
|
||||||
if filterQuery == "" || filterQuery == undefined
|
|
||||||
filteredItems = @docQuery.documents
|
|
||||||
else
|
|
||||||
filteredItems = @filter(filterQuery)
|
|
||||||
|
|
||||||
selectedItem = @selectItem(filterQuery)
|
|
||||||
|
|
||||||
@list.empty()
|
@list.empty()
|
||||||
if filteredItems.length
|
if filteredItems.length
|
||||||
@@ -135,16 +149,12 @@ class NotationalVelocityView extends SelectListView
|
|||||||
itemView.data('select-list-item', item)
|
itemView.data('select-list-item', item)
|
||||||
@list.append(itemView)
|
@list.append(itemView)
|
||||||
|
|
||||||
if selectedItem
|
@selectItem(filteredItems, filterQuery)
|
||||||
n = filteredItems.indexOf(selectedItem) + 1
|
|
||||||
@selectItemView(@list.find("li:nth-child(#{n})"))
|
|
||||||
|
|
||||||
else
|
else
|
||||||
@setError(@getEmptyMessage(@docQuery.documents.length, filteredItems.length))
|
@setError(@getEmptyMessage(@docQuery.documents.length, filteredItems.length))
|
||||||
|
|
||||||
schedulePopulateList: ->
|
schedulePopulateList: ->
|
||||||
# We can skip it when we are just moving the position of the cursor.
|
if !@skipPopulateList
|
||||||
currFilterQuery = @getFilterQuery()
|
|
||||||
if @prevFilterQuery != currFilterQuery
|
|
||||||
super
|
super
|
||||||
@prevFilterQuery = currFilterQuery
|
@skipPopulateList = false
|
||||||
|
|||||||
@@ -8,12 +8,17 @@ module.exports =
|
|||||||
title: 'Note Directory'
|
title: 'Note Directory'
|
||||||
description: 'The directory to archive notes'
|
description: 'The directory to archive notes'
|
||||||
type: 'string'
|
type: 'string'
|
||||||
default: process.env.ATOM_HOME + '/packages/notational-velocity/notebook'
|
default: path.join(process.env.ATOM_HOME, 'nvatom-notes')
|
||||||
|
enableLunrPipeline:
|
||||||
|
title: 'Enable Lunr Pipeline'
|
||||||
|
description: 'Lunr pipeline preprocesses query to make search faster. However, it will skip searching some of stop words such as "an" or "be".'
|
||||||
|
type: 'boolean'
|
||||||
|
default: true
|
||||||
|
|
||||||
notationalVelocityView: null
|
notationalVelocityView: null
|
||||||
|
|
||||||
activate: (state) ->
|
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
|
# Events subscribed to in atom's system can be easily cleaned up with a
|
||||||
# CompositeDisposable
|
# CompositeDisposable
|
||||||
@@ -21,7 +26,7 @@ module.exports =
|
|||||||
|
|
||||||
# Register command that toggles this view
|
# Register command that toggles this view
|
||||||
@subscriptions.add atom.commands.add 'atom-workspace',
|
@subscriptions.add atom.commands.add 'atom-workspace',
|
||||||
'notational-velocity:toggle': => @createView(state).toggle()
|
'nvatom:toggle': => @createView(state).toggle()
|
||||||
|
|
||||||
handleBeforeUnload = @autosaveAll.bind(this)
|
handleBeforeUnload = @autosaveAll.bind(this)
|
||||||
window.addEventListener('beforeunload', handleBeforeUnload, true)
|
window.addEventListener('beforeunload', handleBeforeUnload, true)
|
||||||
@@ -60,3 +65,46 @@ module.exports =
|
|||||||
|
|
||||||
autosaveAll: ->
|
autosaveAll: ->
|
||||||
@autosave(paneItem) for paneItem in atom.workspace.getPaneItems()
|
@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.')
|
||||||
|
|||||||
@@ -3,11 +3,11 @@
|
|||||||
{
|
{
|
||||||
'label': 'Packages'
|
'label': 'Packages'
|
||||||
'submenu': [
|
'submenu': [
|
||||||
'label': 'Notational Velocity'
|
'label': 'nvAtom'
|
||||||
'submenu': [
|
'submenu': [
|
||||||
{
|
{
|
||||||
'label': 'Toggle'
|
'label': 'Toggle'
|
||||||
'command': 'notational-velocity:toggle'
|
'command': 'nvatom:toggle'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "notational-velocity",
|
"name": "nvatom",
|
||||||
"main": "./lib/notational-velocity",
|
"main": "./lib/notational-velocity",
|
||||||
"version": "0.2.0",
|
"version": "0.5.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"Seongjae Lee <seongjae@gmail.com>",
|
"Seongjae Lee <seongjae@gmail.com>",
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
],
|
],
|
||||||
"description": "Notational Velocity for Atom",
|
"description": "Notational Velocity for Atom",
|
||||||
"activationCommands": {
|
"activationCommands": {
|
||||||
"atom-workspace": "notational-velocity:toggle"
|
"atom-workspace": "nvatom:toggle"
|
||||||
},
|
},
|
||||||
"repository": "https://github.com/seongjaelee/notational-velocity",
|
"repository": "https://github.com/seongjaelee/notational-velocity",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
@@ -1,32 +1,49 @@
|
|||||||
# Use the command `window:run-package-specs` (cmd-alt-ctrl-p) to run specs.
|
path = require 'path'
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
describe "NotationalVelocity", ->
|
describe "nvAtom", ->
|
||||||
defaultDirectory = atom.config.get('notational-velocity.directory')
|
defaultDirectory = atom.config.get('nvatom.directory')
|
||||||
activationPromise = null
|
activationPromise = null
|
||||||
workspaceElement = null
|
workspaceElement = null
|
||||||
|
|
||||||
beforeEach ->
|
beforeEach ->
|
||||||
workspaceElement = atom.views.getView(atom.workspace)
|
workspaceElement = atom.views.getView(atom.workspace)
|
||||||
activationPromise = atom.packages.activatePackage('notational-velocity')
|
activationPromise = atom.packages.activatePackage('nvatom')
|
||||||
atom.config.set('notational-velocity.directory', 'testdata')
|
atom.config.set('nvatom.directory', 'testdata')
|
||||||
|
|
||||||
afterEach ->
|
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", ->
|
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
|
# This is an activation event, triggering it will cause the package to be activated.
|
||||||
# activated.
|
atom.commands.dispatch workspaceElement, 'nvatom:toggle'
|
||||||
atom.commands.dispatch workspaceElement, 'notational-velocity:toggle'
|
|
||||||
|
|
||||||
waitsForPromise ->
|
waitsForPromise ->
|
||||||
activationPromise
|
activationPromise
|
||||||
|
|
||||||
runs ->
|
runs ->
|
||||||
expect(workspaceElement.querySelector('.notational-velocity')).toExist()
|
expect(workspaceElement.querySelector('.nvatom')).toExist()
|
||||||
atom.commands.dispatch workspaceElement, 'notational-velocity:toggle'
|
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()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
// for a full listing of what's available.
|
// for a full listing of what's available.
|
||||||
@import "ui-variables";
|
@import "ui-variables";
|
||||||
|
|
||||||
.notational-velocity {
|
.nvatom {
|
||||||
li {
|
li {
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|||||||
Reference in New Issue
Block a user