Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Additional Bundling of Core Packages #314

Merged
merged 10 commits into from
Jan 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
"autocomplete-css": "file:packages/autocomplete-css",
"autocomplete-html": "file:packages/autocomplete-html",
"autocomplete-plus": "https://codeload.github.com/atom/autocomplete-plus/legacy.tar.gz/refs/tags/v2.42.4",
"autocomplete-snippets": "https://codeload.github.com/atom/autocomplete-snippets/legacy.tar.gz/refs/tags/v1.12.1",
"autocomplete-snippets": "file:packages/autocomplete-snippets",
"autoflow": "file:packages/autoflow",
"autosave": "https://codeload.github.com/atom/autosave/legacy.tar.gz/refs/tags/v0.24.6",
"babel-preset-atomic": "^5.0.0",
Expand All @@ -50,13 +50,13 @@
"clear-cut": "^2.0.2",
"coffee-script": "1.12.7",
"color": "3.1.3",
"command-palette": "https://codeload.github.com/atom/command-palette/legacy.tar.gz/refs/tags/v0.43.5",
"command-palette": "file:packages/command-palette",
"dalek": "file:packages/dalek",
"dedent": "^0.7.0",
"deprecation-cop": "file:packages/deprecation-cop",
"dev-live-reload": "file:packages/dev-live-reload",
"document-register-element": "^1.14.10",
"encoding-selector": "https://codeload.github.com/atom/encoding-selector/legacy.tar.gz/refs/tags/v0.23.9",
"encoding-selector": "file:packages/encoding-selector",
"etch": "0.14.1",
"event-kit": "^2.5.3",
"exception-reporting": "file:packages/exception-reporting",
Expand Down Expand Up @@ -134,7 +134,7 @@
"one-dark-ui": "file:packages/one-dark-ui",
"one-light-syntax": "file:packages/one-light-syntax",
"one-light-ui": "file:packages/one-light-ui",
"open-on-github": "https://codeload.github.com/atom/open-on-github/legacy.tar.gz/refs/tags/v1.3.2",
"open-on-github": "file:packages/open-on-github",
"package-generator": "file:packages/package-generator",
"pathwatcher": "^8.1.2",
"postcss": "8.2.10",
Expand All @@ -153,11 +153,11 @@
"solarized-dark-syntax": "file:packages/solarized-dark-syntax",
"solarized-light-syntax": "file:packages/solarized-light-syntax",
"spell-check": "https://codeload.github.com/atom/spell-check/legacy.tar.gz/refs/tags/v0.77.1",
"status-bar": "https://codeload.github.com/atom/status-bar/legacy.tar.gz/refs/tags/v1.8.17",
"status-bar": "file:packages/status-bar",
"styleguide": "https://codeload.github.com/atom/styleguide/legacy.tar.gz/refs/tags/v0.49.12",
"superstring": "^2.4.4",
"symbols-view": "https://codeload.github.com/atom/symbols-view/legacy.tar.gz/refs/tags/v0.118.4",
"tabs": "https://codeload.github.com/atom/tabs/legacy.tar.gz/refs/tags/v0.110.2",
"tabs": "file:packages/tabs",
"temp": "0.9.2",
"text-buffer": "^13.18.6",
"timecop": "https://codeload.github.com/atom/timecop/legacy.tar.gz/refs/tags/v0.36.2",
Expand Down Expand Up @@ -192,17 +192,17 @@
"autocomplete-css": "file:./packages/autocomplete-css",
"autocomplete-html": "file:./packages/autocomplete-html",
"autocomplete-plus": "2.42.4",
"autocomplete-snippets": "1.12.1",
"autocomplete-snippets": "file:./packages/autocomplete-snippets",
"autoflow": "file:./packages/autoflow",
"autosave": "0.24.6",
"background-tips": "file:./packages/background-tips",
"bookmarks": "file:./packages/bookmarks",
"bracket-matcher": "0.92.0",
"command-palette": "0.43.5",
"command-palette": "file:./packages/command-palette",
"dalek": "file:./packages/dalek",
"deprecation-cop": "file:./packages/deprecation-cop",
"dev-live-reload": "file:./packages/dev-live-reload",
"encoding-selector": "0.23.9",
"encoding-selector": "file:./packages/encoding-selector",
"exception-reporting": "file:./packages/exception-reporting",
"find-and-replace": "0.220.1",
"fuzzy-finder": "1.14.3",
Expand All @@ -217,15 +217,15 @@
"link": "file:./packages/link",
"markdown-preview": "0.160.2",
"notifications": "0.72.1",
"open-on-github": "1.3.2",
"package-generator": "1.3.0",
"open-on-github": "file:./packages/open-on-github",
"package-generator": "file:./packages/package-generator",
"settings-view": "file:./packages/settings-view",
"snippets": "1.6.1",
"spell-check": "0.77.1",
"status-bar": "1.8.17",
"status-bar": "file:./packages/status-bar",
"styleguide": "0.49.12",
"symbols-view": "0.118.4",
"tabs": "0.110.2",
"tabs": "file:./packages/tabs",
"timecop": "0.36.2",
"tree-view": "0.229.1",
"update-package-dependencies": "file:./packages/update-package-dependencies",
Expand Down
7 changes: 7 additions & 0 deletions packages/autocomplete-snippets/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# autocomplete+ snippet suggestions package

Adds snippets to autocomplete+ suggestions

## Features

* Adds user snippets and language snippets to the autocomplete+ suggestions list
26 changes: 26 additions & 0 deletions packages/autocomplete-snippets/lib/autocomplete-snippets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module.exports = {
provider: null,

activate() {},

deactivate() {
this.provider = null
},

provide() {
if (this.provider == null) {
const SnippetsProvider = require('./snippets-provider')
this.provider = new SnippetsProvider()
if (this.snippets != null) {
this.provider.setSnippetsSource(this.snippets)
}
}

return this.provider
},

consumeSnippets(snippets) {
this.snippets = snippets
return (this.provider != null ? this.provider.setSnippetsSource(this.snippets) : undefined)
}
}
61 changes: 61 additions & 0 deletions packages/autocomplete-snippets/lib/snippets-provider.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
module.exports =
class SnippetsProvider {
constructor() {
this.selector = '*'
this.inclusionPriority = 1
this.suggestionPriority = 2
this.filterSuggestions = true

this.showIcon = true
this.snippetsSource = {
snippetsForScopes(scopeDescriptor) {
return atom.config.get('snippets', {scope: scopeDescriptor})
}
}
}

setSnippetsSource(snippetsSource) {
if (typeof (snippetsSource != null ? snippetsSource.snippetsForScopes : undefined) === "function") {
return this.snippetsSource = snippetsSource
}
}

getSuggestions({scopeDescriptor, prefix}) {
if (!(prefix != null ? prefix.length : undefined)) { return }
const scopeSnippets = this.snippetsSource.snippetsForScopes(scopeDescriptor)
return this.findSuggestionsForPrefix(scopeSnippets, prefix)
}

findSuggestionsForPrefix(snippets, prefix) {
if (snippets == null) { return [] }

const suggestions = []
for (let snippetPrefix in snippets) {
const snippet = snippets[snippetPrefix]
if (!snippet || !snippetPrefix || !prefix || !firstCharsEqual(snippetPrefix, prefix)) { continue }
suggestions.push({
iconHTML: this.showIcon ? undefined : false,
type: 'snippet',
text: snippet.prefix,
replacementPrefix: prefix,
rightLabel: snippet.name,
rightLabelHTML: snippet.rightLabelHTML,
leftLabel: snippet.leftLabel,
leftLabelHTML: snippet.leftLabelHTML,
description: snippet.description,
descriptionMoreURL: snippet.descriptionMoreURL
})
}

suggestions.sort(ascendingPrefixComparator)
return suggestions
}

onDidInsertSuggestion({editor}) {
return atom.commands.dispatch(atom.views.getView(editor), 'snippets:expand')
}
}

const ascendingPrefixComparator = (a, b) => a.text.localeCompare(b.text)

