diff --git a/.clang-format b/.clang-format
index e8e61469f..61dec384a 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,5 +1,4 @@
# clang-format configuration
-# compatible with clang-format 18
UseTab: Never
ColumnLimit: 100
diff --git a/.coderabbit.yaml b/.coderabbit.yaml
new file mode 100644
index 000000000..16329a3d8
--- /dev/null
+++ b/.coderabbit.yaml
@@ -0,0 +1,2 @@
+chat:
+ auto_reply: false
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index dd84ea782..9b77ea713 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,10 +1,9 @@
---
name: Bug report
about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
+title: ""
+labels: ""
+assignees: ""
---
**Describe the bug**
@@ -12,6 +11,7 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
+
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@@ -24,15 +24,17 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- - OS: [e.g. iOS]
- - Browser [e.g. chrome, safari]
- - Version [e.g. 22]
+
+- OS: [e.g. iOS]
+- Browser [e.g. chrome, safari]
+- Version [e.g. 22]
**Smartphone (please complete the following information):**
- - Device: [e.g. iPhone6]
- - OS: [e.g. iOS8.1]
- - Browser [e.g. stock browser, safari]
- - Version [e.g. 22]
+
+- Device: [e.g. iPhone6]
+- OS: [e.g. iOS8.1]
+- Browser [e.g. stock browser, safari]
+- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index bbcbbe7d6..2bc5d5f71 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,10 +1,9 @@
---
name: Feature request
about: Suggest an idea for this project
-title: ''
-labels: ''
-assignees: ''
-
+title: ""
+labels: ""
+assignees: ""
---
**Is your feature request related to a problem? Please describe.**
diff --git a/.github/workflows/check-format.yml b/.github/workflows/check-format.yml
index f1da5ef97..d12ab7e9e 100644
--- a/.github/workflows/check-format.yml
+++ b/.github/workflows/check-format.yml
@@ -3,14 +3,18 @@ name: format
on:
push:
branches: [main]
-
pull_request:
branches: [main]
+permissions:
+ contents: read
+ pull-requests: write
+ checks: write
+ issues: write
+
jobs:
- check:
+ check-format:
runs-on: ubuntu-latest
-
steps:
- name: Checkout code
uses: actions/checkout@v4
@@ -19,34 +23,25 @@ jobs:
uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: v0.61.0
- environments: develop
+ environments: format
activate-environment: true
cache: true
locked: true
- - name: Run check
- id: precommit
- run: |
- pixi run ci-check
+ - name: Run formatter
+ run: pixi run format
continue-on-error: true
- - name: Show diff on failure
- if: steps.precommit.outcome == 'failure'
- run: |
- echo "❌ pre-commit found issues that it auto-fixed."
- echo " Please run 'pre-commit run --all-files' locally,"
- echo " commit the changes, and push again."
- echo ""
- echo "👇 The required changes are shown below:"
- git diff
-
- - name: Fail the job if pre-commit failed
- if: steps.precommit.outcome == 'failure'
- run: |
- echo "pre-commit checks failed."
- exit 1
-
- name: Auto correct
- uses: huacnlee/autocorrect-action@main
+ uses: huacnlee/autocorrect-action@v2
with:
args: --lint ./docs
+ continue-on-error: true
+
+ - name: Suggest changes
+ if: github.event_name == 'pull_request'
+ uses: reviewdog/action-suggester@v1.24.0
+ with:
+ tool_name: "fmt"
+ fail_level: any
+ filter_mode: nofilter
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
deleted file mode 100644
index 99f7c00b9..000000000
--- a/.pre-commit-config.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-# .pre-commit-config.yaml
-exclude: "\\.patch$"
-
-repos:
- - repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v6.0.0
- hooks:
- - id: trailing-whitespace
- - id: end-of-file-fixer
- - id: check-yaml
- - id: check-added-large-files
- - id: check-merge-conflict
-
- - repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.12.12
- hooks:
- - id: ruff
- args: [--fix]
- - id: ruff-format
-
- - repo: https://github.com/pre-commit/mirrors-clang-format
- rev: v21.1.0
- hooks:
- - id: clang-format
- types_or: [c++, c]
-
- - repo: https://github.com/JohnnyMorganz/StyLua
- rev: v2.1.0
- hooks:
- - id: stylua-github # or stylua-system / stylua-github
- files: '(^xmake\.lua$|^editors/nvim/(lua|plugin|test)/.*\.lua$)'
diff --git a/.prettierrc.yaml b/.prettierrc.yaml
new file mode 100644
index 000000000..ac1ea39bf
--- /dev/null
+++ b/.prettierrc.yaml
@@ -0,0 +1,23 @@
+# .prettierrc.yaml
+
+printWidth: 100
+tabWidth: 4
+useTabs: false
+semi: true
+singleQuote: false
+jsxSingleQuote: false
+quoteProps: "as-needed"
+trailingComma: "all"
+bracketSpacing: true
+arrowParens: "always"
+endOfLine: "lf"
+
+overrides:
+ - files: "*.md"
+ options:
+ proseWrap: "preserve"
+ tabWidth: 2
+
+ - files: ["*.json", "*.yaml", "*.yml", ".clang-format", ".clang-tidy"]
+ options:
+ tabWidth: 2
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bfdc47490..be05958ec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -177,7 +177,7 @@ target_link_libraries(clice-core PUBLIC
llvm-libs
)
-add_executable(clice "${PROJECT_SOURCE_DIR}/bin/clice.cc")
+add_executable(clice "${PROJECT_SOURCE_DIR}/src/clice.cc")
target_link_libraries(clice PRIVATE clice-core)
install(TARGETS clice RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
@@ -196,7 +196,7 @@ if(CLICE_ENABLE_TEST)
"${PROJECT_SOURCE_DIR}/tests/unit/*/*.cpp")
add_executable(unit_tests
"${CLICE_TEST_SOURCES}"
- "${PROJECT_SOURCE_DIR}/bin/unit_tests.cc"
+ "${PROJECT_SOURCE_DIR}/tests/unit/unit_tests.cc"
)
target_include_directories(unit_tests PUBLIC "${PROJECT_SOURCE_DIR}")
target_link_libraries(unit_tests PRIVATE clice-core cpptrace::cpptrace)
diff --git a/README.md b/README.md
index 062e13cd1..97cf31451 100644
--- a/README.md
+++ b/README.md
@@ -22,11 +22,11 @@ Download the latest `clice` binary from the [releases page](https://github.com/c
```jsonc
{
- // Optional: Set this to an empty string to turn off the clangd.
- "clangd.path": "",
+ // Optional: Set this to an empty string to turn off the clangd.
+ "clangd.path": "",
- // Point this to the clice binary you downloaded.
- "clice.executable": "/path/to/your/clice/executable",
+ // Point this to the clice binary you downloaded.
+ "clice.executable": "/path/to/your/clice/executable",
}
```
diff --git a/config/llvm-manifest.json b/config/llvm-manifest.json
index 1e3dca4ea..c403fd5c1 100644
--- a/config/llvm-manifest.json
+++ b/config/llvm-manifest.json
@@ -1,83 +1,83 @@
[
- {
- "version": "21.1.4+r1",
- "filename": "arm64-macos-clang-debug-asan.tar.xz",
- "sha256": "7da4b7d63edefecaf11773e7e701c575140d1a07329bbbb038673b6ee4516ff5",
- "lto": false,
- "asan": true,
- "platform": "macosx",
- "build_type": "Debug"
- },
- {
- "version": "21.1.4+r1",
- "filename": "arm64-macos-clang-releasedbg-lto.tar.xz",
- "sha256": "300455b169448f9f01ae95e3bc269f489558a4ca3955e3032171cc75feca0e30",
- "lto": true,
- "asan": false,
- "platform": "macosx",
- "build_type": "RelWithDebInfo"
- },
- {
- "version": "21.1.4+r1",
- "filename": "arm64-macos-clang-releasedbg.tar.xz",
- "sha256": "9abfc6cd65b957d734ffb97610a634fb4a66d3fbe0fcfb5a1c9124ef693c1495",
- "lto": false,
- "asan": false,
- "platform": "macosx",
- "build_type": "RelWithDebInfo"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-linux-gnu-debug-asan.tar.xz",
- "sha256": "c1ad3ec476911596a842ac67dd9c9c9475ce9f0a77b81101d3c801840292e7bc",
- "lto": false,
- "asan": true,
- "platform": "linux",
- "build_type": "Debug"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-linux-gnu-releasedbg-lto.tar.xz",
- "sha256": "8a869c2184d139dbba704e2d712e7a68336458ad2d70622b3eb906c3e3511e54",
- "lto": true,
- "asan": false,
- "platform": "linux",
- "build_type": "RelWithDebInfo"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-linux-gnu-releasedbg.tar.xz",
- "sha256": "552bab86f715d4f2c027f07eaaf5b3d6b8e430af0b74b470142f3f00da4feec6",
- "lto": false,
- "asan": false,
- "platform": "linux",
- "build_type": "RelWithDebInfo"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-windows-msvc-debug-asan.tar.xz",
- "sha256": "093667a493d336c22ff3c604c5f1fea2a7d2c927c1179cec44e9a03726906ac1",
- "lto": false,
- "asan": true,
- "platform": "windows",
- "build_type": "Debug"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-windows-msvc-releasedbg-lto.tar.xz",
- "sha256": "010539e85621dc3c6ecf359d899feb4075aeca5d0bba6625cdbec0e570e79129",
- "lto": true,
- "asan": false,
- "platform": "windows",
- "build_type": "RelWithDebInfo"
- },
- {
- "version": "21.1.4+r1",
- "filename": "x64-windows-msvc-releasedbg.tar.xz",
- "sha256": "f473c09fbea10053fac00be409d75dc228d4a38bcbc5e4aeb58b56a4b0dde78e",
- "lto": false,
- "asan": false,
- "platform": "windows",
- "build_type": "RelWithDebInfo"
- }
+ {
+ "version": "21.1.4+r1",
+ "filename": "arm64-macos-clang-debug-asan.tar.xz",
+ "sha256": "7da4b7d63edefecaf11773e7e701c575140d1a07329bbbb038673b6ee4516ff5",
+ "lto": false,
+ "asan": true,
+ "platform": "macosx",
+ "build_type": "Debug"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "arm64-macos-clang-releasedbg-lto.tar.xz",
+ "sha256": "300455b169448f9f01ae95e3bc269f489558a4ca3955e3032171cc75feca0e30",
+ "lto": true,
+ "asan": false,
+ "platform": "macosx",
+ "build_type": "RelWithDebInfo"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "arm64-macos-clang-releasedbg.tar.xz",
+ "sha256": "9abfc6cd65b957d734ffb97610a634fb4a66d3fbe0fcfb5a1c9124ef693c1495",
+ "lto": false,
+ "asan": false,
+ "platform": "macosx",
+ "build_type": "RelWithDebInfo"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-linux-gnu-debug-asan.tar.xz",
+ "sha256": "c1ad3ec476911596a842ac67dd9c9c9475ce9f0a77b81101d3c801840292e7bc",
+ "lto": false,
+ "asan": true,
+ "platform": "linux",
+ "build_type": "Debug"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-linux-gnu-releasedbg-lto.tar.xz",
+ "sha256": "8a869c2184d139dbba704e2d712e7a68336458ad2d70622b3eb906c3e3511e54",
+ "lto": true,
+ "asan": false,
+ "platform": "linux",
+ "build_type": "RelWithDebInfo"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-linux-gnu-releasedbg.tar.xz",
+ "sha256": "552bab86f715d4f2c027f07eaaf5b3d6b8e430af0b74b470142f3f00da4feec6",
+ "lto": false,
+ "asan": false,
+ "platform": "linux",
+ "build_type": "RelWithDebInfo"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-windows-msvc-debug-asan.tar.xz",
+ "sha256": "093667a493d336c22ff3c604c5f1fea2a7d2c927c1179cec44e9a03726906ac1",
+ "lto": false,
+ "asan": true,
+ "platform": "windows",
+ "build_type": "Debug"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-windows-msvc-releasedbg-lto.tar.xz",
+ "sha256": "010539e85621dc3c6ecf359d899feb4075aeca5d0bba6625cdbec0e570e79129",
+ "lto": true,
+ "asan": false,
+ "platform": "windows",
+ "build_type": "RelWithDebInfo"
+ },
+ {
+ "version": "21.1.4+r1",
+ "filename": "x64-windows-msvc-releasedbg.tar.xz",
+ "sha256": "f473c09fbea10053fac00be409d75dc228d4a38bcbc5e4aeb58b56a4b0dde78e",
+ "lto": false,
+ "asan": false,
+ "platform": "windows",
+ "build_type": "RelWithDebInfo"
+ }
]
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index 92a44a307..ef936f9ab 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -1,40 +1,38 @@
-import { defineConfig } from 'vitepress'
-import { genSidebar } from './theme/sidebar'
+import { defineConfig } from "vitepress";
+import { genSidebar } from "./theme/sidebar";
// https://vitepress.dev/reference/site-config
export default defineConfig({
- title: "clice",
- description: "a powerful and modern C++ language server",
- cleanUrls: true,
- base: '/',
- rewrites: {
- 'en/:rest*': ':rest*',
- },
- locales: {
- root: { label: 'English' },
- zh: { label: '简体中文' },
- },
- themeConfig: {
- // https://vitepress.dev/reference/default-theme-config
- nav: [
- { text: 'Home', link: '/' },
- ],
- sidebar: {
- "/zh/": [
- genSidebar('zh', 'design', { title: 'Design' }),
- genSidebar('zh', 'dev', { title: 'Development' }),
- genSidebar('zh', 'guide', { title: 'Guide' }),
- ],
- "/": [
- genSidebar('en', 'design', { title: 'Design' }),
- genSidebar('en', 'dev', { title: 'Development' }),
- genSidebar('en', 'guide', { title: 'Guide' }),
- ],
+ title: "clice",
+ description: "a powerful and modern C++ language server",
+ cleanUrls: true,
+ base: "/",
+ rewrites: {
+ "en/:rest*": ":rest*",
},
- socialLinks: [
- { icon: 'discord', link: 'https://discord.gg/PA3UxW2VA3' },
- { icon: 'github', link: 'https://github.com/clice-io/clice' },
- ],
- outline: 'deep',
- },
-})
+ locales: {
+ root: { label: "English" },
+ zh: { label: "简体中文" },
+ },
+ themeConfig: {
+ // https://vitepress.dev/reference/default-theme-config
+ nav: [{ text: "Home", link: "/" }],
+ sidebar: {
+ "/zh/": [
+ genSidebar("zh", "design", { title: "Design" }),
+ genSidebar("zh", "dev", { title: "Development" }),
+ genSidebar("zh", "guide", { title: "Guide" }),
+ ],
+ "/": [
+ genSidebar("en", "design", { title: "Design" }),
+ genSidebar("en", "dev", { title: "Development" }),
+ genSidebar("en", "guide", { title: "Guide" }),
+ ],
+ },
+ socialLinks: [
+ { icon: "discord", link: "https://discord.gg/PA3UxW2VA3" },
+ { icon: "github", link: "https://github.com/clice-io/clice" },
+ ],
+ outline: "deep",
+ },
+});
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
index def4cfc87..cf42c91f7 100644
--- a/docs/.vitepress/theme/index.ts
+++ b/docs/.vitepress/theme/index.ts
@@ -1,17 +1,17 @@
// https://vitepress.dev/guide/custom-theme
-import { h } from 'vue'
-import type { Theme } from 'vitepress'
-import DefaultTheme from 'vitepress/theme'
-import './style.css'
+import { h } from "vue";
+import type { Theme } from "vitepress";
+import DefaultTheme from "vitepress/theme";
+import "./style.css";
export default {
- extends: DefaultTheme,
- Layout: () => {
- return h(DefaultTheme.Layout, null, {
- // https://vitepress.dev/guide/extending-default-theme#layout-slots
- })
- },
- enhanceApp({ app, router, siteData }) {
- // ...
- }
-} satisfies Theme
+ extends: DefaultTheme,
+ Layout: () => {
+ return h(DefaultTheme.Layout, null, {
+ // https://vitepress.dev/guide/extending-default-theme#layout-slots
+ });
+ },
+ enhanceApp({ app, router, siteData }) {
+ // ...
+ },
+} satisfies Theme;
diff --git a/docs/.vitepress/theme/sidebar.ts b/docs/.vitepress/theme/sidebar.ts
index 8cc6c7c4a..985987ac0 100644
--- a/docs/.vitepress/theme/sidebar.ts
+++ b/docs/.vitepress/theme/sidebar.ts
@@ -1,45 +1,45 @@
-import fs from 'fs'
-import path from 'path'
-import { DefaultTheme } from 'vitepress'
+import fs from "fs";
+import path from "path";
+import { DefaultTheme } from "vitepress";
export const genSidebar = (
lang: string,
dirPath: string,
options: {
- title: string
- collapsible?: boolean
- ignore?: string[]
- }
+ title: string;
+ collapsible?: boolean;
+ ignore?: string[];
+ },
): DefaultTheme.SidebarItem => {
- const sidebarPath = path.resolve(process.cwd(), lang, dirPath)
- const ignore = options.ignore || ['index.md']
+ const sidebarPath = path.resolve(process.cwd(), lang, dirPath);
+ const ignore = options.ignore || ["index.md"];
const files = fs
.readdirSync(sidebarPath)
- .filter((file) => file.endsWith('.md') && !ignore.includes(file))
+ .filter((file) => file.endsWith(".md") && !ignore.includes(file));
const items = files.map((file) => {
- const content = fs.readFileSync(path.resolve(sidebarPath, file), 'utf-8')
- const match = content.match(/^#\s+(.*)/)
- const title = match ? match[1] : file.replace('.md', '')
+ const content = fs.readFileSync(path.resolve(sidebarPath, file), "utf-8");
+ const match = content.match(/^#\s+(.*)/);
+ const title = match ? match[1] : file.replace(".md", "");
- let prefix = '/';
- if (lang != 'en') {
+ let prefix = "/";
+ if (lang != "en") {
prefix += lang;
- prefix += '/';
+ prefix += "/";
}
return {
text: title,
/// Make sure link for en is actually root, beacuse Github Pages
/// doesn't support redirect url.
- link: `${prefix}${dirPath}/${file.replace('.md', '')}`
- }
- })
+ link: `${prefix}${dirPath}/${file.replace(".md", "")}`,
+ };
+ });
return {
text: options.title,
collapsed: options.collapsible || false,
- items
- }
-}
+ items,
+ };
+};
diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css
index 8702981dd..a4d59d8b0 100644
--- a/docs/.vitepress/theme/style.css
+++ b/docs/.vitepress/theme/style.css
@@ -44,30 +44,30 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-c-default-1: var(--vp-c-gray-1);
- --vp-c-default-2: var(--vp-c-gray-2);
- --vp-c-default-3: var(--vp-c-gray-3);
- --vp-c-default-soft: var(--vp-c-gray-soft);
-
- --vp-c-brand-1: var(--vp-c-indigo-1);
- --vp-c-brand-2: var(--vp-c-indigo-2);
- --vp-c-brand-3: var(--vp-c-indigo-3);
- --vp-c-brand-soft: var(--vp-c-indigo-soft);
-
- --vp-c-tip-1: var(--vp-c-brand-1);
- --vp-c-tip-2: var(--vp-c-brand-2);
- --vp-c-tip-3: var(--vp-c-brand-3);
- --vp-c-tip-soft: var(--vp-c-brand-soft);
-
- --vp-c-warning-1: var(--vp-c-yellow-1);
- --vp-c-warning-2: var(--vp-c-yellow-2);
- --vp-c-warning-3: var(--vp-c-yellow-3);
- --vp-c-warning-soft: var(--vp-c-yellow-soft);
-
- --vp-c-danger-1: var(--vp-c-red-1);
- --vp-c-danger-2: var(--vp-c-red-2);
- --vp-c-danger-3: var(--vp-c-red-3);
- --vp-c-danger-soft: var(--vp-c-red-soft);
+ --vp-c-default-1: var(--vp-c-gray-1);
+ --vp-c-default-2: var(--vp-c-gray-2);
+ --vp-c-default-3: var(--vp-c-gray-3);
+ --vp-c-default-soft: var(--vp-c-gray-soft);
+
+ --vp-c-brand-1: var(--vp-c-indigo-1);
+ --vp-c-brand-2: var(--vp-c-indigo-2);
+ --vp-c-brand-3: var(--vp-c-indigo-3);
+ --vp-c-brand-soft: var(--vp-c-indigo-soft);
+
+ --vp-c-tip-1: var(--vp-c-brand-1);
+ --vp-c-tip-2: var(--vp-c-brand-2);
+ --vp-c-tip-3: var(--vp-c-brand-3);
+ --vp-c-tip-soft: var(--vp-c-brand-soft);
+
+ --vp-c-warning-1: var(--vp-c-yellow-1);
+ --vp-c-warning-2: var(--vp-c-yellow-2);
+ --vp-c-warning-3: var(--vp-c-yellow-3);
+ --vp-c-warning-soft: var(--vp-c-yellow-soft);
+
+ --vp-c-danger-1: var(--vp-c-red-1);
+ --vp-c-danger-2: var(--vp-c-red-2);
+ --vp-c-danger-3: var(--vp-c-red-3);
+ --vp-c-danger-soft: var(--vp-c-red-soft);
}
/**
@@ -75,15 +75,15 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-button-brand-border: transparent;
- --vp-button-brand-text: var(--vp-c-white);
- --vp-button-brand-bg: var(--vp-c-brand-3);
- --vp-button-brand-hover-border: transparent;
- --vp-button-brand-hover-text: var(--vp-c-white);
- --vp-button-brand-hover-bg: var(--vp-c-brand-2);
- --vp-button-brand-active-border: transparent;
- --vp-button-brand-active-text: var(--vp-c-white);
- --vp-button-brand-active-bg: var(--vp-c-brand-1);
+ --vp-button-brand-border: transparent;
+ --vp-button-brand-text: var(--vp-c-white);
+ --vp-button-brand-bg: var(--vp-c-brand-3);
+ --vp-button-brand-hover-border: transparent;
+ --vp-button-brand-hover-text: var(--vp-c-white);
+ --vp-button-brand-hover-bg: var(--vp-c-brand-2);
+ --vp-button-brand-active-border: transparent;
+ --vp-button-brand-active-text: var(--vp-c-white);
+ --vp-button-brand-active-bg: var(--vp-c-brand-1);
}
/**
@@ -91,31 +91,23 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-home-hero-name-color: transparent;
- --vp-home-hero-name-background: -webkit-linear-gradient(
- 120deg,
- #bd34fe 30%,
- #41d1ff
- );
-
- --vp-home-hero-image-background-image: linear-gradient(
- -45deg,
- #bd34fe 50%,
- #47caff 50%
- );
- --vp-home-hero-image-filter: blur(44px);
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe 30%, #41d1ff);
+
+ --vp-home-hero-image-background-image: linear-gradient(-45deg, #bd34fe 50%, #47caff 50%);
+ --vp-home-hero-image-filter: blur(44px);
}
@media (min-width: 640px) {
- :root {
- --vp-home-hero-image-filter: blur(56px);
- }
+ :root {
+ --vp-home-hero-image-filter: blur(56px);
+ }
}
@media (min-width: 960px) {
- :root {
- --vp-home-hero-image-filter: blur(68px);
- }
+ :root {
+ --vp-home-hero-image-filter: blur(68px);
+ }
}
/**
@@ -123,10 +115,10 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-custom-block-tip-border: transparent;
- --vp-custom-block-tip-text: var(--vp-c-text-1);
- --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
- --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
+ --vp-custom-block-tip-border: transparent;
+ --vp-custom-block-tip-text: var(--vp-c-text-1);
+ --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
+ --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}
/**
@@ -134,5 +126,5 @@
* -------------------------------------------------------------------------- */
.DocSearch {
- --docsearch-primary-color: var(--vp-c-brand-1) !important;
+ --docsearch-primary-color: var(--vp-c-brand-1) !important;
}
diff --git a/docs/clice.toml b/docs/clice.toml
index dd020c264..ec28b9232 100644
--- a/docs/clice.toml
+++ b/docs/clice.toml
@@ -1,4 +1,4 @@
-### clice configuration
+## # clice configuration
# This section outlines the supported built-in variables for clice.
# These variables can be referenced in strings using the syntax `${var}`.
@@ -9,47 +9,39 @@
# - `${workspace}`: The workspace directory provided by the client.
[project]
- # Enable experimental clang-tidy diagnostics.
- # This feature is tracked in https://github.com/clice-project/clice/issues/90.
- clang_tidy = false
-
- # Maximum number of active files to keep in memory. If the number of active files
- # exceeds this limit, the least recently used files will be removed.
- # The default value is 8. Whatever the number you set, the minimum is 1, the maximum is 512.
- max_active_file = 8
-
- # Directory for storing PCH and PCM files.
- cache_dir = "${workspace}/.clice/cache"
-
- # Directory for storing index files.
- index_dir = "${workspace}/.clice/index"
-
- logging_dir = "${workspace}/.clice/logging"
-
- # Compile commands directories to search for compile_commands.json files.
- compile_commands_dirs = ["${workspace}/build"]
-
+# Enable experimental clang-tidy diagnostics.
+# This feature is tracked in https://github.com/clice-project/clice/issues/90.
+clang_tidy = false
+# Maximum number of active files to keep in memory. If the number of active files
+# exceeds this limit, the least recently used files will be removed.
+# The default value is 8. Whatever the number you set, the minimum is 1, the maximum is 512.
+max_active_file = 8
+# Directory for storing PCH and PCM files.
+cache_dir = "${workspace}/.clice/cache"
+# Directory for storing index files.
+index_dir = "${workspace}/.clice/index"
+logging_dir = "${workspace}/.clice/logging"
+# Compile commands directories to search for compile_commands.json files.
+compile_commands_dirs = ["${workspace}/build"]
# Control the behavior for specific files. Note that Clice matches rules
# in order. If you want to add your own rules, either delete this rule
# or insert your rule before it.
[[rules]]
- # Files matching the specified pattern will have this rule applied.
- #
- # Patterns can use the following syntax:
- # - `*`: Matches one or more characters in a path segment.
- # - `?`: Matches a single character in a path segment.
- # - `**`: Matches any number of path segments, including none.
- # - `{}`: Groups conditions (e.g., `**/*.{ts,js}` matches all TypeScript
- # and JavaScript files).
- # - `[]`: Declares a range of characters to match in a path segment
- # (e.g., `example.[0-9]` matches `example.0`, `example.1`, etc.).
- # - `[!...]`: Negates a range of characters to match in a path segment
- # (e.g., `example.[!0-9]` matches `example.a`, `example.b`, but not `example.0`).
- patterns = ["**/*"]
-
- # Commands to append to the original command list (e.g., ["-std=c++17"]).
- append = []
-
- # Commands to remove from the original command list.
- remove = []
+# Files matching the specified pattern will have this rule applied.
+#
+# Patterns can use the following syntax:
+# - `*`: Matches one or more characters in a path segment.
+# - `?`: Matches a single character in a path segment.
+# - `**`: Matches any number of path segments, including none.
+# - `{}`: Groups conditions (e.g., `**/*.{ts,js}` matches all TypeScript
+# and JavaScript files).
+# - `[]`: Declares a range of characters to match in a path segment
+# (e.g., `example.[0-9]` matches `example.0`, `example.1`, etc.).
+# - `[!...]`: Negates a range of characters to match in a path segment
+# (e.g., `example.[!0-9]` matches `example.a`, `example.b`, but not `example.0`).
+patterns = ["**/*"]
+# Commands to append to the original command list (e.g., ["-std=c++17"]).
+append = []
+# Commands to remove from the original command list.
+remove = []
diff --git a/docs/en/dev/contribution.md b/docs/en/dev/contribution.md
index 380f36d4c..1784bf5fa 100644
--- a/docs/en/dev/contribution.md
+++ b/docs/en/dev/contribution.md
@@ -7,5 +7,6 @@ Please refer to [build](./build.md) to build clice, refer to [test and debug](./
## Code Style
Naming:
+
- Variable names: lowercase with underscores
- Class names, enum names: PascalCase
diff --git a/docs/en/dev/test-and-debug.md b/docs/en/dev/test-and-debug.md
index 01bfdd317..f84676162 100644
--- a/docs/en/dev/test-and-debug.md
+++ b/docs/en/dev/test-and-debug.md
@@ -53,24 +53,24 @@ You can also connect to a running clice service by configuring the clice-vscode
```jsonc
{
- // Point this to the clice binary you downloaded.
- "clice.executable": "/path/to/your/clice/executable",
+ // Point this to the clice binary you downloaded.
+ "clice.executable": "/path/to/your/clice/executable",
- // Enable socket mode.
- "clice.mode": "socket",
- "clice.port": 50051,
+ // Enable socket mode.
+ "clice.mode": "socket",
+ "clice.port": 50051,
- // Optional: Set this to an empty string to turn off the clangd.
- "clangd.path": "",
+ // Optional: Set this to an empty string to turn off the clangd.
+ "clangd.path": "",
}
```
3. Reload Window: After modifying the configuration, execute the `Developer: Reload Window` command in VS Code for the settings to take effect. The extension will automatically connect to the clice instance listening on port 50051.
-
If you need to modify or debug the clice-vscode extension itself, follow these steps:
1. Clone and install dependencies:
+
```shell
$ git clone https://github.com/clice-io/clice-vscode
$ cd clice-vscode
diff --git a/docs/en/guide/configuration.md b/docs/en/guide/configuration.md
index 08213d090..7c784aa13 100644
--- a/docs/en/guide/configuration.md
+++ b/docs/en/guide/configuration.md
@@ -35,7 +35,7 @@ Glob patterns for matching file paths, following LSP's [standard](https://micros
- `{}`: Used for grouping conditions (e.g., `**/*.{ts,js}` matches all TypeScript and JavaScript files).
- `[]`: Declares a character range to match in a path segment (e.g., `example.[0-9]` matches `example.0`, `example.1`, etc.).
- `[!...]`: Excludes a character range to match in a path segment (e.g., `example.[!0-9]` matches `example.a`, `example.b`, but not `example.0`).
-
+
| Name | Type | Default |
| ---------------- | ------------------- | ------- |
diff --git a/docs/en/index.md b/docs/en/index.md
index d10ac223e..15120cfc4 100644
--- a/docs/en/index.md
+++ b/docs/en/index.md
@@ -16,8 +16,8 @@ hero:
text: Contribution
link: /dev/contribution
image:
- src: /image.png
- alt: clice
+ src: /image.png
+ alt: clice
features:
- icon: T
diff --git a/docs/zh/design/compilation.md b/docs/zh/design/compilation.md
index 3da791a95..c797811ed 100644
--- a/docs/zh/design/compilation.md
+++ b/docs/zh/design/compilation.md
@@ -16,5 +16,4 @@ int main () {
`iostream` 这个头文件大概有 2w 行代码,clice 会先把 `#include ` 这一行代码构建成 PCH 文件,在完成之后在使用这个 PCH 文件来解析后面的代码。这样的话后续重新解析的代码量就只剩 5 行了,而不是原本的 2w 行,速度会变得非常快。除非你修改了 preamble 部分的代码,导致需要构建新的 preamble。
-
## Cancel Compilation
diff --git a/docs/zh/design/template-resolver.md b/docs/zh/design/template-resolver.md
index 989026bdf..39da35e40 100644
--- a/docs/zh/design/template-resolver.md
+++ b/docs/zh/design/template-resolver.md
@@ -28,5 +28,4 @@ void foo(std::vector> vec2) {
2. 它只进行名称查找而不进行模板实例化,就算找到了最后的结果,也没法把它和最初的模板参数映射起来
3. 不考虑默认模板参数,无法处理由默认模板参数导致的依赖名
-
尽管我们可以对标准库的类型开洞来提供相关的支持,但是我希望用户的代码能和标准库的代码有相同的地位,那么我们就需要一种通用的算法来处理依赖类型。为了解决这个问题,我编写了一个伪实例化器(pseudo instantiator)。它能在没有具体类型的前提下对依赖类型进行实例化,从而达到化简的目的。比如上面这个例子里面的`std::vector>::reference`就能被化简为`std::vector&`,进一步就能为用户提供代码补全选项。
diff --git a/docs/zh/dev/build.md b/docs/zh/dev/build.md
index f1ff411a1..42e1bd165 100644
--- a/docs/zh/dev/build.md
+++ b/docs/zh/dev/build.md
@@ -54,7 +54,6 @@ xmake build --all
| --enable_test | false | 是否构建 clice 的单元测试 |
| --ci | false | 是否打开 `CLICE_CI_ENVIRONMENT` |
-
## A Note on LLVM Libs
由于 C++ 的语法太过复杂,自己编写一个新的 parser 是不现实的。clice 调用 clang 的 API 来 parse C++ 源文件获取 AST,这意味它需要链接 llvm/clang libs。由于 clice 使用了 clang 的私有头文件,这些私有头文件在 llvm 发布的 binary release 中是没有的,所以不能直接使用系统的 llvm package。
diff --git a/docs/zh/dev/contribution.md b/docs/zh/dev/contribution.md
index 1edc240fc..201b9005f 100644
--- a/docs/zh/dev/contribution.md
+++ b/docs/zh/dev/contribution.md
@@ -7,5 +7,6 @@
## Code Style
命名
+
- 变量名:小写下换线
- 类名,枚举名:大驼峰
diff --git a/docs/zh/dev/test-and-debug.md b/docs/zh/dev/test-and-debug.md
index 0ab430692..aae43fac6 100644
--- a/docs/zh/dev/test-and-debug.md
+++ b/docs/zh/dev/test-and-debug.md
@@ -51,31 +51,31 @@ $ pytest -s --log-cli-level=INFO tests/integration/test_file_operation.py::test_
2. 配置 `settings.json`: 在你的项目根目录下创建 `.vscode/settings.json` 文件,并填入以下内容:
- ```jsonc
- {
- // Point this to the clice binary you downloaded.
- "clice.executable": "/path/to/your/clice/executable",
+ ```jsonc
+ {
+ // Point this to the clice binary you downloaded.
+ "clice.executable": "/path/to/your/clice/executable",
- // Enable socket mode.
- "clice.mode": "socket",
- "clice.port": 50051,
+ // Enable socket mode.
+ "clice.mode": "socket",
+ "clice.port": 50051,
- // Optional: Set this to an empty string to turn off the clangd.
- "clangd.path": "",
- }
- ```
+ // Optional: Set this to an empty string to turn off the clangd.
+ "clangd.path": "",
+ }
+ ```
3. 重新加载窗口:修改配置后,在 vscode 中执行 Developer: Reload Window 命令使配置生效。插件会自动连接到正在 50051 端口监听的 clice。
-
如果你需要修改或调试 clice-vscode 插件本身,可以按以下步骤操作:
1. 克隆并安装依赖:
- ```shell
- $ git clone https://github.com/clice-io/clice-vscode
- $ cd clice-vscode
- $ npm install
- ```
+
+ ```shell
+ $ git clone https://github.com/clice-io/clice-vscode
+ $ cd clice-vscode
+ $ npm install
+ ```
2. 使用 vscode 打开插件项目:用一个新的 vscode 窗口打开 clice-vscode 文件夹
diff --git a/docs/zh/guide/configuration.md b/docs/zh/guide/configuration.md
index 02d53af76..8683a3b0b 100644
--- a/docs/zh/guide/configuration.md
+++ b/docs/zh/guide/configuration.md
@@ -35,7 +35,7 @@
- `{}`: 用于分组条件 (例如,`**/*.{ts,js}` 匹配所有 TypeScript 和 JavaScript 文件)。
- `[]`: 声明要匹配的路径段中的字符范围 (例如,`example.[0-9]` 匹配 `example.0`, `example.1` 等)。
- `[!...]`: 排除要匹配的路径段中的字符范围 (例如,`example.[!0-9]` 匹配 `example.a`, `example.b`,但不匹配 `example.0`)。
-
+
| 名称 | 类型 | 默认值 |
| ---------------- | ------------------- | ------ |
diff --git a/docs/zh/guide/quick-start.md b/docs/zh/guide/quick-start.md
index 121526002..04485d8a9 100644
--- a/docs/zh/guide/quick-start.md
+++ b/docs/zh/guide/quick-start.md
@@ -26,7 +26,6 @@ clice 实现了 [Language Server Protocol](https://microsoft.github.io/language-
自己从源码编译 clice,具体的步骤参考 [build](../dev/build.md)。
-
## Project Setup
为了让 clice 能正确理解你的代码(例如找到头文件的位置),需要为 clice 提供一份 `compile_commands.json` 文件,也就说所谓的 [编译数据库](https://clang.llvm.org/docs/JSONCompilationDatabase.html)。编译数据库中提供了每个源文件的编译选项。
diff --git a/docs/zh/index.md b/docs/zh/index.md
index 87ee49a1e..fbb6b03b1 100644
--- a/docs/zh/index.md
+++ b/docs/zh/index.md
@@ -16,8 +16,8 @@ hero:
text: 参与贡献
link: /zh/dev/contribution
image:
- src: /image.png
- alt: clice
+ src: /image.png
+ alt: clice
features:
- icon: T
diff --git a/editors/vscode/.eslintrc.json b/editors/vscode/.eslintrc.json
index c70bf00e5..bb8a00155 100644
--- a/editors/vscode/.eslintrc.json
+++ b/editors/vscode/.eslintrc.json
@@ -1,30 +1,24 @@
{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "ecmaVersion": 6,
- "sourceType": "module"
- },
- "plugins": [
- "@typescript-eslint"
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "ecmaVersion": 6,
+ "sourceType": "module"
+ },
+ "plugins": ["@typescript-eslint"],
+ "rules": {
+ "@typescript-eslint/naming-convention": [
+ "warn",
+ {
+ "selector": "import",
+ "format": ["camelCase", "PascalCase"]
+ }
],
- "rules": {
- "@typescript-eslint/naming-convention": [
- "warn",
- {
- "selector": "import",
- "format": [ "camelCase", "PascalCase" ]
- }
- ],
- "@typescript-eslint/semi": "warn",
- "curly": "warn",
- "eqeqeq": "warn",
- "no-throw-literal": "warn",
- "semi": "off"
- },
- "ignorePatterns": [
- "out",
- "dist",
- "**/*.d.ts"
- ]
+ "@typescript-eslint/semi": "warn",
+ "curly": "warn",
+ "eqeqeq": "warn",
+ "no-throw-literal": "warn",
+ "semi": "off"
+ },
+ "ignorePatterns": ["out", "dist", "**/*.d.ts"]
}
diff --git a/editors/vscode/.vscode/extensions.json b/editors/vscode/.vscode/extensions.json
index dd01eb355..9e5e0b733 100644
--- a/editors/vscode/.vscode/extensions.json
+++ b/editors/vscode/.vscode/extensions.json
@@ -1,5 +1,9 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
- "recommendations": ["dbaeumer.vscode-eslint", "amodio.tsl-problem-matcher", "ms-vscode.extension-test-runner"]
+ "recommendations": [
+ "dbaeumer.vscode-eslint",
+ "amodio.tsl-problem-matcher",
+ "ms-vscode.extension-test-runner"
+ ]
}
diff --git a/editors/vscode/.vscode/launch.json b/editors/vscode/.vscode/launch.json
index c42edc04b..ccdb134dc 100644
--- a/editors/vscode/.vscode/launch.json
+++ b/editors/vscode/.vscode/launch.json
@@ -3,19 +3,15 @@
// 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",
- "args": [
- "--extensionDevelopmentPath=${workspaceFolder}"
- ],
- "outFiles": [
- "${workspaceFolder}/dist/**/*.js"
- ],
- "preLaunchTask": "${defaultBuildTask}"
- }
- ]
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Run Extension",
+ "type": "extensionHost",
+ "request": "launch",
+ "args": ["--extensionDevelopmentPath=${workspaceFolder}"],
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"],
+ "preLaunchTask": "${defaultBuildTask}"
+ }
+ ]
}
diff --git a/editors/vscode/.vscode/settings.json b/editors/vscode/.vscode/settings.json
index 16a5c0229..64ee92966 100644
--- a/editors/vscode/.vscode/settings.json
+++ b/editors/vscode/.vscode/settings.json
@@ -1,13 +1,13 @@
// Place your settings in this file to overwrite default and user settings.
{
- "files.exclude": {
- "out": false, // set this to true to hide the "out" folder with the compiled JS files
- "dist": false // set this to true to hide the "dist" folder with the compiled JS files
- },
- "search.exclude": {
- "out": true, // set this to false to include "out" folder in search results
- "dist": true // set this to false to include "dist" folder in search results
- },
- // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
- "typescript.tsc.autoDetect": "off"
+ "files.exclude": {
+ "out": false, // set this to true to hide the "out" folder with the compiled JS files
+ "dist": false // set this to true to hide the "dist" folder with the compiled JS files
+ },
+ "search.exclude": {
+ "out": true, // set this to false to include "out" folder in search results
+ "dist": true // set this to false to include "dist" folder in search results
+ },
+ // Turn off tsc task auto detection since we have the necessary tasks as npm scripts
+ "typescript.tsc.autoDetect": "off"
}
diff --git a/editors/vscode/.vscode/tasks.json b/editors/vscode/.vscode/tasks.json
index c2ab68aed..9e3300b04 100644
--- a/editors/vscode/.vscode/tasks.json
+++ b/editors/vscode/.vscode/tasks.json
@@ -1,40 +1,37 @@
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
- "version": "2.0.0",
- "tasks": [
- {
- "type": "npm",
- "script": "watch",
- "problemMatcher": "$ts-webpack-watch",
- "isBackground": true,
- "presentation": {
- "reveal": "never",
- "group": "watchers"
- },
- "group": {
- "kind": "build",
- "isDefault": true
- }
- },
- {
- "type": "npm",
- "script": "watch-tests",
- "problemMatcher": "$tsc-watch",
- "isBackground": true,
- "presentation": {
- "reveal": "never",
- "group": "watchers"
- },
- "group": "build"
- },
- {
- "label": "tasks: watch-tests",
- "dependsOn": [
- "npm: watch",
- "npm: watch-tests"
- ],
- "problemMatcher": []
- }
- ]
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "npm",
+ "script": "watch",
+ "problemMatcher": "$ts-webpack-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never",
+ "group": "watchers"
+ },
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ },
+ {
+ "type": "npm",
+ "script": "watch-tests",
+ "problemMatcher": "$tsc-watch",
+ "isBackground": true,
+ "presentation": {
+ "reveal": "never",
+ "group": "watchers"
+ },
+ "group": "build"
+ },
+ {
+ "label": "tasks: watch-tests",
+ "dependsOn": ["npm: watch", "npm: watch-tests"],
+ "problemMatcher": []
+ }
+ ]
}
diff --git a/editors/vscode/src/download.ts b/editors/vscode/src/download.ts
index 4160eee0b..0997e1e62 100644
--- a/editors/vscode/src/download.ts
+++ b/editors/vscode/src/download.ts
@@ -1,10 +1,10 @@
-import * as vscode from 'vscode';
-import * as fs from 'fs';
-import * as path from 'path';
-import * as https from 'https';
-import * as os from 'os';
+import * as vscode from "vscode";
+import * as fs from "fs";
+import * as path from "path";
+import * as https from "https";
+import * as os from "os";
// @ts-ignore
-import decompress = require('decompress');
+import decompress = require("decompress");
interface GitHubRelease {
tag_name: string;
@@ -14,12 +14,10 @@ interface GitHubRelease {
}[];
}
-
export async function ensureServerBinary(
context: vscode.ExtensionContext,
- channel: vscode.OutputChannel
+ channel: vscode.OutputChannel,
): Promise {
-
const storagePath = context.globalStorageUri.fsPath;
const platform = os.platform();
const arch = os.arch();
@@ -27,20 +25,20 @@ export async function ensureServerBinary(
channel.appendLine(`[Download] Initializing clice downloader...`);
channel.appendLine(`[Download] Platform: ${platform}, Arch: ${arch}, Storage: ${storagePath}`);
- let platformKeyword = '';
- let archKeyword = '';
- let binaryName = 'clice';
+ let platformKeyword = "";
+ let archKeyword = "";
+ let binaryName = "clice";
- if (platform === 'win32') {
- platformKeyword = 'windows';
- archKeyword = 'x64';
- binaryName = 'clice.exe';
- } else if (platform === 'darwin') {
- platformKeyword = 'macos';
+ if (platform === "win32") {
+ platformKeyword = "windows";
+ archKeyword = "x64";
+ binaryName = "clice.exe";
+ } else if (platform === "darwin") {
+ platformKeyword = "macos";
archKeyword = arch;
- } else if (platform === 'linux') {
- platformKeyword = 'linux';
- archKeyword = arch === 'x64' ? 'x86_64' : arch;
+ } else if (platform === "linux") {
+ platformKeyword = "linux";
+ archKeyword = arch === "x64" ? "x86_64" : arch;
} else {
const msg = `Unsupported platform: ${platform}`;
channel.appendLine(`[Download] Error: ${msg}`);
@@ -71,15 +69,19 @@ export async function ensureServerBinary(
const release = await fetchReleaseInfo(channel);
channel.appendLine(`[Download] Latest tag: ${release.tag_name}`);
- const asset = release.assets.find(a => {
+ const asset = release.assets.find((a) => {
const name = a.name.toLowerCase();
- return name.includes(platformKeyword) &&
+ return (
+ name.includes(platformKeyword) &&
name.includes(archKeyword) &&
- !name.includes('symbol');
+ !name.includes("symbol")
+ );
});
if (!asset) {
- throw new Error(`No compatible asset found for ${platform}-${archKeyword} in release ${release.tag_name}`);
+ throw new Error(
+ `No compatible asset found for ${platform}-${archKeyword} in release ${release.tag_name}`,
+ );
}
channel.appendLine(`[Download] Found asset: ${asset.name}`);
@@ -103,15 +105,16 @@ export async function ensureServerBinary(
throw new Error(`Executable not found at ${executablePath} after extraction.`);
}
- if (platform !== 'win32') {
+ if (platform !== "win32") {
channel.appendLine(`[Download] Setting executable permissions (chmod 755)...`);
- fs.chmodSync(executablePath, '755');
+ fs.chmodSync(executablePath, "755");
}
channel.appendLine(`[Download] Setup successful. Binary ready at: ${executablePath}`);
- vscode.window.showInformationMessage(`Clice language server updated to ${release.tag_name}`);
+ vscode.window.showInformationMessage(
+ `Clice language server updated to ${release.tag_name}`,
+ );
return executablePath;
-
} catch (error) {
channel.appendLine(`[Download] CRITICAL ERROR during setup:`);
if (error instanceof Error) {
@@ -123,11 +126,16 @@ export async function ensureServerBinary(
channel.appendLine(`[Download] Unknown error: ${JSON.stringify(error)}`);
}
- vscode.window.showErrorMessage(`Failed to download clice server. Check "clice" output channel for details.`, "Open Output").then(selection => {
- if (selection === "Open Output") {
- channel.show();
- }
- });
+ vscode.window
+ .showErrorMessage(
+ `Failed to download clice server. Check "clice" output channel for details.`,
+ "Open Output",
+ )
+ .then((selection) => {
+ if (selection === "Open Output") {
+ channel.show();
+ }
+ });
return undefined;
} finally {
@@ -135,60 +143,73 @@ export async function ensureServerBinary(
}
}
-function downloadFile(url: string, destPath: string, channel: vscode.OutputChannel, maxRedirects = 5): Promise {
+function downloadFile(
+ url: string,
+ destPath: string,
+ channel: vscode.OutputChannel,
+ maxRedirects = 5,
+): Promise {
return new Promise((resolve, reject) => {
if (maxRedirects <= 0) {
- reject(new Error('Too many redirects'));
+ reject(new Error("Too many redirects"));
return;
}
const file = fs.createWriteStream(destPath);
channel.appendLine(`[Download] Start downloading to ${destPath}`);
- https.get(url, { headers: { 'User-Agent': 'VSCode-Extension' } }, (response) => {
- if (response.statusCode === 302 || response.statusCode === 301) {
- channel.appendLine(`[Download] Redirecting to ${response.headers.location}`);
- file.close();
- downloadFile(response.headers.location!, destPath, channel, maxRedirects - 1).then(resolve).catch(reject);
- return;
- }
- if (response.statusCode !== 200) {
- reject(new Error(`Download failed with status code ${response.statusCode}`));
- return;
- }
+ https
+ .get(url, { headers: { "User-Agent": "VSCode-Extension" } }, (response) => {
+ if (response.statusCode === 302 || response.statusCode === 301) {
+ channel.appendLine(`[Download] Redirecting to ${response.headers.location}`);
+ file.close();
+ downloadFile(response.headers.location!, destPath, channel, maxRedirects - 1)
+ .then(resolve)
+ .catch(reject);
+ return;
+ }
+ if (response.statusCode !== 200) {
+ reject(new Error(`Download failed with status code ${response.statusCode}`));
+ return;
+ }
- response.pipe(file);
- file.on('finish', () => {
+ response.pipe(file);
+ file.on("finish", () => {
+ file.close();
+ channel.appendLine(`[Download] Download finished.`);
+ resolve();
+ });
+ })
+ .on("error", (err) => {
file.close();
- channel.appendLine(`[Download] Download finished.`);
- resolve();
+ fs.unlink(destPath, () => {});
+ reject(err);
});
- }).on('error', (err) => {
- file.close();
- fs.unlink(destPath, () => { });
- reject(err);
- });
});
}
async function fetchReleaseInfo(channel: vscode.OutputChannel): Promise {
try {
- channel.appendLine('[Download] Attempting to fetch latest stable release...');
- const release = await fetchJson('/repos/clice-io/clice/releases/latest');
+ channel.appendLine("[Download] Attempting to fetch latest stable release...");
+ const release = await fetchJson("/repos/clice-io/clice/releases/latest");
channel.appendLine(`[Download] Found stable release: ${release.tag_name}`);
return release;
} catch (error: any) {
- if (error.message && error.message.includes('404')) {
- channel.appendLine('[Download] Latest stable release not found (404). Checking for pre-releases...');
+ if (error.message && error.message.includes("404")) {
+ channel.appendLine(
+ "[Download] Latest stable release not found (404). Checking for pre-releases...",
+ );
- const releases = await fetchJson('/repos/clice-io/clice/releases?per_page=1');
+ const releases = await fetchJson(
+ "/repos/clice-io/clice/releases?per_page=1",
+ );
if (Array.isArray(releases) && releases.length > 0) {
const latestPre = releases[0];
channel.appendLine(`[Download] Found pre-release: ${latestPre.tag_name}`);
return latestPre;
} else {
- throw new Error('No releases found in repository.');
+ throw new Error("No releases found in repository.");
}
}
throw error;
@@ -198,27 +219,29 @@ async function fetchReleaseInfo(channel: vscode.OutputChannel): Promise(apiPath: string): Promise {
return new Promise((resolve, reject) => {
const options = {
- hostname: 'api.github.com',
+ hostname: "api.github.com",
path: apiPath,
- headers: { 'User-Agent': 'VSCode-Extension' }
+ headers: { "User-Agent": "VSCode-Extension" },
};
- https.get(options, (res) => {
- let data = '';
- if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
- res.resume();
- reject(new Error(`GitHub API returned ${res.statusCode} for ${apiPath}`));
- return;
- }
-
- res.on('data', (chunk) => data += chunk);
- res.on('end', () => {
- try {
- resolve(JSON.parse(data));
- } catch (e) {
- reject(new Error(`Failed to parse GitHub API response: ${e}`));
+ https
+ .get(options, (res) => {
+ let data = "";
+ if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
+ res.resume();
+ reject(new Error(`GitHub API returned ${res.statusCode} for ${apiPath}`));
+ return;
}
- });
- }).on('error', reject);
+
+ res.on("data", (chunk) => (data += chunk));
+ res.on("end", () => {
+ try {
+ resolve(JSON.parse(data));
+ } catch (e) {
+ reject(new Error(`Failed to parse GitHub API response: ${e}`));
+ }
+ });
+ })
+ .on("error", reject);
});
}
diff --git a/editors/vscode/src/extension.ts b/editors/vscode/src/extension.ts
index 2d9b45563..62f421cb7 100644
--- a/editors/vscode/src/extension.ts
+++ b/editors/vscode/src/extension.ts
@@ -1,93 +1,95 @@
-import * as net from 'net';
-import * as vscode from 'vscode';
-import { workspace, window, ExtensionContext } from 'vscode';
-import { LanguageClient, LanguageClientOptions, ServerOptions, StreamInfo } from 'vscode-languageclient/node';
-import { getSetting } from './setting';
-import { ensureServerBinary } from './download'
+import * as net from "net";
+import * as vscode from "vscode";
+import { workspace, window, ExtensionContext } from "vscode";
+import {
+ LanguageClient,
+ LanguageClientOptions,
+ ServerOptions,
+ StreamInfo,
+} from "vscode-languageclient/node";
+import { getSetting } from "./setting";
+import { ensureServerBinary } from "./download";
let client: LanguageClient;
export async function registerCommands(client: LanguageClient, context: ExtensionContext) {
- context.subscriptions.push(vscode.commands.registerCommand("clice.restart", async () => {
- await client.restart();
- }));
+ context.subscriptions.push(
+ vscode.commands.registerCommand("clice.restart", async () => {
+ await client.restart();
+ }),
+ );
}
export async function activate(context: ExtensionContext) {
- console.log('Congratulations, your extension "clice" is now active!');
+ console.log('Congratulations, your extension "clice" is now active!');
- const channel = window.createOutputChannel('clice');
- const verboseChannel = window.createOutputChannel('clice-verbose');
+ const channel = window.createOutputChannel("clice");
+ const verboseChannel = window.createOutputChannel("clice-verbose");
- const setting = getSetting();
- if (!setting) {
- return;
- }
+ const setting = getSetting();
+ if (!setting) {
+ return;
+ }
- let executable = setting.executable
- let serverOptions: ServerOptions | (() => Promise);
+ let executable = setting.executable;
+ let serverOptions: ServerOptions | (() => Promise);
- if (setting.mode === "pipe") {
- if (!executable || executable === "") {
- const downloadedPath = await ensureServerBinary(context, channel);
- if (downloadedPath) {
- executable = downloadedPath;
- } else {
- window.showErrorMessage("Could not find or download clice executable.");
- return;
- }
- }
+ if (setting.mode === "pipe") {
+ if (!executable || executable === "") {
+ const downloadedPath = await ensureServerBinary(context, channel);
+ if (downloadedPath) {
+ executable = downloadedPath;
+ } else {
+ window.showErrorMessage("Could not find or download clice executable.");
+ return;
+ }
+ }
- let args = ["--mode=pipe"];
- serverOptions = {
- run: { command: executable, args: args },
- debug: { command: executable, args: args }
- };
- } else if (setting.mode === "socket") {
- serverOptions = (): Promise => {
- return new Promise((resolve, reject) => {
- const client = new net.Socket();
- client.connect(setting.port, setting.host, () => {
- resolve({
- reader: client,
- writer: client,
- });
- });
- client.on('error', (error) => {
- reject(error);
- });
- });
- };
- } else {
- vscode.window.showErrorMessage("Invalid mode, please set the mode to 'pipe' or 'socket'.");
- return
- }
+ let args = ["--mode=pipe"];
+ serverOptions = {
+ run: { command: executable, args: args },
+ debug: { command: executable, args: args },
+ };
+ } else if (setting.mode === "socket") {
+ serverOptions = (): Promise => {
+ return new Promise((resolve, reject) => {
+ const client = new net.Socket();
+ client.connect(setting.port, setting.host, () => {
+ resolve({
+ reader: client,
+ writer: client,
+ });
+ });
+ client.on("error", (error) => {
+ reject(error);
+ });
+ });
+ };
+ } else {
+ vscode.window.showErrorMessage("Invalid mode, please set the mode to 'pipe' or 'socket'.");
+ return;
+ }
- const clientOptions: LanguageClientOptions = {
- documentSelector: [{ scheme: 'file', language: 'cpp' }],
- outputChannel: channel,
- traceOutputChannel: verboseChannel,
- synchronize: {
- fileEvents: workspace.createFileSystemWatcher('**/.clientrc')
- }
- };
+ const clientOptions: LanguageClientOptions = {
+ documentSelector: [{ scheme: "file", language: "cpp" }],
+ outputChannel: channel,
+ traceOutputChannel: verboseChannel,
+ synchronize: {
+ fileEvents: workspace.createFileSystemWatcher("**/.clientrc"),
+ },
+ };
- client = new LanguageClient(
- 'clice',
- 'clice',
- serverOptions,
- clientOptions
- );
+ client = new LanguageClient("clice", "clice", serverOptions, clientOptions);
- await registerCommands(client, context);
+ await registerCommands(client, context);
- await client.start();
+ await client.start();
}
export function deactivate(): Thenable | undefined {
- if (!client) {
- return undefined;
- }
- let ret = client.stop();
- return ret;
+ if (!client) {
+ return undefined;
+ }
+ let ret = client.stop();
+ return ret;
}
diff --git a/editors/vscode/src/feature/header.ts b/editors/vscode/src/feature/header.ts
index 04b514f91..06dffb21a 100644
--- a/editors/vscode/src/feature/header.ts
+++ b/editors/vscode/src/feature/header.ts
@@ -1,35 +1,37 @@
-import * as vscode from 'vscode';
-import { DocumentUri } from 'vscode-languageclient/node';
+import * as vscode from "vscode";
+import { DocumentUri } from "vscode-languageclient/node";
let provider: HeaderContextProvider | undefined = undefined;
export type HeaderContext = {
- file: string,
- index: number,
- include: number
+ file: string;
+ index: number;
+ include: number;
};
export type HeaderContextSwitchParams = {
- header: DocumentUri,
- context: HeaderContext,
+ header: DocumentUri;
+ context: HeaderContext;
};
export type IncludeLocation = {
- line: number,
- filename: string
+ line: number;
+ filename: string;
};
export class TreeItem extends vscode.TreeItem {
- children: Array = []
+ children: Array = [];
context: HeaderContext | undefined = undefined;
-};
+}
export class HeaderContextProvider implements vscode.TreeDataProvider {
- private _onDidChangeTreeData: vscode.EventEmitter = new vscode.EventEmitter();
- readonly onDidChangeTreeData: vscode.Event = this._onDidChangeTreeData.event;
+ private _onDidChangeTreeData: vscode.EventEmitter =
+ new vscode.EventEmitter();
+ readonly onDidChangeTreeData: vscode.Event =
+ this._onDidChangeTreeData.event;
- header: string = ""
- items: Array = []
+ header: string = "";
+ items: Array = [];
update(contexts: Array>) {
/// Create groups
@@ -60,11 +62,11 @@ export class HeaderContextProvider implements vscode.TreeDataProvider
getChildren(element?: TreeItem) {
return element ? element.children : this.items;
}
-};
-
-
+}
export function registerHeaderContextView() {
provider = new HeaderContextProvider();
- let treeView = vscode.window.createTreeView("header-contexts", { treeDataProvider: provider });
+ let treeView = vscode.window.createTreeView("header-contexts", {
+ treeDataProvider: provider,
+ });
}
diff --git a/editors/vscode/src/feature/highlight.ts b/editors/vscode/src/feature/highlight.ts
index bd2fb83e9..62a604747 100644
--- a/editors/vscode/src/feature/highlight.ts
+++ b/editors/vscode/src/feature/highlight.ts
@@ -1,28 +1,28 @@
-import * as vscode from 'vscode';
+import * as vscode from "vscode";
-const rainbowColors = [
- "#56B6C2",
- "#61AFEF",
- "#C678DD",
- "#E06C75",
- "#98C379",
- "#D19A66",
- "#E5C07B"
-];
+const rainbowColors = ["#56B6C2", "#61AFEF", "#C678DD", "#E06C75", "#98C379", "#D19A66", "#E5C07B"];
const textEditorDecorationTypes = rainbowColors.map((color) => {
return vscode.window.createTextEditorDecorationType({
- color: color
+ color: color,
});
});
-export function highlightDocument(document: vscode.TextDocument, legend: vscode.SemanticTokensLegend, semanticTokens: vscode.SemanticTokens) {
+export function highlightDocument(
+ document: vscode.TextDocument,
+ legend: vscode.SemanticTokensLegend,
+ semanticTokens: vscode.SemanticTokens,
+) {
const editor = vscode.window.activeTextEditor;
- if (!editor || editor.document !== document) { return; }
- const angleIndex = legend?.tokenTypes.indexOf('angle');
- const leftIndex = legend?.tokenModifiers.indexOf('left');
- const rightIndex = legend?.tokenModifiers.indexOf('right');
- if (leftIndex === undefined || rightIndex === undefined || angleIndex === undefined) { return; }
+ if (!editor || editor.document !== document) {
+ return;
+ }
+ const angleIndex = legend?.tokenTypes.indexOf("angle");
+ const leftIndex = legend?.tokenModifiers.indexOf("left");
+ const rightIndex = legend?.tokenModifiers.indexOf("right");
+ if (leftIndex === undefined || rightIndex === undefined || angleIndex === undefined) {
+ return;
+ }
const decorations = new Map();
let level = 0;
@@ -32,7 +32,8 @@ export function highlightDocument(document: vscode.TextDocument, legend: vscode.
// [line, startCharacter, length, tokenType, tokenModifiers]
for (let i = 0; i < semanticTokens.data.length; i += 5) {
- const [lineDelta, startDelta, length, tokenType, tokenModifiers] = semanticTokens.data.slice(i, i + 5);
+ const [lineDelta, startDelta, length, tokenType, tokenModifiers] =
+ semanticTokens.data.slice(i, i + 5);
lastLine += lineDelta;
lastStart = lineDelta === 0 ? lastStart + startDelta : startDelta;
@@ -52,15 +53,11 @@ export function highlightDocument(document: vscode.TextDocument, legend: vscode.
if (tokenModifiers & (1 << leftIndex)) {
level += 1;
-
}
}
}
for (const [level, ranges] of decorations) {
- editor.setDecorations(
- textEditorDecorationTypes[level],
- ranges
- );
+ editor.setDecorations(textEditorDecorationTypes[level], ranges);
}
}
diff --git a/editors/vscode/src/setting.ts b/editors/vscode/src/setting.ts
index 6467bda77..54f553d05 100644
--- a/editors/vscode/src/setting.ts
+++ b/editors/vscode/src/setting.ts
@@ -1,31 +1,34 @@
-import * as vscode from 'vscode';
+import * as vscode from "vscode";
interface Setting {
- executable: string | undefined,
- mode: string,
- host: string,
- port: number,
+ executable: string | undefined;
+ mode: string;
+ host: string;
+ port: number;
}
export function getSetting(): Setting | undefined {
- const setting = vscode.workspace.getConfiguration('clice')
- const executable = setting.get('executable');
- const mode = setting.get('mode');
+ const setting = vscode.workspace.getConfiguration("clice");
+ const executable = setting.get("executable");
+ const mode = setting.get("mode");
if (mode !== "pipe" && mode !== "socket") {
vscode.window.showErrorMessage(`Unexpected mode: ${mode}`);
- return undefined
+ return undefined;
}
- const host = setting.get('host')!;
- const port = setting.get('port')!;
+ const host = setting.get("host")!;
+ const port = setting.get("port")!;
if (mode === "socket" && (!host || !port)) {
- vscode.window.showErrorMessage('Socket mode requires both host and port to be configured.');
+ vscode.window.showErrorMessage("Socket mode requires both host and port to be configured.");
return undefined;
}
return {
- executable, mode, host, port,
- }
+ executable,
+ mode,
+ host,
+ port,
+ };
}
diff --git a/editors/vscode/src/test/extension.test.ts b/editors/vscode/src/test/extension.test.ts
index 4ca0ab419..8bcfbcdb7 100644
--- a/editors/vscode/src/test/extension.test.ts
+++ b/editors/vscode/src/test/extension.test.ts
@@ -1,15 +1,15 @@
-import * as assert from 'assert';
+import * as assert from "assert";
// You can import and use all API from the 'vscode' module
// as well as import your extension to test it
-import * as vscode from 'vscode';
+import * as vscode from "vscode";
// import * as myExtension from '../../extension';
-suite('Extension Test Suite', () => {
- vscode.window.showInformationMessage('Start all tests.');
+suite("Extension Test Suite", () => {
+ vscode.window.showInformationMessage("Start all tests.");
- test('Sample test', () => {
- assert.strictEqual(-1, [1, 2, 3].indexOf(5));
- assert.strictEqual(-1, [1, 2, 3].indexOf(0));
- });
+ test("Sample test", () => {
+ assert.strictEqual(-1, [1, 2, 3].indexOf(5));
+ assert.strictEqual(-1, [1, 2, 3].indexOf(0));
+ });
});
diff --git a/editors/vscode/tsconfig.json b/editors/vscode/tsconfig.json
index 8a79f20f5..bb686be9e 100644
--- a/editors/vscode/tsconfig.json
+++ b/editors/vscode/tsconfig.json
@@ -1,16 +1,14 @@
{
- "compilerOptions": {
- "module": "Node16",
- "target": "ES2022",
- "lib": [
- "ES2022"
- ],
- "sourceMap": true,
- "rootDir": "src",
- "strict": true /* enable all strict type-checking options */
- /* Additional Checks */
- // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
- // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
- // "noUnusedParameters": true, /* Report errors on unused parameters. */
- }
+ "compilerOptions": {
+ "module": "Node16",
+ "target": "ES2022",
+ "lib": ["ES2022"],
+ "sourceMap": true,
+ "rootDir": "src",
+ "strict": true /* enable all strict type-checking options */
+ /* Additional Checks */
+ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
+ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
+ // "noUnusedParameters": true, /* Report errors on unused parameters. */
+ }
}
diff --git a/editors/vscode/webpack.config.js b/editors/vscode/webpack.config.js
index 9a1604475..5b6ec10ce 100644
--- a/editors/vscode/webpack.config.js
+++ b/editors/vscode/webpack.config.js
@@ -1,48 +1,48 @@
//@ts-check
-'use strict';
+"use strict";
-const path = require('path');
+const path = require("path");
//@ts-check
/** @typedef {import('webpack').Configuration} WebpackConfig **/
/** @type WebpackConfig */
const extensionConfig = {
- target: 'node', // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/
- mode: 'none', // this leaves the source code as close as possible to the original (when packaging we set this to 'production')
+ target: "node", // VS Code extensions run in a Node.js-context 📖 -> https://webpack.js.org/configuration/node/
+ mode: "none", // this leaves the source code as close as possible to the original (when packaging we set this to 'production')
- entry: './src/extension.ts', // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
- output: {
- // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
- path: path.resolve(__dirname, 'dist'),
- filename: 'extension.js',
- libraryTarget: 'commonjs2'
- },
- externals: {
- vscode: 'commonjs vscode' // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
- // modules added here also need to be added in the .vscodeignore file
- },
- resolve: {
- // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
- extensions: ['.ts', '.js']
- },
- module: {
- rules: [
- {
- test: /\.ts$/,
- exclude: /node_modules/,
- use: [
- {
- loader: 'ts-loader'
- }
- ]
- }
- ]
- },
- devtool: 'nosources-source-map',
- infrastructureLogging: {
- level: "log", // enables logging required for problem matchers
- },
+ entry: "./src/extension.ts", // the entry point of this extension, 📖 -> https://webpack.js.org/configuration/entry-context/
+ output: {
+ // the bundle is stored in the 'dist' folder (check package.json), 📖 -> https://webpack.js.org/configuration/output/
+ path: path.resolve(__dirname, "dist"),
+ filename: "extension.js",
+ libraryTarget: "commonjs2",
+ },
+ externals: {
+ vscode: "commonjs vscode", // the vscode-module is created on-the-fly and must be excluded. Add other modules that cannot be webpack'ed, 📖 -> https://webpack.js.org/configuration/externals/
+ // modules added here also need to be added in the .vscodeignore file
+ },
+ resolve: {
+ // support reading TypeScript and JavaScript files, 📖 -> https://github.com/TypeStrong/ts-loader
+ extensions: [".ts", ".js"],
+ },
+ module: {
+ rules: [
+ {
+ test: /\.ts$/,
+ exclude: /node_modules/,
+ use: [
+ {
+ loader: "ts-loader",
+ },
+ ],
+ },
+ ],
+ },
+ devtool: "nosources-source-map",
+ infrastructureLogging: {
+ level: "log", // enables logging required for problem matchers
+ },
};
-module.exports = [ extensionConfig ];
+module.exports = [extensionConfig];
diff --git a/editors/zed/Cargo.toml b/editors/zed/Cargo.toml
index 09aaf32fc..80071f3e8 100644
--- a/editors/zed/Cargo.toml
+++ b/editors/zed/Cargo.toml
@@ -2,12 +2,12 @@
name = "zed_clice"
version = "0.1.0"
edition = "2021"
-publish = false
license = "MIT"
+publish = false
[lib]
-path = "src/clice.rs"
crate-type = ["cdylib"]
+path = "src/clice.rs"
[dependencies]
zed_extension_api = "0.1.0"
diff --git a/pixi.lock b/pixi.lock
index f49d7723a..6009c0009 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -216,21 +216,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
osx-arm64:
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
@@ -275,21 +266,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
win-64:
- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda
@@ -326,22 +308,190 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
+ format:
+ channels:
+ - url: https://conda.anaconda.org/conda-forge/
+ options:
+ pypi-prerelease-mode: if-necessary-or-explicit
+ packages:
+ linux-64:
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45-default_hfdba357_105.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20-20.1.8-default_h99862b1_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20.1.8-default_h36abe19_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.7-default_h99862b1_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.7-default_h99862b1_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-20.1.8-default_h363a0c9_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-4.2.1-hc85cc9f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-20.1.8-hb700be7_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-20.1.8-hffcefe0_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/fd-find-10.3.0-hdab8a38_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.2.0-h96c4ede_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.2.0-hdb7739f_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.2.0-h96c4ede_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.2.0-h2ead766_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.8-default_h99862b1_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.7-default_h99862b1_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.2.0-h9c4974d_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.8-hf7376ad_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.2.0-hed042b8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-h0c1763c_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.2.0-h9c4974d_102.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/lld-20.1.8-hef48ded_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-tools-20-20.1.8-h3b15d91_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-tools-20.1.8-hb700be7_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.21.1-h4a9c4b4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.7.4-h4c22ac6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.14.2-h32b2ec7_100_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/stylua-2.3.1-hb17b654_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tombi-0.7.12-hb17b654_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
+ osx-arm64:
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.8-default_h73dfc95_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.8-default_hf9bcbb7_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-21-21.1.7-default_hf3020a7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-21.1.7-default_hf3020a7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.8-default_h36137df_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-4.2.1-h54ad630_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-20.1.8-h855ad52_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-20.1.8-he32a8d3_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fd-find-10.3.0-h0ca00b2_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp20.1-20.1.8-default_h73dfc95_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp21.1-21.1.7-default_hf3020a7_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.17.0-hdece5d2_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.8-h6dc3340_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-20.1.8-h707e725_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm20-20.1.8-h8e0c9ce_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm21-21.1.8-h8e0c9ce_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.51.0-h6caf38d_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lld-20.1.8-ha4b1419_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20-20.1.8-h91fd4e7_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20.1.8-h855ad52_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.13.2-h49c215f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-22.21.1-hf2fe37f_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.7.4-h79221d7_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.2-h40d2674_100_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.6-h5505292_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/stylua-2.3.1-h8d80559_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tombi-0.7.12-h6fdd925_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
+ win-64:
+ - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/clang-20-20.1.8-default_hac490eb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/clang-20.1.8-default_hac490eb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/clang-format-21.1.7-default_hac490eb_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/clangxx-20.1.8-default_hac490eb_5.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-4.2.1-hdcbee5b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/compiler-rt-20.1.8-h49e36cd_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_win-64-20.1.8-h49e36cd_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/fd-find-10.3.0-h77a83cd_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.1-h637d24d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.17.0-h43ecb02_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libllvm20-20.1.8-h830ff33_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.51.0-hfd05255_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/lld-20.1.8-hc465015_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-tools-20.1.8-h752b59f_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.13.2-h477610d_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/nodejs-22.21.1-he453025_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/prettier-3.7.4-hc95d2ff_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.14.2-h4b44e0e_100_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/stylua-2.3.1-h18a1a76_1.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/tombi-0.7.12-h18a1a76_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-h8577fbf_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_33.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_33.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_33.conda
+ - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda
package:
channels:
- url: https://conda.anaconda.org/conda-forge/
@@ -415,21 +565,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda
- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
osx-arm64:
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda
@@ -478,21 +619,12 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.1-h9a6d368_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.1-h39f12f2_2.conda
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
win-64:
- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda
- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.11.12-h4c7d964_0.conda
@@ -532,22 +664,13 @@ environments:
- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.1-h208afaa_2.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.1-h2466b09_2.conda
- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda
- - pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl
- - pypi: https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl
- - pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
packages:
- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
@@ -582,6 +705,16 @@ packages:
purls: []
size: 3747046
timestamp: 1764007847963
+- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45-default_hfdba357_105.conda
+ sha256: 17fbb32191430310d3eb8309f80a8df54f0d66eda9cf84b2ae5113e6d74e24d8
+ md5: e410a8f80e22eb6d840e39ac6a34bd0e
+ depends:
+ - ld_impl_linux-64 2.45 default_hbd61a6d_105
+ - sysroot_linux-64
+ - zstd >=1.5.7,<1.6.0a0
+ license: GPL-3.0-only
+ size: 3719982
+ timestamp: 1766513109980
- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda
sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5
md5: 51a19bba1b8ebfb60df25cde030b7ebc
@@ -654,11 +787,6 @@ packages:
purls: []
size: 152432
timestamp: 1762967197890
-- pypi: https://files.pythonhosted.org/packages/db/3c/33bac158f8ab7f89b2e59426d5fe2e4f63f7ed25df84c036890172b412b5/cfgv-3.5.0-py2.py3-none-any.whl
- name: cfgv
- version: 3.5.0
- sha256: a8dc6b26ad22ff227d2634a65cb388215ce6cc96bbcc5cfde7641ae87e8dacc0
- requires_python: '>=3.10'
- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-20.1.8-default_h36abe19_5.conda
sha256: dfce7b8de6be7a988dab1092e2ad54fc544a572cc5ac7df28f8f48ab409814bc
md5: b6ab4982173dcae265d545bec3a76a6c
@@ -738,6 +866,69 @@ packages:
purls: []
size: 73427981
timestamp: 1764398987103
+- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.7-default_h99862b1_2.conda
+ sha256: 8a9c2e0df0fd55da3ea9352fc356d1ca9d9312bbf275e1a5e22552bfb63affb9
+ md5: 8e0b6ced8948217e4748ad0c26f8df4d
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - clang-format-21 21.1.7 default_h99862b1_2
+ - libclang-cpp21.1 >=21.1.7,<21.2.0a0
+ - libgcc >=14
+ - libllvm21 >=21.1.7,<21.2.0a0
+ - libstdcxx >=14
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 27733
+ timestamp: 1766016586518
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-21.1.7-default_hf3020a7_2.conda
+ sha256: 2b91ed7e567a1618fd342100ba43bcd670bff8a1183a5c65032cefc0a436d3d6
+ md5: 37585890edaa4842a62037a7fa6e1e64
+ depends:
+ - __osx >=11.0
+ - clang-format-21 21.1.7 default_hf3020a7_2
+ - libclang-cpp21.1 >=21.1.7,<21.2.0a0
+ - libcxx >=21.1.7
+ - libllvm21 >=21.1.7,<21.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 28328
+ timestamp: 1766167306042
+- conda: https://conda.anaconda.org/conda-forge/win-64/clang-format-21.1.7-default_hac490eb_2.conda
+ sha256: afa22671525e890a98445d1c2abc35e8b87c4c208d053e6527c5d2cbf6f7c938
+ md5: 8afc1288250ef6c77e8f7aa0df683a65
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 1233929
+ timestamp: 1766022144370
+- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.7-default_h99862b1_2.conda
+ sha256: 4d360c464ddab6c47c8fceca87b625b58d6a3b3cd523958a314e8db7d5f4eb94
+ md5: 5589c06b39ae5be8aca4d16e28a43518
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libclang-cpp21.1 >=21.1.7,<21.2.0a0
+ - libgcc >=14
+ - libllvm21 >=21.1.7,<21.2.0a0
+ - libstdcxx >=14
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 70516
+ timestamp: 1766016504444
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-21-21.1.7-default_hf3020a7_2.conda
+ sha256: fe5588d72edbe9d464f24735ac3f8a167a150d9fc365523fdad8ba05e09d68b5
+ md5: 1642e5fb3cd0e4e8e5d9ae2b68ba554e
+ depends:
+ - __osx >=11.0
+ - libclang-cpp21.1 >=21.1.7,<21.2.0a0
+ - libcxx >=21.1.7
+ - libllvm21 >=21.1.7,<21.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 65217
+ timestamp: 1766167190049
- conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-20.1.8-default_h363a0c9_5.conda
sha256: d30843fc1012ff5fb6c95e07c15182d22f03a37c380ae350ba069adf75092828
md5: 692c84fedd1a3302ff26dbc9a211f626
@@ -918,15 +1109,40 @@ packages:
purls: []
size: 3970670
timestamp: 1757411730313
-- pypi: https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl
- name: distlib
- version: 0.4.0
- sha256: 9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16
-- pypi: https://files.pythonhosted.org/packages/e3/7f/a1a97644e39e7316d850784c642093c99df1290a460df4ede27659056834/filelock-3.20.1-py3-none-any.whl
- name: filelock
- version: 3.20.1
- sha256: 15d9e9a67306188a44baa72f569d2bfd803076269365fdea0934385da4dc361a
- requires_python: '>=3.10'
+- conda: https://conda.anaconda.org/conda-forge/linux-64/fd-find-10.3.0-hdab8a38_0.conda
+ sha256: 55d3011ca72e1d97acc651b2af5d4d4d785988a8cfa9026205e9cf11f2d4ee67
+ md5: 1b8aaa7bb23496abb0e23369db7fb5b7
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ license_family: MIT
+ size: 1209421
+ timestamp: 1757336717570
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fd-find-10.3.0-h0ca00b2_0.conda
+ sha256: 87360775e2416402e00f386855d0a6d68e9e94db9016f00fc0ebf99e5c71f92a
+ md5: 7e2ef0657717cee5e385cd5ab26e0365
+ depends:
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 1050638
+ timestamp: 1757337263602
+- conda: https://conda.anaconda.org/conda-forge/win-64/fd-find-10.3.0-h77a83cd_0.conda
+ sha256: 5c5165853630b8473f0963c1d3018e439e4f90f85443c5d0d00e6ec45457774a
+ md5: 01b79e8a4cf41a31737ffbbda6a25aab
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ license: MIT
+ license_family: MIT
+ size: 1196708
+ timestamp: 1757337405047
- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.2.0-h96c4ede_2.conda
sha256: 6592ff15983759799df89d0a992268809e9ce0376933e053716660ecda19d87e
md5: 7f23fa6a103277a8491d3d10240ebd09
@@ -977,13 +1193,36 @@ packages:
purls: []
size: 14611960
timestamp: 1740241005796
-- pypi: https://files.pythonhosted.org/packages/0f/1c/e5fd8f973d4f375adb21565739498e2e9a1e54c858a97b9a8ccfdc81da9b/identify-2.6.15-py2.py3-none-any.whl
- name: identify
- version: 2.6.15
- sha256: 1181ef7608e00704db228516541eb83a88a9f94433a8c80bb9b5bd54b1d81757
- requires_dist:
- - ukkonen ; extra == 'license'
- requires_python: '>=3.9'
+- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
+ sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
+ md5: 8b189310083baabfb622af68fd9d3ae3
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc-ng >=12
+ - libstdcxx-ng >=12
+ license: MIT
+ license_family: MIT
+ size: 12129203
+ timestamp: 1720853576813
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
+ sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620
+ md5: 5eb22c1d7b3fc4abb50d92d621583137
+ depends:
+ - __osx >=11.0
+ license: MIT
+ license_family: MIT
+ size: 11857802
+ timestamp: 1720853997952
+- conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.1-h637d24d_0.conda
+ sha256: bee083d5a0f05c380fcec1f30a71ef5518b23563aeb0a21f6b60b792645f9689
+ md5: cb8048bed35ef01431184d6a88e46b3e
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ license: MIT
+ size: 13849749
+ timestamp: 1766299627069
- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl
name: iniconfig
version: 2.3.0
@@ -1064,6 +1303,17 @@ packages:
purls: []
size: 725545
timestamp: 1764007826689
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda
+ sha256: 1027bd8aa0d5144e954e426ab6218fd5c14e54a98f571985675468b339c808ca
+ md5: 3ec0aa5037d39b06554109a01e6fb0c6
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - zstd >=1.5.7,<1.6.0a0
+ constrains:
+ - binutils_impl_linux-64 2.45
+ license: GPL-3.0-only
+ size: 730831
+ timestamp: 1766513089214
- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.8-default_h99862b1_5.conda
sha256: b9f0e167cdf5cbe076231788fcb3affe25914534d84ab249258161b693c4cfd2
md5: 33acc83688f092f96ea2ead08e3b4dcd
@@ -1089,6 +1339,29 @@ packages:
purls: []
size: 13959982
timestamp: 1764397711426
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.7-default_h99862b1_2.conda
+ sha256: b41513470499628c0f9b7e1b057c8d7641a75be482d4a296a4eb41234aaac971
+ md5: fd47a1021b2a3a91b0c05f4d7b529b68
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libllvm21 >=21.1.7,<21.2.0a0
+ - libstdcxx >=14
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 21055117
+ timestamp: 1766016009924
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp21.1-21.1.7-default_hf3020a7_2.conda
+ sha256: cd7269ab02e1152fec0c8d017700d6c9b2a6a817c809216c47fa5a805f82849f
+ md5: e1a690c66f36a1ed451c56db826b9f36
+ depends:
+ - __osx >=11.0
+ - libcxx >=21.1.7
+ - libllvm21 >=21.1.7,<21.2.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 13672685
+ timestamp: 1766166376555
- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_1.conda
sha256: 2d7be2fe0f58a0945692abee7bb909f8b19284b518d958747e5ff51d0655c303
md5: 117499f93e892ea1e57fdca16c2e8351
@@ -1147,6 +1420,15 @@ packages:
purls: []
size: 568715
timestamp: 1764676451068
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda
+ sha256: 82e228975fd491bcf1071ecd0a6ec2a0fcc5f57eb0bd1d52cb13a18d57c67786
+ md5: 780f0251b757564e062187044232c2b7
+ depends:
+ - __osx >=11.0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 569118
+ timestamp: 1765919724254
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.8-h6dc3340_3.conda
sha256: 860588fb7b8c9227cfae68cf410c885fb0e05a635f3daddef9457c429a9704ba
md5: 78233f1b892fc02bca12b2daf3bd8d48
@@ -1404,6 +1686,35 @@ packages:
purls: []
size: 55313
timestamp: 1757354184572
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda
+ sha256: 91bb4f5be1601b40b4995911d785e29387970f0b3c80f33f7f9028f95335399f
+ md5: 1a2708a460884d6861425b7f9a7bef99
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libstdcxx >=14
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 44333366
+ timestamp: 1765959132513
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm21-21.1.8-h8e0c9ce_0.conda
+ sha256: 3f4512155aca799a25937f9ee794490794fb33f8f90a5e6532d8be869e7d79a0
+ md5: 8fc5b2387a7907cd58805668dad3b70f
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - libxml2
+ - libxml2-16 >=2.14.6
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ license: Apache-2.0 WITH LLVM-exception
+ license_family: Apache
+ size: 29398498
+ timestamp: 1765924904821
- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8
md5: 1a580f7796c7bf6393fddb8bbbde58dc
@@ -1562,6 +1873,25 @@ packages:
purls: []
size: 938979
timestamp: 1764359444435
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.1-h0c1763c_1.conda
+ sha256: 5ef162b2a1390d1495a759734afe2312a358a58441cf8f378be651903646f3b7
+ md5: ad1fd565aff83b543d726382c0ab0af2
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ - libzlib >=1.3.1,<2.0a0
+ license: blessing
+ size: 940686
+ timestamp: 1766319628770
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h1b79a29_1.conda
+ sha256: f2c3cbf2ca7d697098964a748fbf19d6e4adcefa23844ec49f0166f1d36af83c
+ md5: 8c3951797658e10b610929c3e57e9ad9
+ depends:
+ - __osx >=11.0
+ - libzlib >=1.3.1,<2.0a0
+ license: blessing
+ size: 905861
+ timestamp: 1766319901587
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.1-h9a5124b_0.conda
sha256: a46b167447e2a9e38586320c30b29e3b68b6f7e6b873c18d6b1aa2efd2626917
md5: 67e50e5bd4e5e2310d66b88c4da50096
@@ -1583,6 +1913,16 @@ packages:
purls: []
size: 1291059
timestamp: 1764359545703
+- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.1-hf5d6505_1.conda
+ sha256: d6d86715a1afe11f626b7509935e9d2e14a4946632c0ac474526e20fc6c55f99
+ md5: be65be5f758709fc01b01626152e96b0
+ depends:
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ license: blessing
+ size: 1292859
+ timestamp: 1766319616777
- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661
md5: eecce068c7e4eddeb169591baac20ac4
@@ -1665,6 +2005,15 @@ packages:
purls: []
size: 40235
timestamp: 1764790744114
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda
+ sha256: 1a7539cfa7df00714e8943e18de0b06cceef6778e420a5ee3a2a145773758aee
+ md5: db409b7c1720428638e7c0d509d3e1b5
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - libgcc >=14
+ license: BSD-3-Clause
+ size: 40311
+ timestamp: 1766271528534
- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda
sha256: c180f4124a889ac343fc59d15558e93667d894a966ec6fdb61da1604481be26b
md5: 0f03292cc56bf91a077a134ea8747118
@@ -1715,6 +2064,35 @@ packages:
purls: []
size: 45292
timestamp: 1761015784683
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda
+ sha256: ec0735ae56c3549149eebd7dc22c0bed91fd50c02eaa77ff418613ddda190aa8
+ md5: e512be7dc1f84966d50959e900ca121f
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=75.1,<76.0a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libxml2-16 2.15.1 ha9997c6_0
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 45283
+ timestamp: 1761015644057
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda
+ sha256: c409e384ddf5976a42959265100d6b2c652017d250171eb10bae47ef8166193f
+ md5: fb5ce61da27ee937751162f86beba6d1
+ depends:
+ - __osx >=11.0
+ - icu >=75.1,<76.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libxml2-16 2.15.1 h0ff4647_0
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 40607
+ timestamp: 1761016108361
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.1-hba2cd1d_0.conda
sha256: fa01101fe7d95085846c16825f0e7dc0efe1f1c7438a96fe7395c885d6179495
md5: a53d5f7fff38853ddb6bdc8fb609c039
@@ -1749,6 +2127,38 @@ packages:
purls: []
size: 43209
timestamp: 1761016354235
+- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda
+ sha256: 8b47d5fb00a6ccc0f495d16787ab5f37a434d51965584d6000966252efecf56d
+ md5: 68dc154b8d415176c07b6995bd3a65d9
+ depends:
+ - icu >=78.1,<79.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libxml2-16 2.15.1 h3cfd58e_1
+ - libzlib >=1.3.1,<2.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ license: MIT
+ license_family: MIT
+ size: 43387
+ timestamp: 1766327259710
+- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda
+ sha256: 71436e72a286ef8b57d6f4287626ff91991eb03c7bdbe835280521791efd1434
+ md5: e7733bc6785ec009e47a224a71917e84
+ depends:
+ - __glibc >=2.17,<3.0.a0
+ - icu >=75.1,<76.0a0
+ - libgcc >=14
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ constrains:
+ - libxml2 2.15.1
+ license: MIT
+ license_family: MIT
+ size: 556302
+ timestamp: 1761015637262
- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hf2a90c1_0.conda
sha256: f5220ff49efc31431279859049199b9250e79f98c1dee1da12feb74bda2d9cf1
md5: 23720d17346b21efb08d68c2255c8431
@@ -1766,6 +2176,21 @@ packages:
purls: []
size: 554734
timestamp: 1761015772672
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda
+ sha256: ebe2dd9da94280ad43da936efa7127d329b559f510670772debc87602b49b06d
+ md5: 438c97d1e9648dd7342f86049dd44638
+ depends:
+ - __osx >=11.0
+ - icu >=75.1,<76.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ constrains:
+ - libxml2 2.15.1
+ license: MIT
+ license_family: MIT
+ size: 464952
+ timestamp: 1761016087733
- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.1-h8eac4d7_0.conda
sha256: 3f3f9ba64a3fca15802d4eaf2a97696e6dcd916effa6a683756fd9f11245df5a
md5: cf7291a970b93fe3bb726879f2037af8
@@ -1782,6 +2207,23 @@ packages:
purls: []
size: 464186
timestamp: 1761016258891
+- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda
+ sha256: a857e941156b7f462063e34e086d212c6ccbc1521ebdf75b9ed66bd90add57dc
+ md5: 07d73826fde28e7dbaec52a3297d7d26
+ depends:
+ - icu >=78.1,<79.0a0
+ - libiconv >=1.18,<2.0a0
+ - liblzma >=5.8.1,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - ucrt >=10.0.20348.0
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ constrains:
+ - libxml2 2.15.1
+ license: MIT
+ license_family: MIT
+ size: 518964
+ timestamp: 1766327232819
- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h692994f_0.conda
sha256: 04129dc2df47a01c55e5ccf8a18caefab94caddec41b3b10fbc409e980239eb9
md5: 70ca4626111579c3cd63a7108fe737f9
@@ -2034,11 +2476,42 @@ packages:
purls: []
size: 309417
timestamp: 1763688227932
-- pypi: https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl
- name: nodeenv
- version: 1.9.1
- sha256: ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9
- requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*'
+- conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.21.1-h4a9c4b4_0.conda
+ sha256: 7808695078b286548a56a0833bbe65f0d2a547bc134bc8a12d106b384d048e17
+ md5: 3fe7cdb8ea3181917e358f31a9a0b514
+ depends:
+ - libgcc >=14
+ - __glibc >=2.28,<3.0.a0
+ - libstdcxx >=14
+ - openssl >=3.5.4,<4.0a0
+ - icu >=75.1,<76.0a0
+ - libuv >=1.51.0,<2.0a0
+ - libzlib >=1.3.1,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 24194392
+ timestamp: 1765444695531
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nodejs-22.21.1-hf2fe37f_0.conda
+ sha256: 16fc66a8f7c566aa626833482bfeb20f6a1953861ba5d7e91eb4f72c600c4151
+ md5: cd2e913e4e61a013e1707daf551165d3
+ depends:
+ - __osx >=11.0
+ - libcxx >=19
+ - openssl >=3.5.4,<4.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - icu >=75.1,<76.0a0
+ - libuv >=1.51.0,<2.0a0
+ license: MIT
+ license_family: MIT
+ size: 16727525
+ timestamp: 1765374502949
+- conda: https://conda.anaconda.org/conda-forge/win-64/nodejs-22.21.1-he453025_0.conda
+ sha256: b0f3bfbd1682c5e73ea424368c57b3a6b411e6368dadaf1c8cf4772723787513
+ md5: df959f61eb2ce7872c981a2719a36e18
+ license: MIT
+ license_family: MIT
+ size: 29798671
+ timestamp: 1765374524747
- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d
md5: 9ee58d5c534af06558933af3c845a780
@@ -2080,22 +2553,6 @@ packages:
version: '25.0'
sha256: 29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484
requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/cb/28/3bfe2fa5a7b9c46fe7e13c97bda14c895fb10fa2ebf1d0abb90e0cea7ee1/platformdirs-4.5.1-py3-none-any.whl
- name: platformdirs
- version: 4.5.1
- sha256: d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31
- requires_dist:
- - furo>=2025.9.25 ; extra == 'docs'
- - proselint>=0.14 ; extra == 'docs'
- - sphinx-autodoc-typehints>=3.2 ; extra == 'docs'
- - sphinx>=8.2.3 ; extra == 'docs'
- - appdirs==1.4.4 ; extra == 'test'
- - covdefaults>=2.3 ; extra == 'test'
- - pytest-cov>=7 ; extra == 'test'
- - pytest-mock>=3.15.1 ; extra == 'test'
- - pytest>=8.4.2 ; extra == 'test'
- - mypy>=1.18.2 ; extra == 'type'
- requires_python: '>=3.10'
- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl
name: pluggy
version: 1.6.0
@@ -2107,17 +2564,41 @@ packages:
- pytest-benchmark ; extra == 'testing'
- coverage ; extra == 'testing'
requires_python: '>=3.9'
-- pypi: https://files.pythonhosted.org/packages/5d/c4/b2d28e9d2edf4f1713eb3c29307f1a63f3d67cf09bdda29715a36a68921a/pre_commit-4.5.0-py2.py3-none-any.whl
- name: pre-commit
- version: 4.5.0
- sha256: 25e2ce09595174d9c97860a95609f9f852c0614ba602de3561e267547f2335e1
- requires_dist:
- - cfgv>=2.0.0
- - identify>=1.0.0
- - nodeenv>=0.11.1
- - pyyaml>=5.1
- - virtualenv>=20.10.0
- requires_python: '>=3.10'
+- conda: https://conda.anaconda.org/conda-forge/linux-64/prettier-3.7.4-h4c22ac6_0.conda
+ sha256: 6f702c0b40508b245f166cc5b339fc7eb57ab02470a00466aed2bc6e98d791cb
+ md5: eb862ee74ff6beeee4378f4436e2e9a6
+ depends:
+ - nodejs
+ - __glibc >=2.17,<3.0.a0
+ - nodejs >=22.19.0,<23.0a0
+ license: MIT
+ license_family: MIT
+ size: 1102504
+ timestamp: 1764738744929
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prettier-3.7.4-h79221d7_0.conda
+ sha256: 7e5f42737afb5919b13e379d4bcba1b19f54d746a23150116c3c2d856072014d
+ md5: f84e9db3c73c179dee0952eff5846188
+ depends:
+ - nodejs
+ - __osx >=11.0
+ - nodejs >=22.19.0,<23.0a0
+ license: MIT
+ license_family: MIT
+ size: 1101665
+ timestamp: 1764738820106
+- conda: https://conda.anaconda.org/conda-forge/win-64/prettier-3.7.4-hc95d2ff_0.conda
+ sha256: 28a128bd45b74ba5e9a4dee0872475453cbec1a39b7a97494239dc26ff9dab61
+ md5: 2de1c3bfaf5da770c37c01ad41b80283
+ depends:
+ - nodejs
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ - ucrt >=10.0.20348.0
+ - nodejs >=22.19.0,<23.0a0
+ license: MIT
+ license_family: MIT
+ size: 1105059
+ timestamp: 1764738810596
- pypi: https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl
name: pygments
version: 2.19.2
@@ -2247,21 +2728,6 @@ packages:
purls: []
size: 6989
timestamp: 1752805904792
-- pypi: https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl
- name: pyyaml
- version: 6.0.3
- sha256: 4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac
- requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- name: pyyaml
- version: 6.0.3
- sha256: c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5
- requires_python: '>=3.8'
-- pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl
- name: pyyaml
- version: 6.0.3
- sha256: 34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310
- requires_python: '>=3.8'
- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda
sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002
md5: d7d95fc8287ea7bf33e0e7116d2b95ec
@@ -2304,6 +2770,77 @@ packages:
purls: []
size: 185448
timestamp: 1748645057503
+- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.10-h4196e79_0.conda
+ noarch: python
+ sha256: 997b45ce89554f677e4a30cd1d64565949be9d25c806727c3d844fee0d55d7d2
+ md5: ddecdee0806589993d96a950ad51b927
+ depends:
+ - python
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ size: 11472103
+ timestamp: 1766094973645
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.10-hb0cad00_0.conda
+ noarch: python
+ sha256: dcae2c2d8c3a07782c0ce900f44488e2c2a2acd3720850181165a4e0034219fc
+ md5: d506e661dcc8c2053b2661edb0d3c57c
+ depends:
+ - python
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ size: 10468468
+ timestamp: 1766095111371
+- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.10-h37e10c4_0.conda
+ noarch: python
+ sha256: 2ca5b7a6ab0a4cddec16f390e1c2d89b5cacd1780963745e463f1bb2e8ab4893
+ md5: 987a8290e4bfd9e42e3c58be4481929c
+ depends:
+ - python
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ - ucrt >=10.0.20348.0
+ license: MIT
+ size: 11908812
+ timestamp: 1766095035171
+- conda: https://conda.anaconda.org/conda-forge/linux-64/stylua-2.3.1-hb17b654_1.conda
+ sha256: 55d6701de61979958ef23b1179158f691cc17bb4990b7b7d4fa2c15755b3f6b9
+ md5: 946560e6fd16473525953ae27909e7a0
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - __glibc >=2.17
+ license: MPL-2.0
+ license_family: MOZILLA
+ size: 2043399
+ timestamp: 1764712277790
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/stylua-2.3.1-h8d80559_1.conda
+ sha256: b289cc5b177372fcb4498e50448a636b9c0076c5093a344f76ea4dc19ee04bd5
+ md5: c5034ca591220810f58cf0365a52677a
+ depends:
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MPL-2.0
+ license_family: MOZILLA
+ size: 1881779
+ timestamp: 1764712349144
+- conda: https://conda.anaconda.org/conda-forge/win-64/stylua-2.3.1-h18a1a76_1.conda
+ sha256: 683f5c15da425c0a48a40474b97b5f81b1b7d9c3a3a10a503a10f5c4e065ebaa
+ md5: d33ff02becc3b0c8f41855615299a0c6
+ depends:
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ - ucrt >=10.0.20348.0
+ license: MPL-2.0
+ license_family: MOZILLA
+ size: 2085986
+ timestamp: 1764712314965
- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda
sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624
md5: 460eba7851277ec1fd80a1a24080787a
@@ -2352,6 +2889,37 @@ packages:
purls: []
size: 3472313
timestamp: 1763055164278
+- conda: https://conda.anaconda.org/conda-forge/linux-64/tombi-0.7.12-hb17b654_0.conda
+ sha256: 972bd56e5e73e72411424d6d903f0267c18d684020aa2189dfb4a4fd86376076
+ md5: bae1720cadffd3bfd69f965b2590cf6f
+ depends:
+ - libgcc >=14
+ - __glibc >=2.17,<3.0.a0
+ constrains:
+ - __glibc >=2.17
+ license: MIT
+ size: 6029930
+ timestamp: 1766862999011
+- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tombi-0.7.12-h6fdd925_0.conda
+ sha256: e75c9461c2e09e1f403e9d8541c16e6a74e8e6e09e1985dfdec7621030f8749d
+ md5: 0b1ba2fe993fff755eba4dccc33c2a50
+ depends:
+ - __osx >=11.0
+ constrains:
+ - __osx >=11.0
+ license: MIT
+ size: 5492298
+ timestamp: 1766863033644
+- conda: https://conda.anaconda.org/conda-forge/win-64/tombi-0.7.12-h18a1a76_0.conda
+ sha256: 450a8b77b6196afa82ba74ae1b6e4d7ea850f22c5d3b0664ee917ceeb14393f0
+ md5: ea6684215868ba15dd5d5239a33ea286
+ depends:
+ - vc >=14.3,<15
+ - vc14_runtime >=14.44.35208
+ - ucrt >=10.0.20348.0
+ license: MIT
+ size: 6535168
+ timestamp: 1766863032287
- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
md5: 4222072737ccff51314b5ece9c7d6f5a
@@ -2420,36 +2988,6 @@ packages:
purls: []
size: 115073
timestamp: 1765216325898
-- pypi: https://files.pythonhosted.org/packages/79/0c/c05523fa3181fdf0c9c52a6ba91a23fbf3246cc095f26f6516f9c60e6771/virtualenv-20.35.4-py3-none-any.whl
- name: virtualenv
- version: 20.35.4
- sha256: c21c9cede36c9753eeade68ba7d523529f228a403463376cf821eaae2b650f1b
- requires_dist:
- - distlib>=0.3.7,<1
- - filelock>=3.12.2,<4
- - importlib-metadata>=6.6 ; python_full_version < '3.8'
- - platformdirs>=3.9.1,<5
- - typing-extensions>=4.13.2 ; python_full_version < '3.11'
- - furo>=2023.7.26 ; extra == 'docs'
- - proselint>=0.13 ; extra == 'docs'
- - sphinx>=7.1.2,!=7.3 ; extra == 'docs'
- - sphinx-argparse>=0.4 ; extra == 'docs'
- - sphinxcontrib-towncrier>=0.2.1a0 ; extra == 'docs'
- - towncrier>=23.6 ; extra == 'docs'
- - covdefaults>=2.3 ; extra == 'test'
- - coverage-enable-subprocess>=1 ; extra == 'test'
- - coverage>=7.2.7 ; extra == 'test'
- - flaky>=3.7 ; extra == 'test'
- - packaging>=23.1 ; extra == 'test'
- - pytest-env>=0.8.2 ; extra == 'test'
- - pytest-freezer>=0.4.8 ; (python_full_version >= '3.13' and platform_python_implementation == 'CPython' and sys_platform == 'win32' and extra == 'test') or (platform_python_implementation == 'GraalVM' and extra == 'test') or (platform_python_implementation == 'PyPy' and extra == 'test')
- - pytest-mock>=3.11.1 ; extra == 'test'
- - pytest-randomly>=3.12 ; extra == 'test'
- - pytest-timeout>=2.1 ; extra == 'test'
- - pytest>=7.4 ; extra == 'test'
- - setuptools>=68 ; extra == 'test'
- - time-machine>=2.10 ; platform_python_implementation == 'CPython' and extra == 'test'
- requires_python: '>=3.8'
- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda
sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617
md5: 68eae977d7d1196d32b636a026dc015d
diff --git a/pixi.toml b/pixi.toml
index 894f642c3..e9120171e 100644
--- a/pixi.toml
+++ b/pixi.toml
@@ -3,16 +3,14 @@ name = "clice"
version = "0.1.0"
description = "A next-generation C++ language server for modern C++"
authors = [
- "ykiko ",
- "clice contributors ",
+ "ykiko ",
+ "clice contributors ",
]
-
license = "Apache-2.0"
license-file = "LICENSE"
readme = "README.md"
documentation = "https://clice.io"
repository = "https://github.com/clice-io/clice"
-
channels = ["conda-forge"]
platforms = ["win-64", "linux-64", "osx-arm64"]
@@ -31,28 +29,69 @@ sysroot_linux-64 = "==2.17"
gcc = "==14.2.0"
gxx = "==14.2.0"
-[target.win-64.activation]
-scripts = ["scripts/activate_asan.bat"]
-
[target.linux-64.activation]
scripts = ["scripts/activate_linux.sh"]
+[target.win-64.activation]
+scripts = ["scripts/activate_asan.bat"]
+
[feature.test.pypi-dependencies]
pytest = "*"
pytest-asyncio = ">=1.1.0"
-pre-commit = ">=4.3.0"
[feature.package.dependencies]
xz = ">=5.8.1,<6"
+[feature.format.dependencies]
+ruff = "*"
+tombi = "*"
+stylua = "*"
+fd-find = "*"
+prettier = "*"
+clang-format = "==21.1.7"
+
+[feature.format.tasks]
+format-cpp = "fd -H -e cpp -e h -e cc -e hpp -x clang-format -i"
+format-python = "ruff format ."
+format-lua = "stylua ."
+format-web = "fd -H -e js -e ts -e css -x prettier --write"
+format-markdown = "fd -H -e md -x prettier --write"
+format-json = "fd -H -e json -E package-lock.json -x prettier --write"
+format-toml = "fd -H -e toml -x tombi format"
+format-yaml = """
+fd -H -e yaml -e yml -x prettier --write && \
+fd -H "^\\.clang-(format|tidy)$" -x prettier --write --parser yaml
+"""
+format = { depends-on = [
+ "format-cpp",
+ "format-python",
+ "format-lua",
+ "format-web",
+ "format-markdown",
+ "format-json",
+ "format-toml",
+ "format-yaml"
+] }
+
+[feature.develop.tasks]
+unit-test = './build/bin/unit_tests --test-dir="./tests/data"'
+integration-test = 'pytest -s --log-cli-level=INFO tests/integration --executable=./build/bin/clice{% if pixi.is_win %}.exe{% endif %}'
+xmake-test = "xmake test --verbose"
+
[environments]
default = []
develop = ["test", "develop"]
package = ["test", "package"]
+format = ["format"]
[tasks.ci-cmake-configure]
args = ["build_type"]
-cmd = ["cmake", "-B", "build", "-G", "Ninja",
+cmd = [
+ "cmake",
+ "-B",
+ "build",
+ "-G",
+ "Ninja",
"-DCMAKE_BUILD_TYPE={{ build_type }}",
"-DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.cmake",
"-DCLICE_ENABLE_TEST=ON",
@@ -62,12 +101,6 @@ cmd = ["cmake", "-B", "build", "-G", "Ninja",
[tasks.cmake-build]
cmd = "cmake --build build"
-[feature.develop.tasks]
-unit-test = './build/bin/unit_tests --test-dir="./tests/data"'
-integration-test = 'pytest -s --log-cli-level=INFO tests/integration --executable=./build/bin/clice{% if pixi.is_win %}.exe{% endif %}'
-ci-check = "pre-commit run --all-files"
-xmake-test = "xmake test --verbose"
-
[tasks.ci-cmake-build]
args = ["build_type"]
depends-on = [
@@ -76,10 +109,7 @@ depends-on = [
]
[tasks.ci-cmake-test]
-depends-on = [
- { task = "unit-test" },
- { task = "integration-test" },
-]
+depends-on = [{ task = "unit-test" }, { task = "integration-test" }]
[tasks.ci-xmake-configure]
args = ["build_type"]
@@ -91,7 +121,9 @@ cmd = "xmake build --verbose --diagnosis --all"
[tasks.ci-xmake-build]
args = ["build_type"]
depends-on = [
- { task = "ci-xmake-configure", args = ["{{ build_type }}"] },
+ { task = "ci-xmake-configure", args = [
+ "{{ build_type }}",
+ ] },
{ task = "xmake-build" },
]
@@ -99,16 +131,18 @@ depends-on = [
cmd = ["python3", "scripts/build-llvm.py"]
[tasks.upload-llvm]
-args = [
- "workflow_id",
- "llvm_version",
- { "arg" = "branch", default = "main" },
-]
+args = ["workflow_id", "llvm_version", { "arg" = "branch", default = "main" }]
cmd = [
- "gh", "workflow", "run", "upload-llvm.yml",
- "--ref", "{{ branch }}",
- "--field", "workflow_id={{workflow_id}}",
- "--field", "version={{llvm_version}}",
+ "gh",
+ "workflow",
+ "run",
+ "upload-llvm.yml",
+ "--ref",
+ "{{ branch }}",
+ "--field",
+ "workflow_id={{workflow_id}}",
+ "--field",
+ "version={{llvm_version}}",
]
[tasks.delete-artifacts]
diff --git a/bin/clice.cc b/src/clice.cc
similarity index 100%
rename from bin/clice.cc
rename to src/clice.cc
diff --git a/tests/data/clang_tidy/clice.toml b/tests/data/clang_tidy/clice.toml
index 70c93aa47..16eeed519 100644
--- a/tests/data/clang_tidy/clice.toml
+++ b/tests/data/clang_tidy/clice.toml
@@ -1,6 +1,5 @@
-### clice configuration
+## # clice configuration
[project]
-
- # Enable clang-tidy diagnostics.
- clang_tidy = true
+# Enable clang-tidy diagnostics.
+clang_tidy = true
diff --git a/tests/pyproject.toml b/tests/pyproject.toml
index a88667b14..0b269e243 100644
--- a/tests/pyproject.toml
+++ b/tests/pyproject.toml
@@ -3,20 +3,12 @@ name = "clice"
version = "0.1.0"
description = "clice is a language server for C/C++"
readme = "README.md"
-authors = [
- { name = "clice developers" }
-]
requires-python = ">=3.13"
+authors = [{ name = "clice developers" }]
dependencies = []
[dependency-groups]
-dev = [
- "pre-commit>=4.3.0",
- "pytest",
- "pytest-asyncio>=1.1.0",
-]
+dev = ["pre-commit>=4.3.0", "pytest", "pytest-asyncio>=1.1.0"]
[tool.pytest.ini_options]
-markers = [
- "asyncio",
-]
+markers = ["asyncio"]
diff --git a/bin/unit_tests.cc b/tests/unit/unit_tests.cc
similarity index 100%
rename from bin/unit_tests.cc
rename to tests/unit/unit_tests.cc
diff --git a/tombi.toml b/tombi.toml
new file mode 100644
index 000000000..ec766849a
--- /dev/null
+++ b/tombi.toml
@@ -0,0 +1,6 @@
+# tombi.toml
+[format.rules]
+indent-style = "space"
+indent-width = 4
+line-width = 120
+string-quote-style = "preserve"
diff --git a/xmake.lua b/xmake.lua
index 92d24d942..a8d659e38 100644
--- a/xmake.lua
+++ b/xmake.lua
@@ -147,7 +147,7 @@ end)
target("clice", function()
set_kind("binary")
- add_files("bin/clice.cc")
+ add_files("src/clice.cc")
add_deps("clice-core")
-- workaround
@@ -173,7 +173,7 @@ end)
target("unit_tests", function()
set_default(false)
set_kind("binary")
- add_files("bin/unit_tests.cc", "tests/unit/**.cpp")
+ add_files("tests/unit/unit_tests.cc", "tests/unit/**.cpp")
add_includedirs(".", { public = true })
add_packages("cpptrace")