开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
main
分支 (5)
标签 (3)
main
feature/v6
test/test-most-core-func
version/i18n/zh-cn
feature/prod
v3
v2
v1
claude-code
/
src
/
utils
/
completionCache.ts
claude-code
/
src
/
utils
/
completionCache.ts
completionCache.ts 5.52 KB
一键复制 编辑 原始数据 按行查看 历史
claude-code-best 提交于 2026年03月31日 19:22 +08:00 . feat: build
import chalk from 'chalk'
import { mkdir, readFile, writeFile } from 'fs/promises'
import { homedir } from 'os'
import { dirname, join } from 'path'
import { pathToFileURL } from 'url'
import { color } from '../components/design-system/color.js'
import { supportsHyperlinks } from '../ink/supports-hyperlinks.js'
import { logForDebugging } from './debug.js'
import { isENOENT } from './errors.js'
import { execFileNoThrow } from './execFileNoThrow.js'
import { logError } from './log.js'
import type { ThemeName } from './theme.js'
const EOL = '\n'
type ShellInfo = {
name: string
rcFile: string
cacheFile: string
completionLine: string
shellFlag: string
}
function detectShell(): ShellInfo | null {
const shell = process.env.SHELL || ''
const home = homedir()
const claudeDir = join(home, '.claude')
if (shell.endsWith('/zsh') || shell.endsWith('/zsh.exe')) {
const cacheFile = join(claudeDir, 'completion.zsh')
return {
name: 'zsh',
rcFile: join(home, '.zshrc'),
cacheFile,
completionLine: `[[ -f "${cacheFile}" ]] && source "${cacheFile}"`,
shellFlag: 'zsh',
}
}
if (shell.endsWith('/bash') || shell.endsWith('/bash.exe')) {
const cacheFile = join(claudeDir, 'completion.bash')
return {
name: 'bash',
rcFile: join(home, '.bashrc'),
cacheFile,
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
shellFlag: 'bash',
}
}
if (shell.endsWith('/fish') || shell.endsWith('/fish.exe')) {
const xdg = process.env.XDG_CONFIG_HOME || join(home, '.config')
const cacheFile = join(claudeDir, 'completion.fish')
return {
name: 'fish',
rcFile: join(xdg, 'fish', 'config.fish'),
cacheFile,
completionLine: `[ -f "${cacheFile}" ] && source "${cacheFile}"`,
shellFlag: 'fish',
}
}
return null
}
function formatPathLink(filePath: string): string {
if (!supportsHyperlinks()) {
return filePath
}
const fileUrl = pathToFileURL(filePath).href
return `\x1b]8;;${fileUrl}\x07${filePath}\x1b]8;;\x07`
}
/**
* Generate and cache the completion script, then add a source line to the
* shell's rc file. Returns a user-facing status message.
*/
export async function setupShellCompletion(theme: ThemeName): Promise<string> {
const shell = detectShell()
if (!shell) {
return ''
}
// Ensure the cache directory exists
try {
await mkdir(dirname(shell.cacheFile), { recursive: true })
} catch (e: unknown) {
logError(e)
return `${EOL}${color('warning', theme)(`Could not write ${shell.name} completion cache`)}${EOL}${chalk.dim(`Run manually: claude completion ${shell.shellFlag} > ${shell.cacheFile}`)}${EOL}`
}
// Generate the completion script by writing directly to the cache file.
// Using --output avoids piping through stdout where process.exit() can
// truncate output before the pipe buffer drains.
const claudeBin = process.argv[1] || 'claude'
const result = await execFileNoThrow(claudeBin, [
'completion',
shell.shellFlag,
'--output',
shell.cacheFile,
])
if (result.code !== 0) {
return `${EOL}${color('warning', theme)(`Could not generate ${shell.name} shell completions`)}${EOL}${chalk.dim(`Run manually: claude completion ${shell.shellFlag} > ${shell.cacheFile}`)}${EOL}`
}
// Check if rc file already sources completions
let existing = ''
try {
existing = await readFile(shell.rcFile, { encoding: 'utf-8' })
if (
existing.includes('claude completion') ||
existing.includes(shell.cacheFile)
) {
return `${EOL}${color('success', theme)(`Shell completions updated for ${shell.name}`)}${EOL}${chalk.dim(`See ${formatPathLink(shell.rcFile)}`)}${EOL}`
}
} catch (e: unknown) {
if (!isENOENT(e)) {
logError(e)
return `${EOL}${color('warning', theme)(`Could not install ${shell.name} shell completions`)}${EOL}${chalk.dim(`Add this to ${formatPathLink(shell.rcFile)}:`)}${EOL}${chalk.dim(shell.completionLine)}${EOL}`
}
}
// Append source line to rc file
try {
const configDir = dirname(shell.rcFile)
await mkdir(configDir, { recursive: true })
const separator = existing && !existing.endsWith('\n') ? '\n' : ''
const content = `${existing}${separator}\n# Claude Code shell completions\n${shell.completionLine}\n`
await writeFile(shell.rcFile, content, { encoding: 'utf-8' })
return `${EOL}${color('success', theme)(`Installed ${shell.name} shell completions`)}${EOL}${chalk.dim(`Added to ${formatPathLink(shell.rcFile)}`)}${EOL}${chalk.dim(`Run: source ${shell.rcFile}`)}${EOL}`
} catch (error) {
logError(error)
return `${EOL}${color('warning', theme)(`Could not install ${shell.name} shell completions`)}${EOL}${chalk.dim(`Add this to ${formatPathLink(shell.rcFile)}:`)}${EOL}${chalk.dim(shell.completionLine)}${EOL}`
}
}
/**
* Regenerate cached shell completion scripts in ~/.claude/.
* Called after `claude update` so completions stay in sync with the new binary.
*/
export async function regenerateCompletionCache(): Promise<void> {
const shell = detectShell()
if (!shell) {
return
}
logForDebugging(`update: Regenerating ${shell.name} completion cache`)
const claudeBin = process.argv[1] || 'claude'
const result = await execFileNoThrow(claudeBin, [
'completion',
shell.shellFlag,
'--output',
shell.cacheFile,
])
if (result.code !== 0) {
logForDebugging(
`update: Failed to regenerate ${shell.name} completion cache`,
)
return
}
logForDebugging(
`update: Regenerated ${shell.name} completion cache at ${shell.cacheFile}`,
)
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jbcode/claude-code.git
git@gitee.com:jbcode/claude-code.git
jbcode
claude-code
claude-code
main
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /