initial
This commit is contained in:
commit
baa0056244
352 changed files with 47928 additions and 0 deletions
28
docs/api/index.md
Normal file
28
docs/api/index.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# API Reference
|
||||
|
||||
The .NET API for PowerShell Editor Services is organized in a way that allows
|
||||
you to easily get started using all of its services but also giving you the
|
||||
option to only use the services you care about in your application.
|
||||
|
||||
The best starting point is the @Microsoft.PowerShell.EditorServices.EditorSession
|
||||
class which can start up all of the following services for use in a single editing
|
||||
session.
|
||||
|
||||
Use the @Microsoft.PowerShell.EditorServices.LanguageService to provide language
|
||||
intelligence behaviors like finding the references or definition of a cmdlet or variable.
|
||||
|
||||
Use the @Microsoft.PowerShell.EditorServices.AnalysisService to provide rule-based
|
||||
analysis of scripts using [PowerShell Script Analyzer](https://github.com/PowerShell/PSScriptAnalyzer).
|
||||
|
||||
Use the @Microsoft.PowerShell.EditorServices.DebugService to easily interact with
|
||||
the PowerShell debugger.
|
||||
|
||||
Use the @Microsoft.PowerShell.EditorServices.Console.ConsoleService to provide interactive
|
||||
console support in the user's editor.
|
||||
|
||||
Use the @Microsoft.PowerShell.EditorServices.Services.ExtensionService to allow
|
||||
the user to extend the host editor with new capabilities using PowerShell code.
|
||||
|
||||
The core of all the services is the @Microsoft.PowerShell.EditorServices.PowerShellContext
|
||||
class. This class manages a session's runspace and handles script and command
|
||||
execution no matter what state the runspace is in.
|
||||
69
docs/docfx.json
Normal file
69
docs/docfx.json
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
"metadata": [
|
||||
{
|
||||
"src": [
|
||||
{
|
||||
"files": [ "*.csproj" ],
|
||||
"cwd": "../src/PowerShellEditorServices",
|
||||
"exclude": [ "**/obj/**", "**/bin/**" ]
|
||||
}
|
||||
],
|
||||
"dest": "metadata/api"
|
||||
}
|
||||
],
|
||||
"build": {
|
||||
"content": [
|
||||
{
|
||||
"cwd": "metadata/api",
|
||||
"files": [
|
||||
"**/**.yml"
|
||||
],
|
||||
"dest": "api"
|
||||
},
|
||||
{
|
||||
"cwd": "../",
|
||||
"files": [
|
||||
"CONTRIBUTING.md",
|
||||
"CHANGELOG.md"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cwd": ".",
|
||||
"files": [
|
||||
"toc.yml",
|
||||
"index.md",
|
||||
"api/index.md",
|
||||
"guide/**.md"
|
||||
],
|
||||
"exclude": [
|
||||
"metadata/**",
|
||||
"_site/**"
|
||||
]
|
||||
}
|
||||
],
|
||||
"resource": [
|
||||
{
|
||||
"files": [
|
||||
"images/**"
|
||||
],
|
||||
"exclude": [
|
||||
"obj/**",
|
||||
"_site/**"
|
||||
]
|
||||
}
|
||||
],
|
||||
"overwrite": [
|
||||
{
|
||||
"files": [
|
||||
"apidoc/**.md"
|
||||
],
|
||||
"exclude": [
|
||||
"obj/**",
|
||||
"_site/**"
|
||||
]
|
||||
}
|
||||
],
|
||||
"dest": "_site",
|
||||
"template": [ "default", "template" ]
|
||||
}
|
||||
}
|
||||
168
docs/guide/extensions.md
Normal file
168
docs/guide/extensions.md
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
# Extending the Host Editor
|
||||
|
||||
PowerShell Editor Services exposes a common extensibility model which allows
|
||||
you to write extension code in PowerShell that works across any editor that
|
||||
uses PowerShell Editor Services.
|
||||
|
||||
## API Overview
|
||||
|
||||
### Introducing `$psEditor`
|
||||
|
||||
The entry point for the PowerShell Editor Services extensibility model is the `$psEditor`
|
||||
object of the type @Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorObject. For
|
||||
those familiar with the PowerShell ISE's `$psISE` object, the `$psEditor` object is very
|
||||
similar. The primary difference is that this model has been generalized to work against
|
||||
any editor which leverages PowerShell Editor Services for its PowerShell editing experience.
|
||||
|
||||
> NOTE: For now the `$psEditor` object is limited as it has just been
|
||||
> introduced. If you have ideas for other useful APIs it could expose
|
||||
> please file an issue on our GitHub page.
|
||||
|
||||
This object gives access to all of the high-level services in the current
|
||||
editing session. For example, the @Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorObject.Workspace
|
||||
property gives access to the editor's workspace, allowing you to create or open files
|
||||
in the editor.
|
||||
|
||||
### Usage Examples
|
||||
|
||||
#### Opening a file in the editor
|
||||
|
||||
```powershell
|
||||
# Open the current user's profile for this editor
|
||||
$psEditor.Workspace.OpenFile($profile)
|
||||
```
|
||||
|
||||
#### Manipulating the user's active file buffer
|
||||
|
||||
```powershell
|
||||
# Insert new text replacing the user's current selection
|
||||
$context = $psEditor.GetEditorContext()
|
||||
$context.CurrentFile.InsertText("# All your script are belong to us", $context.SelectedRange)
|
||||
```
|
||||
|
||||
#### Setting the selection based on the cursor position
|
||||
|
||||
```powershell
|
||||
# Set the selection from their cursor position to the end of the same line
|
||||
$context = $psEditor.GetEditorContext()
|
||||
$context.SetSelection($context.CursorPosition, $context.CursorPosition.GetLineEnd())
|
||||
```
|
||||
|
||||
## Registering Editor Commands
|
||||
|
||||
The `$psEditor` object gives you the ability to write a script that can automate the
|
||||
host editor when run inside of it. However, you may not want to give a user a plain
|
||||
script that performs some operation. What if you'd prefer to add a new command to the
|
||||
editor which can execute your code when the user invokes it? The `Register-EditorCommand`
|
||||
cmdlet allows you to register either a function, cmdlet, or ScriptBlock as a
|
||||
command in the host editor.
|
||||
|
||||
### Registering a cmdlet or function command
|
||||
|
||||
```powershell
|
||||
function Invoke-MyCommand {
|
||||
Write-Output "My command's function was invoked!"
|
||||
}
|
||||
|
||||
Register-EditorCommand `
|
||||
-Name "MyModule.MyCommandWithFunction" `
|
||||
-DisplayName "My command with function" `
|
||||
-Function Invoke-MyCommand
|
||||
```
|
||||
|
||||
### Registering a script block command
|
||||
|
||||
```powershell
|
||||
Register-EditorCommand `
|
||||
-Name "MyModule.MyCommandWithScriptBlock" `
|
||||
-DisplayName "My command with script block" `
|
||||
-ScriptBlock { Write-Output "My command's script block was invoked!" }
|
||||
```
|
||||
|
||||
### The @Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorContext parameter
|
||||
|
||||
Your function, cmdlet, or ScriptBlock can optionally accept a single parameter
|
||||
of type @Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorContext which provides
|
||||
information about the state of the host editor at the time your command was
|
||||
invoked. With this object you can easily perform operations like manipulatin the
|
||||
state of the user's active editor buffer or changing the current selection.
|
||||
|
||||
The usual convention is that a `$context` parameter is added to your editor
|
||||
command's function. For now it is recommended that you fully specify the
|
||||
type of the @Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorContext object
|
||||
so that you get full IntelliSense on your context parameter.
|
||||
|
||||
Here is an example of using the `$context` parameter:
|
||||
|
||||
```powershell
|
||||
Register-EditorCommand `
|
||||
-Name "MyModule.MyEditorCommandWithContext" `
|
||||
-DisplayName "My command with context usage" `
|
||||
-ScriptBlock {
|
||||
param([Microsoft.PowerShell.EditorServices.Services.PowerShellContext.EditorContext]$context)
|
||||
Write-Output "The user's cursor is on line $($context.CursorPosition.Line)!"
|
||||
}
|
||||
```
|
||||
|
||||
### Suppressing command output
|
||||
|
||||
If you would like for your editor command to run without its output being
|
||||
written to the user's console, you can use the `-SuppressOutput` switch
|
||||
parameter of the `Register-EditorCommand` cmdlet. We recommend that you
|
||||
use this parameter if your command does not need to write output to the
|
||||
user's console.
|
||||
|
||||
Regardless of whether the `-SuppressOutput` parameter is used, any errors
|
||||
that occur while running your editor command will be written to the user's
|
||||
console.
|
||||
|
||||
## Using Editor Commands
|
||||
|
||||
If you've registered an editor command, either through your own code or
|
||||
a module that you've installed, you can launch it using your editor's **Show
|
||||
additional commands from PowerShell modules** command. Running this command
|
||||
will cause a list of commands to be displayed.
|
||||
|
||||
In Visual Studio Code, press `Ctrl+Shift+P` to open the command palette. Type
|
||||
the characters `addi` until you see the following item and then press `Enter`:
|
||||
|
||||

|
||||
|
||||
The list that appears next will show all of the editor commands that have
|
||||
been registered with PowerShell code. Selecting one of them will cause its
|
||||
function or ScriptBlock to be executed.
|
||||
|
||||

|
||||
|
||||
Other editors should follow a similar pattern, exposing this command list through
|
||||
a "Show additional commands" item in the command palette.
|
||||
|
||||
> NOTE: In the future we hope to be able to register editor commands at the top level
|
||||
> so that these commands are easier to find and so that they also can be bound to
|
||||
> hotkeys for quick access.
|
||||
|
||||
## Shipping an Extension Module
|
||||
|
||||
You can easily ship a module containing editor commands which get registered
|
||||
if the module is loaded into an editor session. Assuming that you've exported
|
||||
a function or cmdlet named `Invoke-MyEditorCommand` in your module's psd1
|
||||
file, you can add this code at the very end of your module's psm1 file:
|
||||
|
||||
```powershell
|
||||
if ($psEditor) {
|
||||
Register-EditorCommand `
|
||||
-Name "MyModule.MyEditorCommand" `
|
||||
-DisplayName "My editor command" `
|
||||
-Function Invoke-MyEditorCommand `
|
||||
-SuppressOutput
|
||||
}
|
||||
```
|
||||
|
||||
The user will now be able to import your module in their host editor's profile and
|
||||
your editor command will be immediately available after the PowerShell extension
|
||||
in that editor starts up.
|
||||
|
||||
> NOTE: In the future we plan to provide an easy way for the user to opt-in
|
||||
> to the automatic loading of any editor command modules that they've installed
|
||||
> from the PowerShell Gallery. If this interests you, please let us know on
|
||||
> [this GitHub issue](https://github.com/PowerShell/PowerShellEditorServices/issues/215).
|
||||
166
docs/guide/getting_started.md
Normal file
166
docs/guide/getting_started.md
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
# Getting Started
|
||||
The PowerShell Editor Services project provides a Language Server Protocol (LSP)
|
||||
HTTP server that runs outside the editor. The server supplies rich editor
|
||||
functionality like code completion, syntax highlighting, and code annotation.
|
||||
This document will guide you through getting a minimal setup working with
|
||||
several editors.
|
||||
|
||||
## Editors
|
||||
1. [Neovim](#neovim)
|
||||
|
||||
## Neovim
|
||||
|
||||
### Install the Server
|
||||
Download and extract the PowerShell Editor Services server from the
|
||||
[releases page](https://github.com/PowerShell/PowerShellEditorServices/releases)
|
||||
into a directory of your choice. Remember the path that you extract the
|
||||
project into.
|
||||
```powershell
|
||||
$DownloadUrl = 'https://github.com/PowerShell/PowerShellEditorServices/releases/latest/download/PowerShellEditorServices.zip';
|
||||
$ZipPath = "$HOME/Desktop/PowerShellEditorServices.zip";
|
||||
$InstallPath = "$HOME/Desktop/PowerShellEditorServices";
|
||||
Invoke-WebRequest -Method 'GET' -Uri $DownloadUrl -OutFile $ZipPath;
|
||||
Expand-Archive -Path $ZipPath -DestinationPath $InstallPath;
|
||||
```
|
||||
|
||||
### Install Neovim's Quickstart LSP Configurations
|
||||
Neovim has a repository of quickstart LSP configurations for a number of
|
||||
languages, including PowerShell. Install the quickstart LSP configuration into
|
||||
one of the package directories inside `$XDG_CONFIG_HOME`. The path
|
||||
`$XDG_CONFIG_HOME` will vary depending on which operating system you are on:
|
||||
|
||||
| OS | Path |
|
||||
| ---------- | -------------------------- |
|
||||
| Windows | `$HOME/AppData/local/nvim` |
|
||||
| *nix/macOS | `$HOME/.config/nvim` |
|
||||
|
||||
The easiest way is to install the quickstart configuration is to clone the
|
||||
repository using git:
|
||||
```powershell
|
||||
git clone https://github.com/neovim/nvim-lspconfig.git "$HOME/AppData/local/nvim/pack/complete/start/nvim-lspconfig"
|
||||
```
|
||||
|
||||
Alternatively, you can extract the zip file into the same place:
|
||||
```powershell
|
||||
$DownloadUrl = 'https://github.com/neovim/nvim-lspconfig/archive/refs/heads/master.zip';
|
||||
$ZipPath = "$HOME/AppData/local/nvim/nvim-lspconfig.zip";
|
||||
$InstallPath = "$HOME/AppData/local/nvim/pack/complete/start/nvim-lspconfig";
|
||||
Invoke-WebRequest -Method 'GET' Uri $DownloadUrl -OutFile $ZipPath;
|
||||
Expand-Archive -Path $ZipPath -DestinationPath $InstallPath;
|
||||
```
|
||||
|
||||
> NOTE: If the corresponding neovim configuration and package directories have
|
||||
> not been created yet, create them before installing the quickstart LSP
|
||||
> configuration repository.
|
||||
|
||||
### Configure the Server
|
||||
|
||||
#### Setup Keybindings and Path Information
|
||||
Once the basic language configurations have been installed, add this to your
|
||||
`init.lua` located in `$XDG_CONFIG_HOME`:
|
||||
```lua
|
||||
local on_attach = function(client, bufnr)
|
||||
-- Enable completion triggered by <c-x><c-o>
|
||||
vim.api.nvim_set_option_value("omnifunc", "v:lua.vim.lsp.omnifunc", { buf = bufnr })
|
||||
|
||||
local bufopts = { noremap = true, silent = true, buffer = bufnr }
|
||||
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
|
||||
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
|
||||
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
|
||||
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
|
||||
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
|
||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
|
||||
vim.keymap.set('n', '<Leader>ca', vim.lsp.buf.code_action, bufopts)
|
||||
vim.keymap.set('n', '<Leader>f', function() vim.lsp.buf.format { async = true } end, bufopts)
|
||||
vim.keymap.set('n', '<Leader>rn', vim.lsp.buf.rename, bufopts)
|
||||
vim.keymap.set('n', '<Leader>td', vim.lsp.buf.type_definition, bufopts)
|
||||
end
|
||||
|
||||
local home_directory = os.getenv('HOME')
|
||||
if home_directory == nil then
|
||||
home_directory = os.getenv('USERPROFILE')
|
||||
end
|
||||
|
||||
-- The bundle_path is where PowerShell Editor Services was installed
|
||||
local bundle_path = home_directory .. '/Desktop/PowerShellEditorServices'
|
||||
|
||||
require('lspconfig')['powershell_es'].setup {
|
||||
bundle_path = bundle_path,
|
||||
on_attach = on_attach
|
||||
}
|
||||
```
|
||||
|
||||
> NOTE: Be sure to set the bundle_path variable to the correct location,
|
||||
> otherwise the server will not know the path to start the server.
|
||||
|
||||
If you use an `init.vim` file, you may put the keybinding and path configuration
|
||||
in your `init.vim` with the `lua` heredoc syntax instead.
|
||||
```vim
|
||||
lua << EOF
|
||||
-- lua keybindings and path configuration here
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Theme Troubleshooting
|
||||
If you find that your colorscheme appears correctly for a second and then
|
||||
changes to not having full highlighting, you'll need to disable semantic
|
||||
highlighting.
|
||||
Add this line to the `on_attach` function.
|
||||
```lua
|
||||
client.server_capabilities.semanticTokensProvider = nil
|
||||
```
|
||||
|
||||
#### Configure Additional Settings
|
||||
To further configure the server, you can supply settings to the setup table.
|
||||
For example, you can set the code formatting preset to one true brace style
|
||||
(OTBS).
|
||||
```lua
|
||||
require('lspconfig')['powershell_es'].setup {
|
||||
bundle_path = bundle_path,
|
||||
on_attach = on_attach,
|
||||
settings = { powershell = { codeFormatting = { Preset = 'OTBS' } } }
|
||||
}
|
||||
```
|
||||
For a more complete list of options have a look at this schema:
|
||||
[nvim-lsp-installer powershell_es reference](https://github.com/williamboman/nvim-lsp-installer/blob/main/lua/nvim-lsp-installer/_generated/schemas/powershell_es.lua)
|
||||
|
||||
You can also set the bundled PSScriptAnalyzer's custom rule path like so:
|
||||
```lua
|
||||
local custom_settings_path = home_directory .. '/PSScriptAnalyzerSettings.psd1'
|
||||
require('lspconfig')['powershell_es'].setup {
|
||||
bundle_path = bundle_path,
|
||||
on_attach = on_attach,
|
||||
settings = { powershell = { scriptAnalysis = { settingsPath = custom_settings_path } } }
|
||||
}
|
||||
```
|
||||
|
||||
#### Autocomplete Brackets Troubleshooting
|
||||
If you're using `blink.cmp` and you're getting brackets when autocompleting
|
||||
cmdlet names, you'll need to add `{ "ps1", "psm1" }` to the blocked filetypes
|
||||
for both `kind_resolution` and `semantic_token_resolution` in the plugin's
|
||||
config file.
|
||||
|
||||
[Blink.cmp completion reference](https://cmp.saghen.dev/configuration/reference#completion-accept)
|
||||
|
||||
### Indentation
|
||||
|
||||
Vim/Neovim does not contain default `:h indentexpr` for filetype `ps1`.
|
||||
So you might notice indentation on newline is not behaving as expected for powershell files.
|
||||
Luckily powershell has similar syntax like C, so we can use `:h cindent` to fix the indentation problem.
|
||||
You can use the following snippet to either callback of an autocmd or ftplugin.
|
||||
|
||||
```lua
|
||||
--- ./nvim/lua/ftplugin/ps1.lua
|
||||
|
||||
-- disable indent from powershell treesitter parser
|
||||
-- because the parse isn't mature currently
|
||||
-- you can ignore this step if don't use treesitter
|
||||
if pcall(require, 'nvim-treesitter') then
|
||||
vim.schedule(function() vim.cmd([[TSBufDisable indent]]) end)
|
||||
end
|
||||
|
||||
vim.opt_local.cindent = true
|
||||
vim.opt_local.cinoptions:append { 'J1', '(1s', '+0' } -- see :h cino-J, cino-(, cino-+
|
||||
|
||||
vim.opt_local.iskeyword:remove { '-' } -- OPTIONALLY consider Verb-Noun as a whole word
|
||||
```
|
||||
37
docs/guide/introduction.md
Normal file
37
docs/guide/introduction.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# Introduction
|
||||
|
||||
> NOTE: The user guide is currently under development and may be missing
|
||||
> important information. If you feel that a particular area is missing or
|
||||
> poorly explained, please feel free to file an issue at our [GitHub site](https://github.com/PowerShell/PowerShellEditorServices/issues)
|
||||
|
||||
PowerShell Editor Services is a tool that provides useful services to code
|
||||
editors that need a great PowerShell editing experience.
|
||||
|
||||
## The .NET API
|
||||
|
||||
The .NET API provides the complete set of services which can be used in
|
||||
code editors or any other type of application. The easiest way to get
|
||||
started with it is to add the [Microsoft.PowerShell.EditorServices](https://www.nuget.org/packages/Microsoft.PowerShell.EditorServices/)
|
||||
NuGet package to your C# project.
|
||||
|
||||
If you're a developer that would like to use PowerShell Editor Services in
|
||||
a .NET application, read the page titled [Using the .NET API](using_the_dotnet_api.md)
|
||||
to learn more.
|
||||
|
||||
## The Host Process
|
||||
|
||||
The host process provides a JSON-based API wrapper around the .NET APIs so
|
||||
that editors written in non-.NET languages can make use of its capabilities.
|
||||
In the future the host process will allow the use of network-based channels
|
||||
to enable all of the APIs to be accessed remotely.
|
||||
|
||||
If you're a developer that would like to integrate PowerShell Editor Services
|
||||
into your favorite editor, read the page titled [Using the Host Process](using_the_host_process.md)
|
||||
to learn more.
|
||||
|
||||
## Writing Extensions in PowerShell
|
||||
|
||||
If you're using an editor that leverages PowerShell Editor Services to provide
|
||||
PowerShell editing capabilities, you may be able to extend its behavior using
|
||||
our PowerShell-based editor extension API. Read the page titled [Extending the
|
||||
Host Editor](extensions.md) to learn more.
|
||||
4
docs/guide/toc.md
Normal file
4
docs/guide/toc.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# [Introduction](introduction.md)
|
||||
# [Using the .NET API](using_the_dotnet_api.md)
|
||||
# [Using the Host Process](using_the_host_process.md)
|
||||
# [Extending the Host Editor](extensions.md)
|
||||
1124
docs/guide/using_the_host_process.md
Normal file
1124
docs/guide/using_the_host_process.md
Normal file
File diff suppressed because it is too large
Load diff
BIN
docs/images/PowerShell_logo.png
Normal file
BIN
docs/images/PowerShell_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
BIN
docs/images/vsc_command_palette.png
Normal file
BIN
docs/images/vsc_command_palette.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
BIN
docs/images/vsc_editor_command_list.png
Normal file
BIN
docs/images/vsc_editor_command_list.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
27
docs/index.md
Normal file
27
docs/index.md
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# PowerShell Editor Services
|
||||
|
||||
PowerShell Editor Services provides common functionality that is needed
|
||||
to enable a consistent and robust PowerShell development experience
|
||||
across multiple editors.
|
||||
|
||||
## [User Guide](guide/introduction.md)
|
||||
|
||||
The User Guide describes the high level design of this project and gives
|
||||
guidance on how to use it.
|
||||
|
||||
## [API Reference](api/index.md)
|
||||
|
||||
The API Reference contains details about the .NET API.
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you run into any issues while using PowerShell Editor Services and this documentation doesn't
|
||||
answer your question, feel free to file an issue on our
|
||||
[GitHub page](https://github.com/PowerShell/PowerShellEditorServices/issues) or contact the
|
||||
via Twitter ([@daviwil](http://twitter.com/daviwil) and [@r_keith_hill](http://twitter.com/r_keith_hill))
|
||||
|
||||
## Contributing
|
||||
|
||||
We would love to incorporate community contributions into this project. If you would like to
|
||||
contribute code, documentation, tests, or bug reports, please read our [Contribution Guide]
|
||||
(../CONTRIBUTING.md) to learn more.
|
||||
55
docs/template/conceptual.html.primary.tmpl
vendored
Normal file
55
docs/template/conceptual.html.primary.tmpl
vendored
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
{{!include(/^styles/.*/)}}
|
||||
{{!include(/^fonts/.*/)}}
|
||||
{{!include(favicon.ico)}}
|
||||
{{!include(logo.svg)}}
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE]><![endif]-->
|
||||
<html>
|
||||
{{>partials/head}}
|
||||
<body data-spy="scroll" data-target="#affix">
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
{{^_disableNavbar}}
|
||||
{{>partials/navbar}}
|
||||
{{/_disableNavbar}}
|
||||
{{^_disableBreadcrumb}}
|
||||
{{>partials/breadcrumb}}
|
||||
{{/_disableBreadcrumb}}
|
||||
</header>
|
||||
<div role="main" class="container body-content">
|
||||
{{^_disableToc}}
|
||||
{{>partials/toc}}
|
||||
<div class="article row grid-right">
|
||||
{{/_disableToc}}
|
||||
{{#_disableToc}}
|
||||
<div class="article row grid">
|
||||
{{/_disableToc}}
|
||||
{{#_disableAffix}}
|
||||
<div class="col-md-12">
|
||||
{{/_disableAffix}}
|
||||
{{^_disableAffix}}
|
||||
<div class="col-md-10">
|
||||
{{/_disableAffix}}
|
||||
<article class="content wrap" id="_content">
|
||||
{{^_disableContribution}}
|
||||
{{#docurl}}
|
||||
<a href="{{docurl}}" class="pull-right mobile-hide"><span class="fa fa-github"></span> Improve this Doc</a>
|
||||
{{/docurl}}
|
||||
{{/_disableContribution}}
|
||||
{{{rawTitle}}}
|
||||
{{{conceptual}}}
|
||||
</article>
|
||||
</div>
|
||||
{{^_disableAffix}}
|
||||
{{>partials/affix}}
|
||||
{{/_disableAffix}}
|
||||
</div>
|
||||
</div>
|
||||
{{^_disableFooter}}
|
||||
{{>partials/footer}}
|
||||
{{/_disableFooter}}
|
||||
</div>
|
||||
{{>partials/scripts}}
|
||||
</body>
|
||||
</html>
|
||||
135
docs/template/partials/class.tmpl.partial
vendored
Normal file
135
docs/template/partials/class.tmpl.partial
vendored
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
|
||||
{{^_disableContribution}}
|
||||
{{#docurl}}<a href="{{docurl}}" class="pull-right mobile-hide"><span class="fa fa-github"></span>{{__global.improveThisDoc}}</a>{{/docurl}}
|
||||
{{#sourceurl}}<a href="{{sourceurl}}" class="pull-right mobile-hide">{{__global.viewSource}}</a>{{/sourceurl}}
|
||||
{{/_disableContribution}}
|
||||
<h1 id="{{id}}" data-uid="{{uid}}">{{>partials/title}}</h1>
|
||||
<div class="markdown level0 summary">{{{summary}}}</div>
|
||||
<div class="markdown level0 conceptual">{{{conceptual}}}</div>
|
||||
{{#inheritance.0}}
|
||||
<div class="inheritance">
|
||||
<h5>{{__global.inheritance}}</h5>
|
||||
{{#inheritance}}
|
||||
<div class="level{{index}}">{{{specName.0.value}}}</div>
|
||||
{{/inheritance}}
|
||||
<div class="level{{item.level}}"><span class="xref">{{item.name.0.value}}</span></div>
|
||||
</div>
|
||||
{{/inheritance.0}}
|
||||
<h6><strong>{{__global.namespace}}</strong>:{{namespace}}</h6>
|
||||
<h6><strong>{{__global.assembly}}</strong>:{{assemblies.0}}.dll</h6>
|
||||
<h5 id="{{id}}_syntax">{{__global.syntax}}</h5>
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-{{_lang}} hljs">{{syntax.content.0.value}}</code></pre>
|
||||
</div>
|
||||
{{#remarks}}
|
||||
<h5 id="{{id}}_remarks"><strong>{{__global.remarks}}</strong></h5>
|
||||
<div class="markdown level0 remarks">{{{remarks}}}</div>
|
||||
{{/remarks}}
|
||||
{{#children}}
|
||||
<h3 id="{{id}}">{{>partials/classSubtitle}}</h3>
|
||||
{{#children}}
|
||||
{{^_disableContribution}}
|
||||
{{#docurl}}
|
||||
<span class="small pull-right mobile-hide">
|
||||
<span class="divider">|</span>
|
||||
<a href="{{docurl}}">{{__global.improveThisDoc}}</a>
|
||||
</span>{{/docurl}}
|
||||
{{#sourceurl}}
|
||||
<span class="small pull-right mobile-hide">
|
||||
<a href="{{sourceurl}}">{{__global.viewSource}}</a>
|
||||
</span>{{/sourceurl}}
|
||||
{{/_disableContribution}}
|
||||
<h4 id="{{id}}" data-uid="{{uid}}">{{name.0.value}}</h4>
|
||||
<div class="markdown level1 summary">{{{summary}}}</div>
|
||||
<div class="markdown level1 conceptual">{{{conceptual}}}</div>
|
||||
{{#remarks}}
|
||||
<h5 id="{{id}}_remarks">{{__global.remarks}}</h5>
|
||||
<div class="markdown level1 remarks">{{{remarks}}}</div>
|
||||
{{/remarks}}
|
||||
<h5 class="decalaration">{{__global.declaration}}</h5>
|
||||
{{#syntax}}
|
||||
<div class="codewrapper">
|
||||
<pre><code class="lang-{{_lang}} hljs">{{syntax.content.0.value}}</code></pre>
|
||||
</div>
|
||||
{{#parameters.0}}
|
||||
<h5 class="parameters">{{__global.parameters}}</h5>
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__global.type}}</th>
|
||||
<th>{{__global.name}}</th>
|
||||
<th>{{__global.description}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{/parameters.0}}
|
||||
{{#parameters}}
|
||||
<tr>
|
||||
<td>{{{type.specName.0.value}}}</td>
|
||||
<td><em>{{{id}}}</em></td>
|
||||
<td>{{{description}}}</td>
|
||||
</tr>
|
||||
{{/parameters}}
|
||||
{{#parameters.0}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{/parameters.0}}
|
||||
{{#return}}
|
||||
<h5 class="returns">{{__global.returns}}</h5>
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__global.type}}</th>
|
||||
<th>{{__global.description}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{{type.specName.0.value}}}</td>
|
||||
<td>{{{description}}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{{/return}}
|
||||
{{#propertyValue}}
|
||||
<h5 class="propertyValue">{{__global.provertyValue}}</h5>
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__global.type}}</th>
|
||||
<th>{{__global.description}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{{type.specName.0.value}}}</td>
|
||||
<td>{{{description}}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{{/propertyValue}}
|
||||
{{/syntax}}
|
||||
{{#exceptions.0}}
|
||||
<h5 class="exceptions">{{__global.exceptions}}</h5>
|
||||
<table class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__global.type}}</th>
|
||||
<th>{{__global.condition}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{/exceptions.0}}
|
||||
{{#exceptions}}
|
||||
<tr>
|
||||
<td>{{{type.specName.0.value}}}</td>
|
||||
<td>{{{description}}}</td>
|
||||
</tr>
|
||||
{{/exceptions}}
|
||||
{{#exceptions.0}}
|
||||
</tbody>
|
||||
</table>
|
||||
{{/exceptions.0}}
|
||||
{{/children}}
|
||||
{{/children}}
|
||||
7
docs/template/partials/footer.tmpl.partial
vendored
Normal file
7
docs/template/partials/footer.tmpl.partial
vendored
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
|
||||
<footer>
|
||||
<div class="inner-footer">
|
||||
<p>© Microsoft // Generated with <a href="https://github.com/dotnet/docfx">DocFX</a></p>
|
||||
</div>
|
||||
</footer>
|
||||
28
docs/template/partials/head.tmpl.partial
vendored
Normal file
28
docs/template/partials/head.tmpl.partial
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}</title>
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<meta name="title" content="{{#title}}{{title}}{{/title}}{{^title}}{{>partials/title}}{{/title}} {{#_appTitle}}| {{_appTitle}} {{/_appTitle}}">
|
||||
{{#_description}}<meta name="description" content="{{_description}}">{{/_description}}
|
||||
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="{{_rel}}styles/docfx.vendor.css">
|
||||
<link rel="stylesheet" href="{{_rel}}styles/main.css">
|
||||
<link rel="stylesheet" href="{{_rel}}styles/docfx.css">
|
||||
<link rel="stylesheet" href="{{_rel}}styles/style.css">
|
||||
<meta property="docfx:navrel" content="{{_navRel}}">
|
||||
<meta property="docfx:tocrel" content="{{_tocRel}}">
|
||||
<!--
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', 'UA-63735192-1', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
||||
-->
|
||||
</head>
|
||||
21
docs/template/partials/namespace.tmpl.partial
vendored
Normal file
21
docs/template/partials/namespace.tmpl.partial
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
|
||||
{{^_disableContribution}}
|
||||
{{#docurl}}
|
||||
<a href="{{docurl}}" class="pull-right mobile-hide"><span class="fa fa-github"></span>{{__global.improveThisDoc}}</a>
|
||||
{{/docurl}}
|
||||
{{#sourceurl}}
|
||||
<a href="{{sourceurl}}" class="pull-right mobile-hide">{{__global.viewSource}}</a>
|
||||
{{/sourceurl}}
|
||||
{{/_disableContribution}}
|
||||
<h1 id="{{id}}" data-uid="{{uid}}">{{>partials/title}}</h1>
|
||||
<div class="markdown level0 summary">{{{summary}}}</div>
|
||||
<div class="markdown level0 conceptual">{{{conceptual}}}</div>
|
||||
<div class="markdown level0 remarks">{{{remarks}}}</div>
|
||||
{{#children}}
|
||||
<h3 id="{{id}}">{{>partials/namespaceSubtitle}}</h3>
|
||||
{{#children}}
|
||||
<h4>{{{specName.0.value}}}</h4>
|
||||
<section>{{{summary}}}</section>
|
||||
{{/children}}
|
||||
{{/children}}
|
||||
18
docs/template/partials/navbar.tmpl.partial
vendored
Normal file
18
docs/template/partials/navbar.tmpl.partial
vendored
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{{!Copyright (c) Microsoft Corporation. Licensed under the MIT License.}}
|
||||
|
||||
<nav class="navbar navbar-inverse">
|
||||
<div class="container">
|
||||
<a href="{{_rel}}"><img height="50px" src="{{_rel}}images/PowerShell_logo.png" style="float:right;"/></a>
|
||||
<div class="navbar-header ">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{{_rel}}"><span class="dotnet">PowerShell Editor Services</span></a>
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
268
docs/template/styles/main.css
vendored
Normal file
268
docs/template/styles/main.css
vendored
Normal file
|
|
@ -0,0 +1,268 @@
|
|||
@import url(//fonts.googleapis.com/css?family=Roboto+Condensed:700);
|
||||
@import url(//fonts.googleapis.com/css?family=Open+Sans);
|
||||
|
||||
/* Main styles */
|
||||
body {
|
||||
font-family: "Open Sans", "Segoe UI", sans-serif;
|
||||
font-size: 15px;
|
||||
padding-top: 50px;
|
||||
}
|
||||
ul {
|
||||
list-style-image: url("../../images/core/list-bullet.png");
|
||||
}
|
||||
nav {
|
||||
font-size: 14px;
|
||||
}
|
||||
.navbar-nav > li > a.nav-active, .navbar-nav > li > a.nav-active:hover {
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
font-family: "Roboto Condensed", "Segoe UI", sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
margin-top: 50px;
|
||||
color: #c0c0c0;
|
||||
}
|
||||
footer > .inner-footer a {
|
||||
color: #c0c0c0;
|
||||
text-decoration: none;
|
||||
}
|
||||
footer > .inner-footer a:hover {
|
||||
color: #32145a;
|
||||
text-decoration: none;
|
||||
}
|
||||
.content a {
|
||||
/*color: #A979B3;*/
|
||||
color: #A356B3;
|
||||
text-decoration: none;
|
||||
outline: 0;
|
||||
}
|
||||
.content a:hover {
|
||||
/*transition: color .15s cubic-bezier(.33, .66, .66, 1);*/
|
||||
text-decoration: none;
|
||||
color: #682079;
|
||||
}
|
||||
|
||||
|
||||
/* End of main styles */
|
||||
|
||||
/* Index page styles */
|
||||
.btn-hero-core {
|
||||
padding: 15px 25px;
|
||||
background-color: #32145a;
|
||||
color: #d89ae4;
|
||||
display: inline-block;
|
||||
font-family: "Open Sans", sans-serif;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
margin-left: 20px;
|
||||
-webkit-box-shadow: 2px 2px 3px 0px #2C0D33; /* Safari 3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
|
||||
-moz-box-shadow: 2px 2px 3px 0px #2C0D33; /* Firefox 3.5 - 3.6 */
|
||||
box-shadow: 2px 2px 3px 0px #2C0D33; /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
|
||||
}
|
||||
.btn-hero-core:hover {
|
||||
color: #d89ae4;
|
||||
text-decoration: none;
|
||||
}
|
||||
.hero {
|
||||
background-color: #682079;
|
||||
width: inherit;
|
||||
color: #fff;
|
||||
}
|
||||
.starter-template {
|
||||
padding: 40px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
.dotnet {
|
||||
color: #fff;
|
||||
}
|
||||
#rest-vps {
|
||||
display: none;
|
||||
}
|
||||
.value-prop-heading {
|
||||
margin-top: 0px;
|
||||
}
|
||||
.value-props {
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.intro-image {
|
||||
text-align: center;
|
||||
}
|
||||
.intro-image > img {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/* End of index page styles */
|
||||
|
||||
/* Getting started page styles */
|
||||
.getting-started-intro {
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.getting-started-intro > h2, h4 {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.btn-gs {
|
||||
width: 150px;
|
||||
}
|
||||
.btn-gs:hover, .btn-gs:active, .btn-gs:focus, .jquery-active {
|
||||
color: #fff;
|
||||
background-color: #682079;
|
||||
outline: 0 !important;
|
||||
}
|
||||
|
||||
|
||||
.step {
|
||||
width: 100%;
|
||||
margin: 50px auto;
|
||||
padding: 20px 0px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
border: solid 1px #c0c0c0;
|
||||
min-height: 300px;
|
||||
background-color: #fff;
|
||||
border-radius: 10px;
|
||||
}
|
||||
.step-block {
|
||||
display: block;
|
||||
}
|
||||
.step-none {
|
||||
display: none;
|
||||
}
|
||||
.step-number {
|
||||
position: relative;
|
||||
top: -40px;
|
||||
background-color: #32145a;
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
z-index: 999;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 80px;
|
||||
padding: 10px;
|
||||
border: solid 1px #c0c0c0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.step > h3 {
|
||||
margin: 0;
|
||||
margin-bottom: 30px;
|
||||
font-size: 30px;
|
||||
}
|
||||
.step > p {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px;
|
||||
width: 70%;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.code-sample {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
|
||||
/* Terminal backgrounds */
|
||||
.terminal {
|
||||
display: block;
|
||||
width: 850px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.terminal-titlebar {
|
||||
background-color: #c0c0c0;
|
||||
height: 30px;
|
||||
border-top-left-radius: 5px;
|
||||
border-top-right-radius: 5px;
|
||||
}
|
||||
|
||||
.terminal-body {
|
||||
background-color: #000;
|
||||
color: #fff;
|
||||
font-family: "Consolas", "Monaco", monospace;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
padding: 15px;
|
||||
text-align: left;
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
word-wrap: break-word;
|
||||
border-bottom-left-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
}
|
||||
.prompt {
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
color: #c0c0c0;
|
||||
}
|
||||
.windows-prompt:after {
|
||||
content: 'PS > ';
|
||||
}
|
||||
.unix-prompt:after {
|
||||
content: '~$ ';
|
||||
}
|
||||
|
||||
@media (max-device-width: 480px) and (orientation: portrait), (max-device-width: 700px) and (orientation: landscape){
|
||||
/* Index page overrides */
|
||||
.btn-hero-core {
|
||||
padding: 10px 15px;
|
||||
margin-left: 0px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.intro-image > img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Overview overrides */
|
||||
img[src*="10kft_view"] {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* Getting started overrides */
|
||||
.btn-gs {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.btn-gs:hover, .btn-gs:active, .btn-gs:focus, .jquery-active {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.step {
|
||||
width: 90%;
|
||||
font-size: 14px;
|
||||
}
|
||||
.step > h3 {
|
||||
font-size: 24px;
|
||||
}
|
||||
.step-number {
|
||||
width: 40px;
|
||||
font-size: 18px;
|
||||
padding: 5px;
|
||||
}
|
||||
.terminal {
|
||||
width: 95%;
|
||||
}
|
||||
.terminal-titlebar {
|
||||
height: 20px;
|
||||
}
|
||||
.terminal-body {
|
||||
font-size: 12px;
|
||||
padding: 5px;
|
||||
}
|
||||
}
|
||||
43
docs/template/styles/style.css
vendored
Normal file
43
docs/template/styles/style.css
vendored
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
body {
|
||||
font-family: "Open Sans", "Segoe UI", sans-serif;
|
||||
padding-top: 0px;
|
||||
}
|
||||
footer {
|
||||
z-index: 0;
|
||||
}
|
||||
.navbar-brand {
|
||||
font-size: 18px;
|
||||
padding: 15px;
|
||||
}
|
||||
.toc .level3 {
|
||||
font-weight: normal;
|
||||
margin-top: 5px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
a.pull-right {
|
||||
margin-left: 10px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
article.content > h1 {
|
||||
word-break: break-word;
|
||||
}
|
||||
@media only screen and (max-width: 768px) {
|
||||
.toc .level3 > li {
|
||||
display: inline-block;
|
||||
}
|
||||
.toc .level3 > li:after {
|
||||
margin-left: -3px;
|
||||
margin-right: 5px;
|
||||
content: ", ";
|
||||
color: #666666;
|
||||
}
|
||||
}
|
||||
@media (max-width: 260px) {
|
||||
.toc .level3 > li {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.toc .level3 > li:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
5
docs/toc.yml
Normal file
5
docs/toc.yml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
- name: User Guide
|
||||
href: guide/
|
||||
homepage: guide/introduction.md
|
||||
- name: API Reference
|
||||
href: api/
|
||||
Loading…
Add table
Add a link
Reference in a new issue