const firstCharsEqual = (str1, str2) => str1[0].toLowerCase() === str2[0].toLowerCase()
16 changes: 16 additions & 0 deletions packages/autocomplete-snippets/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions packages/autocomplete-snippets/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"name": "autocomplete-snippets",
"main": "./lib/autocomplete-snippets",
"version": "1.12.1",
"description": "Adds snippets to autocomplete+ suggestions",
"repository": "https://github.com/pulsa-edit/pulsar",
"license": "MIT",
"engines": {
"atom": ">=0.174.0 <2.0.0"
},
"providedServices": {
"autocomplete.provider": {
"versions": {
"2.0.0": "provide"
}
}
},
"consumedServices": {
"snippets": {
"versions": {
"0.1.0": "consumeSnippets"
}
}
}
}
106 changes: 106 additions & 0 deletions packages/autocomplete-snippets/spec/autocomplete-snippets-spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
describe('AutocompleteSnippets', () => {
let [completionDelay, editor, editorView] = []

beforeEach(() => {
atom.config.set('autocomplete-plus.enableAutoActivation', true)
completionDelay = 100
atom.config.set('autocomplete-plus.autoActivationDelay', completionDelay)
completionDelay += 100 // Rendering delay

const workspaceElement = atom.views.getView(atom.workspace)
jasmine.attachToDOM(workspaceElement)

let autocompleteSnippetsMainModule = null
let snippetsMainModule = null
const autocompleteManager = null

waitsForPromise(() =>
Promise.all([
atom.workspace.open('sample.js').then((e) => {
editor = e
editorView = atom.views.getView(editor)
}),

atom.packages.activatePackage('language-javascript'),
atom.packages.activatePackage('autocomplete-snippets').then(({mainModule}) => autocompleteSnippetsMainModule = mainModule),

atom.packages.activatePackage('autocomplete-plus'),
atom.packages.activatePackage('snippets').then(({mainModule}) => {
snippetsMainModule = mainModule
snippetsMainModule.loaded = false
})
])
)

waitsFor('snippets provider to be registered', 1000, () => autocompleteSnippetsMainModule.provider != null)

waitsFor('all snippets to load', 3000, () => snippetsMainModule.loaded)
})

describe('when autocomplete-plus is enabled', () => {
it('shows autocompletions when there are snippets available', () => {
runs(() => {
expect(editorView.querySelector('.autocomplete-plus')).not.toExist()

editor.moveToBottom()
editor.insertText('D')
editor.insertText('o')

advanceClock(completionDelay)
})

waitsFor('autocomplete view to appear', 1000, () => editorView.querySelector('.autocomplete-plus span.word'))

runs(() => {
expect(editorView.querySelector('.autocomplete-plus span.word')).toHaveText('do')
expect(editorView.querySelector('.autocomplete-plus span.right-label')).toHaveText('do')
})
})

it("expands the snippet on confirm", () => {
runs(() => {
expect(editorView.querySelector('.autocomplete-plus')).not.toExist()

editor.moveToBottom()
editor.insertText('D')
editor.insertText('o')

advanceClock(completionDelay)
})

waitsFor('autocomplete view to appear', 1000, () => editorView.querySelector('.autocomplete-plus span.word'))

runs(() => {
atom.commands.dispatch(editorView, 'autocomplete-plus:confirm')
expect(editor.getText()).toContain('} while (true)')
})
})
})

describe('when showing suggestions', () =>
it('sorts them in alphabetical order', () => {
const unorderedPrefixes = [
"",
"dop",
"do",
"dad",
"d"
]

const snippets = {}
for (let x of Array.from(unorderedPrefixes)) {
snippets[x] = {prefix: x, name: "", description: "", descriptionMoreURL: ""}
}

const SnippetsProvider = require('../lib/snippets-provider')
const sp = new SnippetsProvider()
sp.setSnippetsSource({snippetsForScopes(scope) {
return snippets
}})
const suggestions = sp.getSuggestions({scopeDescriptor: "", prefix: "d"})

const suggestionsText = suggestions.map(x => x.text)
expect(suggestionsText).toEqual(["d", "dad", "do", "dop"])
})
)
})
1 change: 1 addition & 0 deletions packages/autocomplete-snippets/spec/fixtures/sample.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
console.log("ohai");
5 changes: 5 additions & 0 deletions packages/command-palette/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Command Palette package

Find and run available commands using <kbd>cmd-shift-p</kbd> (macOS) or <kbd>ctrl-shift-p</kbd> (Linux/Windows) in Pulsar.

![](https://f.cloud.github.com/assets/671378/2241354/2908b768-9ccd-11e3-9da1-a11753c0495d.png)
8 changes: 8 additions & 0 deletions packages/command-palette/keymaps/command-palette.cson
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
'.platform-darwin, .platform-darwin .command-palette atom-text-editor':
'cmd-shift-p': 'command-palette:toggle'

'.platform-win32, .platform-win32 .command-palette atom-text-editor':
'ctrl-shift-p': 'command-palette:toggle'

'.platform-linux, .platform-linux .command-palette atom-text-editor':
'ctrl-shift-p': 'command-palette:toggle'
34 changes: 34 additions & 0 deletions packages/command-palette/lib/command-palette-package.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/** @babel */

import {CompositeDisposable} from 'atom'
import CommandPaletteView from './command-palette-view'

class CommandPalettePackage {
activate () {
this.commandPaletteView = new CommandPaletteView()
this.disposables = new CompositeDisposable()
this.disposables.add(atom.commands.add('atom-workspace', {
'command-palette:toggle': () => {
this.commandPaletteView.toggle()
},
'command-palette:show-hidden-commands': () => {
this.commandPaletteView.show(true)
}
}))
this.disposables.add(atom.config.observe('command-palette.useAlternateScoring', (newValue) => {
this.commandPaletteView.update({useAlternateScoring: newValue})
}))
this.disposables.add(atom.config.observe('command-palette.preserveLastSearch', (newValue) => {
this.commandPaletteView.update({preserveLastSearch: newValue})
}))
return this.commandPaletteView.show()
}

async deactivate () {
this.disposables.dispose()
await this.commandPaletteView.destroy()
}
}

const pack = new CommandPalettePackage()
export default pack
Loading