init
commit
97fd201154
|
@ -0,0 +1,19 @@
|
||||||
|
.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear on external disk
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
package-lock.json
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
.vscode-test
|
||||||
|
out.js
|
||||||
|
demo.js
|
||||||
|
*.vsix
|
||||||
|
*.css
|
|
@ -0,0 +1,20 @@
|
||||||
|
language: node_js
|
||||||
|
|
||||||
|
os:
|
||||||
|
- osx
|
||||||
|
|
||||||
|
node_js:
|
||||||
|
- node
|
||||||
|
|
||||||
|
install:
|
||||||
|
- npm install
|
||||||
|
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- "node_modules"
|
||||||
|
|
||||||
|
script:
|
||||||
|
- npm test
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
|
@ -0,0 +1,28 @@
|
||||||
|
// A launch configuration that launches the extension inside a new window
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "Run Extension",
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Extension Tests",
|
||||||
|
"type": "extensionHost",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "${execPath}",
|
||||||
|
"args": [
|
||||||
|
"--extensionDevelopmentPath=${workspaceFolder}",
|
||||||
|
"--extensionTestsPath=${workspaceFolder}/test/suite/index"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
.vscode/**
|
||||||
|
.vscode-test/**
|
||||||
|
node_modules/**
|
||||||
|
test/**
|
||||||
|
package-lock.json
|
||||||
|
.travis.yml
|
||||||
|
.gitignore
|
||||||
|
index.js
|
||||||
|
test.js
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
# 更新日志(Changed Logs)
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2018
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
|
@ -0,0 +1,9 @@
|
||||||
|
# auto-path
|
||||||
|
> 自动提示文件路径, 方便引入项目为的文件.
|
||||||
|
|
||||||
|
[![Version](https://vsmarketplacebadge.apphb.com/version-short/yutent.auto-path.svg)](https://marketplace.visualstudio.com/items?itemName=yutent.auto-path)
|
||||||
|
[![Rating](https://vsmarketplacebadge.apphb.com/rating-short/yutent.auto-path.svg)](https://marketplace.visualstudio.com/items?itemName=yutent.auto-path)
|
||||||
|
[![Installs](https://vsmarketplacebadge.apphb.com/installs/yutent.auto-path.svg)](https://marketplace.visualstudio.com/items?itemName=yutent.auto-path)
|
||||||
|
[![Build Status](https://travis-ci.org/yutent/auto-path.svg?branch=master)](https://travis-ci.org/yutent/auto-path)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author yutent<yutent.io@gmail.com>
|
||||||
|
* @date 2018/11/01 09:37:55
|
||||||
|
*/
|
||||||
|
|
||||||
|
const vsc = require('vscode')
|
||||||
|
const { resolve, dirname, join } = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
const FILE = vsc.CompletionItemKind.File
|
||||||
|
const FOLDER = vsc.CompletionItemKind.Folder
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [isdir 判断目标是否为目录]
|
||||||
|
*/
|
||||||
|
function isdir(path) {
|
||||||
|
try {
|
||||||
|
return fs.statSync(path).isDirectory()
|
||||||
|
} catch (err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isfile(path) {
|
||||||
|
try {
|
||||||
|
return fs.statSync(path).isFile()
|
||||||
|
} catch (err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列出目录
|
||||||
|
*/
|
||||||
|
function ls(dir) {
|
||||||
|
try {
|
||||||
|
var list = fs.readdirSync(dir)
|
||||||
|
return list.map(it => resolve(dir, it))
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let options = {
|
||||||
|
isMiniApp: false, // 是否小程序
|
||||||
|
configFile: '' // 配置文件路径
|
||||||
|
}
|
||||||
|
|
||||||
|
class AutoPath {
|
||||||
|
provideCompletionItems(doc, pos) {
|
||||||
|
var currDir = dirname(doc.fileName)
|
||||||
|
var inputTxt = doc.getText(doc.lineAt(pos).range)
|
||||||
|
var list = []
|
||||||
|
var currDirFixed = currDir
|
||||||
|
|
||||||
|
inputTxt = inputTxt.replace(/^['"]/, '').replace(/['"]$/, '')
|
||||||
|
currDirFixed = join(currDir, inputTxt)
|
||||||
|
|
||||||
|
if (inputTxt.startsWith('./')) {
|
||||||
|
list.push(...ls(currDirFixed))
|
||||||
|
} else {
|
||||||
|
currDirFixed = join(options.workspace, inputTxt)
|
||||||
|
list.push(...ls(currDirFixed))
|
||||||
|
}
|
||||||
|
|
||||||
|
list = list.map(k => {
|
||||||
|
let t = isdir(k) ? FOLDER : FILE
|
||||||
|
k = k.slice(currDirFixed.length)
|
||||||
|
return new vsc.CompletionItem(k, t)
|
||||||
|
})
|
||||||
|
list.unshift(new vsc.CompletionItem('', FILE))
|
||||||
|
|
||||||
|
return Promise.resolve(list)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function __init__() {
|
||||||
|
let folders = vsc.workspace.workspaceFolders
|
||||||
|
|
||||||
|
if (folders && folders.length) {
|
||||||
|
options.workspace = folders[0].uri.path
|
||||||
|
} else {
|
||||||
|
options.workspace = '/opt/www/web/small-world/'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.workspace) {
|
||||||
|
try {
|
||||||
|
if (isfile(join(options.workspace, 'app.json'))) {
|
||||||
|
let conf = require(join(options.workspace, 'app.json'))
|
||||||
|
options.list = conf.pages || []
|
||||||
|
console.log('可能是小程序', conf)
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(options, folders)
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.activate = function(ctx) {
|
||||||
|
__init__()
|
||||||
|
|
||||||
|
vsc.languages.getLanguages().then(function(data) {
|
||||||
|
// return console.log(data)
|
||||||
|
})
|
||||||
|
let ap = new AutoPath()
|
||||||
|
let auto = vsc.languages.registerCompletionItemProvider('*', ap, '"', "'", '/')
|
||||||
|
|
||||||
|
ctx.subscriptions.push(auto)
|
||||||
|
}
|
||||||
|
|
||||||
|
function deactivate() {}
|
||||||
|
exports.deactivate = deactivate
|
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
"name": "auth-path",
|
||||||
|
"displayName": "auth-path",
|
||||||
|
"description": "🔥 自动提示文件路径, 方便引入项目为的文件",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"publisher": "yutent",
|
||||||
|
"author": "Yutent [@yutent]",
|
||||||
|
"icon": "logo.png",
|
||||||
|
"engines": {
|
||||||
|
"vscode": "^1.49.0"
|
||||||
|
},
|
||||||
|
"categories": ["Other"],
|
||||||
|
"activationEvents": ["*"],
|
||||||
|
"main": "index.js",
|
||||||
|
"contributes": {},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/yutent/auth-path.git"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"autofile",
|
||||||
|
"autofilename",
|
||||||
|
"autopath",
|
||||||
|
"auto-file",
|
||||||
|
"auto-filename",
|
||||||
|
"auto-path",
|
||||||
|
"yutent"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"start": "esbuild index.js --bundle --outfile=out.js --external:vscode --format=cjs --platform=node",
|
||||||
|
"vscode:prepublish": "npm start -- --minify"
|
||||||
|
},
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"iofs": "^1.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"esbuild": "^0.12.14"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue