From 172f68ac3786206fc1009fb9e52f2691bfe297f7 Mon Sep 17 00:00:00 2001 From: douboer Date: Sun, 9 Nov 2025 22:04:12 +0800 Subject: [PATCH] update at 2025-11-09 22:04:12 --- CHANGELOG.md | 18 + CHANGELOG_en.md | 18 + README.md | 256 ++++++++++--- README.md.bak2 | 580 ----------------------------- README.md.broken | 580 ----------------------------- README_en.md | 2 + RELEASE.md | 331 ++++++++-------- main.js | 36 +- main.ts | 36 +- manifest.json | 2 +- runit.sh | 1 + versions.json | 2 + vim-im-switch-plugin/main.js | 36 +- vim-im-switch-plugin/manifest.json | 2 +- 14 files changed, 469 insertions(+), 1431 deletions(-) delete mode 100644 README.md.bak2 delete mode 100644 README.md.broken create mode 120000 runit.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 298be5e..104dd3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,24 @@ --- +## [2.0.3] - 2025-11-09 + +### 修复 + +#### Obsidian 插件 +- **修复 Normal 模式下按 ESC 触发输入法切换的问题**: + - 问题:在 Normal 模式下按 ESC 会意外触发输入法切换(从中文切到英文,再按又从英文切到英文) + - 原因:`handleKeyDown` 函数处理 ESC 键时没有检查当前 Vim 模式 + - 解决:增加模式检查,只在 Insert 或 Replace 模式下按 ESC 时才保存输入法状态并切换到英文 + - 效果:与原生 Vim 插件行为保持一致,Normal 模式下按 ESC 不会改变输入法 + +### 改进 + +- 提高了模式检测的准确性 +- 优化了 ESC 键的处理逻辑 + +--- + ## [2.0.0] - 2025-11-04 ### 新增功能 diff --git a/CHANGELOG_en.md b/CHANGELOG_en.md index b3d3730..5187012 100644 --- a/CHANGELOG_en.md +++ b/CHANGELOG_en.md @@ -11,6 +11,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 --- +## [2.0.3] - 2025-11-09 + +### Fixed + +#### Obsidian Plugin +- **Fixed input method switching triggered by ESC in Normal mode**: + - Issue: Pressing ESC in Normal mode would unexpectedly trigger input method switching (from Chinese to English, then English to English on second press) + - Cause: `handleKeyDown` function didn't check current Vim mode when handling ESC key + - Solution: Added mode check to only save IM state and switch to English when ESC is pressed in Insert or Replace mode + - Result: Behavior now consistent with native Vim plugin - ESC in Normal mode doesn't change input method + +### Improved + +- Enhanced accuracy of mode detection +- Optimized ESC key handling logic + +--- + ## [2.0.0] - 2025-11-04 ### Added diff --git a/README.md b/README.md index 4121bd2..226151c 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,26 @@ # Vim 输入法自动切换插件 +[![Version](https://img.shields.io/badge/version-2.0.3-blue.svg)](./CHANGELOG.md) +[![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey.svg)](#安装要求) +[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE.txt) + [English](./README_en.md) | 中文 -这是为 原生Vim 和 Obsidian 编辑器的 Vim 模式设计的输入法自动切换插件,包含: -- **Obsidian 插件**:适用于 Obsidian 编辑器的 Vim 模式 -- **Vim 插件**:适用于原生 Vim/NeoVim 编辑器 +> 🚀 **智能输入法管理工具** - 为 Vim 用户打造的无感知输入法切换体验 -## 功能简介 +这是为 **原生 Vim** 和 **Obsidian 编辑器** 的 Vim 模式设计的智能输入法自动切换插件,包含: -- 自动切换输入法:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法 -- 智能记忆:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 -- 无缝体验:在 Insert 模式下正常输入文本时不会触发输入法切换 +- 🎯 **Obsidian 插件**:适用于 Obsidian 编辑器的 Vim 模式 +- ⚡ **Vim 插件**:适用于原生 Vim/NeoVim 编辑器 +- 🌍 **跨平台支持**:macOS、Linux、Windows 全平台兼容 + +## ✨ 功能亮点 + +- 🔄 **自动切换输入法**:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法 +- 🧠 **智能状态记忆**:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 +- 🎭 **无感知体验**:完全静默切换,无 UI 闪烁或延迟 +- 🌐 **中英混合友好**:完美支持中英文混合输入场景 +- ⚡ **多重保障机制**:三层检测确保切换的可靠性 ## 核心特性 ### 1. 模式切换自动化 @@ -23,10 +33,19 @@ - 支持中英文混合输入场景 ### 3. 智能检测机制 -插件使用多重检测机制确保可靠性: -- **键盘事件监听**(主要):使用事件捕获模式监听 ESC 和 Insert 按键 -- **CodeMirror 事件**(辅助):监听 vim-mode-change 事件 -- **定时轮询**(兜底):100ms 轮询检测模式变化 +插件采用**三重检测机制**确保可靠性: + +| 检测方式 | 优先级 | 说明 | +|---------|--------|------| +| 🎯 **键盘事件监听** | 最高 | 使用事件捕获模式监听 ESC 和 Insert 按键,响应最快 | +| 🔧 **CodeMirror 事件** | 中等 | 监听 vim-mode-change 事件,处理非按键触发的模式切换 | +| 🔄 **定时轮询** | 兜底 | 100ms 轮询检测模式变化,作为最后保障机制 | + +### 4. 技术特性 +- ⚡ **异步处理**:使用 `job_start()` 异步执行,避免 UI 阻塞 +- 🛡️ **防抖机制**:100ms 防抖避免重复处理 +- 🎯 **事件捕获优化**:使用 capture 模式确保最快响应 +- 🔧 **自动检测**:智能检测和配置中文输入法 ## 安装要求 @@ -56,22 +75,21 @@ sudo pacman -S fcitx ``` #### Windows -下载并安装 AutoHotKey 版本的 fcitx-remote: -- [下载 fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) -- 将 exe 文件放到系统 PATH 路径中 +使用项目内置的 AutoHotkey 脚本: +1. 安装 [AutoHotkey](https://www.autohotkey.com/) +2. 使用项目中的 `fcitx-remote.ahk` 脚本 +3. 或下载编译好的版本:[fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) +4. 将 exe 文件放到系统 PATH 路径中 ## 安装插件 ### Obsidian 插件安装 1. 下载插件文件到 Obsidian 插件目录: - - 方法一: ```bash cd /path/to/your/vault/.obsidian/plugins/ - git clone https://biboer.cn/gitea/gavin/vim-im-switch + git clone https://github.com/yourusername/vim-im-switch.git ``` - - 方法二(简单): - 把 vim-im-switch 目录复制到/path/to/your/vault/.obsidian/plugins/目录下。 2. 在 Obsidian 中启用插件: - 打开设置 → 社区插件 → 浏览 @@ -88,7 +106,7 @@ sudo pacman -S fcitx 1. 复制插件文件到 Vim 配置目录: ```bash mkdir -p ~/.vim/plugin - cp fcitx-osx.vim ~/.vim/plugin/ + cp vim-im-switch.vim ~/.vim/plugin/ ``` 2. 重启 Vim,插件会自动加载 @@ -103,14 +121,32 @@ sudo pacman -S fcitx " let g:fcitx_chinese_im = 'com.tencent.inputmethod.wetype.pinyin' ``` -### 一键部署(推荐) +#### 使用插件管理器安装 -使用部署脚本同时安装两个插件: +**vim-plug**: +```vim +Plug 'yourusername/vim-im-switch' +``` + +**Vundle**: +```vim +Plugin 'yourusername/vim-im-switch' +``` + +### 🚀 一键部署(推荐) + +使用部署脚本同时安装 Obsidian 插件和 Vim 插件: ```bash +# 克隆项目 +git clone https://github.com/yourusername/vim-im-switch.git +cd vim-im-switch + +# 构建并部署 +npm install ./deploy.sh ``` -Note: v2.0.2 fixes a terminal-specific title/flash issue when using terminal Vim (see CHANGELOG for details). +> 💡 **提示**: v2.0.2 修复了终端 Vim 中的标题闪烁问题,详见 [更新日志](./CHANGELOG.md) ## 使用方法 @@ -162,51 +198,157 @@ graph TD 插件维护一个状态机,跟踪 Vim 模式和输入法状态,在模式转换时自动切换输入法,同时保留用户偏好设置。 -## 故障排除 +## 🔧 故障排除 -### 问题:插件没有效果 -1. 检查 fcitx-remote 是否正确安装 -2. 检查插件日志(开发者控制台) -3. 验证输入法名称是否与设置匹配 - -### 问题:输入法切换不正确 -1. 确认设置中的输入法名称正确 -2. 手动切换输入法后,在开发者控制台查看日志 -3. 检查是否有其他插件冲突 - -## 开发 - -### 构建 +### 快速诊断 +使用内置诊断脚本: ```bash +./diagnose-im.sh +``` + +### 常见问题 + +#### 🚫 插件没有效果 +1. **检查依赖**:确认 fcitx-remote 是否正确安装 + ```bash + # macOS + fcitx-remote -n + + # Linux + which fcitx-remote + + # Windows + fcitx-remote.exe + ``` + +2. **检查日志**: + - **Obsidian**: 开发者控制台 (Ctrl+Shift+I) + - **Vim**: `:messages` 命令 + +3. **验证配置**:确认输入法名称与系统设置匹配 + +#### ⚠️ 输入法切换不正确 +1. **获取正确的输入法名称**: + ```bash + # 切换到中文输入法后执行 + fcitx-remote -n + ``` + +2. **手动测试**: + ```bash + # 切换到英文 + fcitx-remote -s com.apple.keylayout.ABC + + # 切换到中文(替换为你的输入法名称) + fcitx-remote -s com.tencent.inputmethod.wetype.pinyin + ``` + +3. **检查冲突**:暂时禁用其他 Vim 插件测试 + +#### 🐛 其他问题 +- **权限问题**:确保 fcitx-remote 有执行权限 +- **路径问题**:检查 fcitx-remote 是否在 PATH 中 +- **版本兼容**:确认 Vim 版本支持 `job_start()` (Vim 8+) + +## 🛠️ 开发指南 + +### 环境要求 +- Node.js 14+ +- TypeScript 4.2+ +- Rollup (构建工具) + +### 构建项目 +```bash +# 安装依赖 npm install + +# 开发模式(监听文件变化) +npm run dev + +# 生产构建 npm run build ``` -### 部署 -一键部署 Obsidian 插件和 Vim 插件: -```bash -./deploy.sh +### 项目结构 +``` +vim-im-switch/ +├── main.ts # Obsidian 插件主文件 +├── vim-im-switch.vim # Vim 插件文件 +├── fcitx-remote.ahk # Windows 支持脚本 +├── fcitx-remote-for-osx/ # macOS 支持工具 +├── deploy.sh # 一键部署脚本 +├── diagnose-im.sh # 诊断脚本 +└── vim-im-switch-plugin/ # 构建输出目录 ``` -### 调试 +### 调试方法 -#### Obsidian 插件 +#### Obsidian 插件调试 插件会在控制台输出关键日志: -- `Loading plugin...` - 插件加载 -- `ESC → English` - ESC 切换到英文 -- `→ Chinese` - 切换到中文 -- `Error...` - 错误信息 - -#### Vim 插件 -在 Vim 中查看消息: -```vim -:messages +``` +🚀 [VimIMSwitch] Loading plugin... +🔤 [VimIMSwitch] ESC → English (saved Chinese) +🈳 [VimIMSwitch] → Chinese +❌ [VimIMSwitch] Error: ... ``` -## 更新日志 -查看 [CHANGELOG.md](./CHANGELOG.md) 获取详细的版本更新历史。 +#### Vim 插件调试 +```vim +" 查看插件消息 +:messages -## 相关链接 -- [更新日志](./CHANGELOG.md) -- [English Documentation](./README_en.md) -- [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx) +" 检查插件是否加载 +:echo exists('g:fcitx_remote') + +" 手动测试函数 +:call Fcitx2en() +:call Fcitx2zh() +``` + +### 贡献指南 +1. Fork 项目 +2. 创建功能分支:`git checkout -b feature/amazing-feature` +3. 提交更改:`git commit -m 'Add amazing feature'` +4. 推送分支:`git push origin feature/amazing-feature` +5. 提交 Pull Request + +## 📋 版本历史 + +| 版本 | 日期 | 主要更新 | +|------|------|----------| +| [v2.0.3](./CHANGELOG.md#203---2025-11-09) | 2025-11-09 | 修复 Normal 模式 ESC 键问题 | +| [v2.0.2](./CHANGELOG.md#202---2025-11-04) | 2025-11-04 | 修复终端兼容性问题 | +| [v2.0.0](./CHANGELOG.md#200---2025-11-04) | 2025-11-04 | 新增 Vim 原生插件支持 | +| [v1.0.8](./CHANGELOG.md#108---2025-01-04) | 2025-01-04 | 智能状态记忆功能 | +| [v1.0.0](./CHANGELOG.md#100---2024-06-01) | 2024-06-01 | 首次发布 | + +查看 [完整更新日志](./CHANGELOG.md) 获取详细的版本更新历史。 + +## 🔗 相关链接 + +- 📖 [English Documentation](./README_en.md) +- 📝 [更新日志](./CHANGELOG.md) +- 🛠️ [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx) +- 🐛 [问题反馈](https://github.com/yourusername/vim-im-switch/issues) +- 💡 [功能建议](https://github.com/yourusername/vim-im-switch/discussions) + +## 📄 许可证 + +本项目采用 [MIT 许可证](./LICENSE.txt)。 + +## 🙏 致谢 + +感谢以下项目和贡献者: +- [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx) - macOS 输入法控制工具 +- [Obsidian](https://obsidian.md/) - 强大的知识管理工具 +- [Vim](https://www.vim.org/) / [NeoVim](https://neovim.io/) - 经典的文本编辑器 + +--- + +
+ +**如果这个项目对你有帮助,请给个 ⭐ Star!** + +Made with ❤️ for Vim users + +
diff --git a/README.md.bak2 b/README.md.bak2 deleted file mode 100644 index 7f91b2b..0000000 --- a/README.md.bak2 +++ /dev/null @@ -1,580 +0,0 @@ -# Obsidian Vim 输入法自动切换插件# Obsidian Vim 输入法自动切换插件 - - - -[English](./README_en.md) | 中文[English](#english) | [中文](#中文) - - - -一个为 Obsidian 编辑器的 Vim 模式设计的输入法自动切换插件。--- - - - -## 功能简介## 中文 - - - -- **自动切换输入法**:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法### 功能简介 - -- **智能记忆**:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 - -- **无缝体验**:在 Insert 模式下正常输入文本时不会触发输入法切换这是一个为 Obsidian 编辑器的 Vim 模式设计的输入法自动切换插件。它能够: - - - -## 核心特性- **自动切换输入法**:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法 - -- **智能记忆**:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 - -### 1. 模式切换自动化- **无缝体验**:在 Insert 模式下正常输入文本时不会触发输入法切换 - -- **进入 Normal 模式**(按 ESC 或其他命令)→ 自动切换到英文输入法 - -- **进入 Insert 模式**(按 i, a, o 等)→ 自动恢复上次的输入法状态### 核心特性 - - - -### 2. 输入法状态记忆#### 1. 模式切换自动化 - -- 退出 Insert 模式时,自动检测并保存当前的输入法(中文/英文)- **进入 Normal 模式**(按 ESC 或其他命令)→ 自动切换到英文输入法 - -- 下次进入 Insert 模式时,自动恢复到上次保存的输入法状态- **进入 Insert 模式**(按 i, a, o 等)→ 自动恢复上次的输入法状态 - -- 支持中英文混合输入场景 - -#### 2. 输入法状态记忆 - -### 3. 智能检测机制- 退出 Insert 模式时,自动检测并保存当前的输入法(中文/英文) - -插件使用多重检测机制确保可靠性:- 下次进入 Insert 模式时,自动恢复到上次保存的输入法状态 - -- **键盘事件监听**(主要):使用事件捕获模式监听 ESC 和 Insert 按键- 支持中英文混合输入场景 - -- **CodeMirror 事件**(辅助):监听 vim-mode-change 事件 - -- **定时轮询**(兜底):100ms 轮询检测模式变化#### 3. 智能检测机制 - -插件使用多重检测机制确保可靠性: - -## 快速开始- **键盘事件监听**(主要):使用事件捕获模式监听 ESC 和 Insert 按键 - -- **CodeMirror 事件**(辅助):监听 vim-mode-change 事件 - -### 安装要求- **定时轮询**(兜底):100ms 轮询检测模式变化 - - - -#### macOS### 安装要求 - -```bash - -brew install fcitx-remote-for-osx#### macOS - -```1. 安装 [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx): - - ```bash - -#### Linux brew install fcitx-remote-for-osx - -```bash ``` - -# Ubuntu/Debian - -sudo apt-get install fcitx2. 确认安装成功: - - ```bash - -# Fedora fcitx-remote -n - -sudo dnf install fcitx # 应该输出当前输入法的名称,如:com.apple.keylayout.ABC - - ``` - -# Arch Linux - -sudo pacman -S fcitx#### Linux - -```通过系统包管理器安装 `fcitx` 输入法: - -```bash - -#### Windows# Ubuntu/Debian - -下载 [fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) 并放到系统 PATH 路径中sudo apt-get install fcitx - - - -### 安装插件# Fedora - -sudo dnf install fcitx - -1. 下载插件到 Obsidian 插件目录: - - ```bash# Arch Linux - - cd /path/to/your/vault/.obsidian/plugins/sudo pacman -S fcitx - - git clone https://github.com/yourusername/vim-im-switch.git``` - - ``` - -#### Windows - -2. 在 Obsidian 中启用插件:下载并安装 AutoHotKey 版本的 fcitx-remote: - - - 打开设置 → 社区插件- [下载 fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) - - - 找到 "Vim Input Method Switch" 并启用- 将 exe 文件放到系统 PATH 路径中 - - - -3. 配置输入法(可选):### 安装插件 - - - 设置英文输入法(默认:`com.apple.keylayout.ABC`) - - - 设置中文输入法(默认:自动检测)1. 下载插件文件到 Obsidian 插件目录: - - ```bash - -## 使用方法 cd /path/to/your/vault/.obsidian/plugins/ - - git clone https://github.com/yourusername/vim-im-switch.git - -### 基本使用场景 ``` - - - -**中文输入**:2. 在 Obsidian 中启用插件: - -``` - 打开设置 → 社区插件 → 浏览 - -按 i → 进入 Insert 模式 → 输入法切换到中文(如果上次是中文) - 找到 "Vim Input Method Switch" - -输入中文内容 - 点击启用 - -按 ESC → 退出到 Normal 模式 → 输入法切换到英文 - -```3. 配置输入法: - - - 打开插件设置 - -**英文输入**: - 设置英文输入法(默认:`com.apple.keylayout.ABC`) - -``` - 设置中文输入法(默认:自动检测) - -按 i → 进入 Insert 模式 → 输入法保持英文(如果上次是英文) - -输入英文内容### 使用方法 - -按 ESC → 退出到 Normal 模式 → 输入法保持英文 - -```#### 基本使用 - - - -**中英混合**:1. **中文输入**: - -``` ``` - -按 i → 自动恢复上次的输入法 按 i → 进入 Insert 模式 → 输入法切换到中文(如果上次是中文) - -输入中文,然后手动切换到英文继续输入 输入中文内容 - -按 ESC → 保存当前输入法状态(英文) 按 ESC → 退出到 Normal 模式 → 输入法切换到英文 - -按 i → 自动恢复英文输入法 ``` - -``` - -2. **英文输入**: - -### 支持的 Vim 命令 ``` - - 按 i → 进入 Insert 模式 → 输入法保持英文(如果上次是英文) - -- **进入 Insert 模式**:`i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` 输入英文内容 - -- **退出 Insert 模式**:`ESC`, 以及其他触发 Normal 模式的命令 按 ESC → 退出到 Normal 模式 → 输入法保持英文 - - ``` - -## 工作原理 - -3. **中英混合**: - -```mermaid ``` - -graph TD 按 i → 自动恢复上次的输入法 - - A[Normal 模式
英文输入法] -->|按 i/a/o 等| B[检测模式切换] 输入中文,然后手动切换到英文继续输入 - - B --> C[恢复上次保存的
输入法状态] 按 ESC → 保存当前输入法状态(英文) - - C --> D[Insert 模式
自动恢复的输入法:
中文/英文] 按 i → 自动恢复英文输入法 - - D -->|按 ESC| E[保存当前输入法
状态 中/英] ``` - - E --> F[切换到英文输入法] - - F --> A#### 支持的 Vim 命令 - - - - style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px- **进入 Insert 模式**:`i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` - - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px- **退出 Insert 模式**:`ESC`, 以及其他触发 Normal 模式的命令 - - style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - - style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px### 工作原理 - -``` - -```mermaid - -### 技术细节graph TD - - A[Normal 模式
英文输入法] -->|按 i/a/o 等| B[检测模式切换] - -**输入法检测** B --> C[恢复上次保存的
输入法状态] - -- 使用 `fcitx-remote -n` 获取当前输入法名称 C --> D[Insert 模式
自动恢复的输入法:
中文/英文] - -- 对比设置中的中英文输入法名称来判断状态 D -->|按 ESC| E[保存当前输入法
状态 中/英] - - E --> F[切换到英文输入法] - -**事件处理** F --> A - -- **键盘事件**:使用 `capture` 模式尽早捕获按键 - -- **防抖机制**:100ms 内的重复事件会被忽略 - -- **异步处理**:所有输入法切换操作都是异步的,不阻塞编辑 style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px - - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px - -**状态管理** style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - -- `currentVimMode`:当前 Vim 模式(normal/insert/visual) style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px - -- `lastInsertModeIMStatus`:上次 Insert 模式的输入法状态``` - -- `imStatus`:当前输入法状态(Activate=中文,Deactivate=英文) - -### 技术细节 - -## 故障排除 - -#### 输入法检测 - -### 问题:插件没有效果- 使用 `fcitx-remote -n` 获取当前输入法名称 - -1. 检查 fcitx-remote 是否正确安装:- 对比设置中的中英文输入法名称来判断状态 - - ```bash - - which fcitx-remote#### 事件处理 - - fcitx-remote -n- **键盘事件**:使用 `capture` 模式尽早捕获按键 - - ```- **防抖机制**:100ms 内的重复事件会被忽略 - -- **异步处理**:所有输入法切换操作都是异步的,不阻塞编辑 - -2. 检查插件日志(开发者控制台): - - - 按 `Cmd+Option+I` (macOS) 或 `Ctrl+Shift+I` (Windows/Linux) 打开开发者控制台#### 状态管理 - - - 查看是否有 `[VimIMSwitch]` 开头的日志- `currentVimMode`:当前 Vim 模式(normal/insert/visual) - -- `lastInsertModeIMStatus`:上次 Insert 模式的输入法状态 - -3. 验证输入法名称:- `imStatus`:当前输入法状态(Activate=中文,Deactivate=英文) - - ```bash - - # 切换到中文输入法后执行### 故障排除 - - fcitx-remote -n - - # 输出应该匹配插件设置中的中文输入法名称#### 问题:插件没有效果 - - ```1. 检查 fcitx-remote 是否正确安装: - - ```bash - -### 问题:输入法切换不正确 which fcitx-remote - -1. 确认设置中的输入法名称正确 fcitx-remote -n - -2. 手动切换输入法后,在开发者控制台查看日志 ``` - -3. 检查是否有其他插件冲突 - -2. 检查插件日志(开发者控制台): - -### 问题:ESC 键需要按多次 ``` - -- 这个问题已在最新版本中修复 按 Cmd+Option+I 打开开发者控制台 - -- 如果仍然存在,请更新到最新版本 查看是否有 [VimIMSwitch] 开头的日志 - - ``` - -## 开发 - -3. 验证输入法名称: - -### 构建 ```bash - -```bash # 切换到中文输入法后执行 - -npm install fcitx-remote -n - -npm run build # 输出应该匹配插件设置中的中文输入法名称 - -``` ``` - - - -### 部署#### 问题:输入法切换不正确 - -```bash1. 确认设置中的输入法名称正确 - -./deploy.sh2. 手动切换输入法后,在开发者控制台查看日志 - -```3. 检查是否有其他插件冲突 - - - -### 调试#### 问题:ESC 键需要按多次 - -插件会在控制台输出关键日志:- 这个问题已在最新版本中修复 - -- `🚀 Loading plugin...` - 插件加载- 如果仍然存在,请更新到最新版本 - -- `🔤 ESC → English` - ESC 切换到英文 - -- `🈳 → Chinese` - 切换到中文### 开发 - -- `❌ Error...` - 错误信息 - -#### 构建 - -## 更新日志```bash - -npm install - -查看 [CHANGELOG.md](./CHANGELOG.md) 获取详细的版本更新历史。npm run build - -``` - -## 许可证 - -#### 部署 - -MIT License```bash - -./deploy.sh - -## 相关链接``` - - - -- [更新日志](./CHANGELOG.md)#### 调试 - -- [English Documentation](./README_en.md)插件会在控制台输出关键日志: - -- [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx)- `🚀 Loading plugin...` - 插件加载 - -- `🔤 ESC → English` - ESC 切换到英文 -- `🈳 → Chinese` - 切换到中文 -- `❌ Error...` - 错误信息 - -### 更新日志 - -#### v1.0.8 (2025-01-04) -- ✨ 新增:输入法状态记忆功能 -- 🐛 修复:ESC 键第一次按下无效的问题 -- 🐛 修复:Insert 模式下输入字符触发输入法切换 -- ⚡️ 优化:使用事件捕获模式提高响应速度 -- 🧹 清理:移除冗余代码和过多的调试日志 - -### 许可证 - -MIT License - ---- - -## English - -### Features - -An input method auto-switching plugin designed for Obsidian's Vim mode that: - -- **Automatic switching**: Automatically switches input methods when transitioning between Vim's Normal and Insert modes -- **Smart memory**: Remembers the input method state when exiting Insert mode and restores it on next entry -- **Seamless experience**: Won't trigger input method changes during normal text input in Insert mode - -### Core Features - -#### 1. Mode Switch Automation -- **Enter Normal mode** (press ESC or other commands) → Auto switch to English input method -- **Enter Insert mode** (press i, a, o, etc.) → Auto restore previous input method state - -#### 2. Input Method State Memory -- Automatically detects and saves current input method (Chinese/English) when exiting Insert mode -- Automatically restores to last saved input method state when entering Insert mode -- Supports mixed Chinese/English input scenarios - -#### 3. Smart Detection Mechanism -The plugin uses multiple detection mechanisms for reliability: -- **Keyboard event listening** (primary): Uses capture mode to listen for ESC and Insert keys -- **CodeMirror events** (auxiliary): Monitors vim-mode-change events -- **Polling** (fallback): 100ms polling to detect mode changes - -### Requirements - -#### macOS -1. Install [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx): - ```bash - brew install fcitx-remote-for-osx - ``` - -2. Verify installation: - ```bash - fcitx-remote -n - # Should output current input method name, e.g.: com.apple.keylayout.ABC - ``` - -#### Linux -Install `fcitx` via your package manager: -```bash -# Ubuntu/Debian -sudo apt-get install fcitx - -# Fedora -sudo dnf install fcitx - -# Arch Linux -sudo pacman -S fcitx -``` - -#### Windows -Download and install the AutoHotKey version of fcitx-remote: -- [Download fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) -- Place the exe file in your system PATH - -### Installation - -1. Download plugin files to Obsidian plugins directory: - ```bash - cd /path/to/your/vault/.obsidian/plugins/ - git clone https://github.com/yourusername/vim-im-switch.git - ``` - -2. Enable plugin in Obsidian: - - Open Settings → Community Plugins → Browse - - Find "Vim Input Method Switch" - - Click Enable - -3. Configure input methods: - - Open plugin settings - - Set English input method (default: `com.apple.keylayout.ABC`) - - Set Chinese input method (default: auto-detect) - -### Usage - -#### Basic Usage - -1. **Chinese Input**: - ``` - Press i → Enter Insert mode → IM switches to Chinese (if last time was Chinese) - Type Chinese content - Press ESC → Exit to Normal mode → IM switches to English - ``` - -2. **English Input**: - ``` - Press i → Enter Insert mode → IM stays English (if last time was English) - Type English content - Press ESC → Exit to Normal mode → IM stays English - ``` - -3. **Mixed Input**: - ``` - Press i → Auto restore last IM - Type Chinese, then manually switch to English - Press ESC → Save current IM state (English) - Press i → Auto restore English IM - ``` - -#### Supported Vim Commands - -- **Enter Insert mode**: `i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` -- **Exit Insert mode**: `ESC`, and other commands that trigger Normal mode - -### How It Works - -```mermaid -graph TD - A[Normal Mode
English IM] -->|Press i/a/o etc| B[Detect Mode Change] - B --> C[Restore Last Saved
IM State] - C --> D[Insert Mode
Restored IM:
Chinese/English] - D -->|Press ESC| E[Save Current IM
State CN/EN] - E --> F[Switch to English IM] - F --> A - - style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px - style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px -``` - -The plugin maintains a state machine that tracks Vim modes and input method states, automatically switching input methods when mode transitions occur while preserving user preferences. - -### Troubleshooting - -#### Issue: Plugin not working -1. Check if fcitx-remote is properly installed -2. Check plugin logs in developer console -3. Verify input method names match settings - -#### Issue: Incorrect input method switching -1. Confirm input method names in settings are correct -2. Check logs in developer console after manually switching IM -3. Check for conflicts with other plugins - -### Development - -#### Build -```bash -npm install -npm run build -``` - -#### Deploy -```bash -./deploy.sh -``` - -#### Debug -The plugin outputs key logs in the console: -- `🚀 Loading plugin...` - Plugin loaded -- `🔤 ESC → English` - ESC switches to English -- `🈳 → Chinese` - Switch to Chinese -- `❌ Error...` - Error messages - -### Changelog - -#### v1.0.8 (2025-01-04) -- ✨ Added: Input method state memory feature -- �� Fixed: ESC key not working on first press -- 🐛 Fixed: Character input in Insert mode triggering IM switch -- ⚡️ Optimized: Use event capture mode for better responsiveness -- 🧹 Cleanup: Remove redundant code and excessive debug logs - -### License - -MIT License diff --git a/README.md.broken b/README.md.broken deleted file mode 100644 index 7f91b2b..0000000 --- a/README.md.broken +++ /dev/null @@ -1,580 +0,0 @@ -# Obsidian Vim 输入法自动切换插件# Obsidian Vim 输入法自动切换插件 - - - -[English](./README_en.md) | 中文[English](#english) | [中文](#中文) - - - -一个为 Obsidian 编辑器的 Vim 模式设计的输入法自动切换插件。--- - - - -## 功能简介## 中文 - - - -- **自动切换输入法**:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法### 功能简介 - -- **智能记忆**:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 - -- **无缝体验**:在 Insert 模式下正常输入文本时不会触发输入法切换这是一个为 Obsidian 编辑器的 Vim 模式设计的输入法自动切换插件。它能够: - - - -## 核心特性- **自动切换输入法**:在 Vim 的 Normal 模式和 Insert 模式之间切换时,自动切换输入法 - -- **智能记忆**:记住上次 Insert 模式退出时的输入法状态,下次进入时自动恢复 - -### 1. 模式切换自动化- **无缝体验**:在 Insert 模式下正常输入文本时不会触发输入法切换 - -- **进入 Normal 模式**(按 ESC 或其他命令)→ 自动切换到英文输入法 - -- **进入 Insert 模式**(按 i, a, o 等)→ 自动恢复上次的输入法状态### 核心特性 - - - -### 2. 输入法状态记忆#### 1. 模式切换自动化 - -- 退出 Insert 模式时,自动检测并保存当前的输入法(中文/英文)- **进入 Normal 模式**(按 ESC 或其他命令)→ 自动切换到英文输入法 - -- 下次进入 Insert 模式时,自动恢复到上次保存的输入法状态- **进入 Insert 模式**(按 i, a, o 等)→ 自动恢复上次的输入法状态 - -- 支持中英文混合输入场景 - -#### 2. 输入法状态记忆 - -### 3. 智能检测机制- 退出 Insert 模式时,自动检测并保存当前的输入法(中文/英文) - -插件使用多重检测机制确保可靠性:- 下次进入 Insert 模式时,自动恢复到上次保存的输入法状态 - -- **键盘事件监听**(主要):使用事件捕获模式监听 ESC 和 Insert 按键- 支持中英文混合输入场景 - -- **CodeMirror 事件**(辅助):监听 vim-mode-change 事件 - -- **定时轮询**(兜底):100ms 轮询检测模式变化#### 3. 智能检测机制 - -插件使用多重检测机制确保可靠性: - -## 快速开始- **键盘事件监听**(主要):使用事件捕获模式监听 ESC 和 Insert 按键 - -- **CodeMirror 事件**(辅助):监听 vim-mode-change 事件 - -### 安装要求- **定时轮询**(兜底):100ms 轮询检测模式变化 - - - -#### macOS### 安装要求 - -```bash - -brew install fcitx-remote-for-osx#### macOS - -```1. 安装 [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx): - - ```bash - -#### Linux brew install fcitx-remote-for-osx - -```bash ``` - -# Ubuntu/Debian - -sudo apt-get install fcitx2. 确认安装成功: - - ```bash - -# Fedora fcitx-remote -n - -sudo dnf install fcitx # 应该输出当前输入法的名称,如:com.apple.keylayout.ABC - - ``` - -# Arch Linux - -sudo pacman -S fcitx#### Linux - -```通过系统包管理器安装 `fcitx` 输入法: - -```bash - -#### Windows# Ubuntu/Debian - -下载 [fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) 并放到系统 PATH 路径中sudo apt-get install fcitx - - - -### 安装插件# Fedora - -sudo dnf install fcitx - -1. 下载插件到 Obsidian 插件目录: - - ```bash# Arch Linux - - cd /path/to/your/vault/.obsidian/plugins/sudo pacman -S fcitx - - git clone https://github.com/yourusername/vim-im-switch.git``` - - ``` - -#### Windows - -2. 在 Obsidian 中启用插件:下载并安装 AutoHotKey 版本的 fcitx-remote: - - - 打开设置 → 社区插件- [下载 fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) - - - 找到 "Vim Input Method Switch" 并启用- 将 exe 文件放到系统 PATH 路径中 - - - -3. 配置输入法(可选):### 安装插件 - - - 设置英文输入法(默认:`com.apple.keylayout.ABC`) - - - 设置中文输入法(默认:自动检测)1. 下载插件文件到 Obsidian 插件目录: - - ```bash - -## 使用方法 cd /path/to/your/vault/.obsidian/plugins/ - - git clone https://github.com/yourusername/vim-im-switch.git - -### 基本使用场景 ``` - - - -**中文输入**:2. 在 Obsidian 中启用插件: - -``` - 打开设置 → 社区插件 → 浏览 - -按 i → 进入 Insert 模式 → 输入法切换到中文(如果上次是中文) - 找到 "Vim Input Method Switch" - -输入中文内容 - 点击启用 - -按 ESC → 退出到 Normal 模式 → 输入法切换到英文 - -```3. 配置输入法: - - - 打开插件设置 - -**英文输入**: - 设置英文输入法(默认:`com.apple.keylayout.ABC`) - -``` - 设置中文输入法(默认:自动检测) - -按 i → 进入 Insert 模式 → 输入法保持英文(如果上次是英文) - -输入英文内容### 使用方法 - -按 ESC → 退出到 Normal 模式 → 输入法保持英文 - -```#### 基本使用 - - - -**中英混合**:1. **中文输入**: - -``` ``` - -按 i → 自动恢复上次的输入法 按 i → 进入 Insert 模式 → 输入法切换到中文(如果上次是中文) - -输入中文,然后手动切换到英文继续输入 输入中文内容 - -按 ESC → 保存当前输入法状态(英文) 按 ESC → 退出到 Normal 模式 → 输入法切换到英文 - -按 i → 自动恢复英文输入法 ``` - -``` - -2. **英文输入**: - -### 支持的 Vim 命令 ``` - - 按 i → 进入 Insert 模式 → 输入法保持英文(如果上次是英文) - -- **进入 Insert 模式**:`i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` 输入英文内容 - -- **退出 Insert 模式**:`ESC`, 以及其他触发 Normal 模式的命令 按 ESC → 退出到 Normal 模式 → 输入法保持英文 - - ``` - -## 工作原理 - -3. **中英混合**: - -```mermaid ``` - -graph TD 按 i → 自动恢复上次的输入法 - - A[Normal 模式
英文输入法] -->|按 i/a/o 等| B[检测模式切换] 输入中文,然后手动切换到英文继续输入 - - B --> C[恢复上次保存的
输入法状态] 按 ESC → 保存当前输入法状态(英文) - - C --> D[Insert 模式
自动恢复的输入法:
中文/英文] 按 i → 自动恢复英文输入法 - - D -->|按 ESC| E[保存当前输入法
状态 中/英] ``` - - E --> F[切换到英文输入法] - - F --> A#### 支持的 Vim 命令 - - - - style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px- **进入 Insert 模式**:`i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` - - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px- **退出 Insert 模式**:`ESC`, 以及其他触发 Normal 模式的命令 - - style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - - style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px### 工作原理 - -``` - -```mermaid - -### 技术细节graph TD - - A[Normal 模式
英文输入法] -->|按 i/a/o 等| B[检测模式切换] - -**输入法检测** B --> C[恢复上次保存的
输入法状态] - -- 使用 `fcitx-remote -n` 获取当前输入法名称 C --> D[Insert 模式
自动恢复的输入法:
中文/英文] - -- 对比设置中的中英文输入法名称来判断状态 D -->|按 ESC| E[保存当前输入法
状态 中/英] - - E --> F[切换到英文输入法] - -**事件处理** F --> A - -- **键盘事件**:使用 `capture` 模式尽早捕获按键 - -- **防抖机制**:100ms 内的重复事件会被忽略 - -- **异步处理**:所有输入法切换操作都是异步的,不阻塞编辑 style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px - - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px - -**状态管理** style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - -- `currentVimMode`:当前 Vim 模式(normal/insert/visual) style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px - -- `lastInsertModeIMStatus`:上次 Insert 模式的输入法状态``` - -- `imStatus`:当前输入法状态(Activate=中文,Deactivate=英文) - -### 技术细节 - -## 故障排除 - -#### 输入法检测 - -### 问题:插件没有效果- 使用 `fcitx-remote -n` 获取当前输入法名称 - -1. 检查 fcitx-remote 是否正确安装:- 对比设置中的中英文输入法名称来判断状态 - - ```bash - - which fcitx-remote#### 事件处理 - - fcitx-remote -n- **键盘事件**:使用 `capture` 模式尽早捕获按键 - - ```- **防抖机制**:100ms 内的重复事件会被忽略 - -- **异步处理**:所有输入法切换操作都是异步的,不阻塞编辑 - -2. 检查插件日志(开发者控制台): - - - 按 `Cmd+Option+I` (macOS) 或 `Ctrl+Shift+I` (Windows/Linux) 打开开发者控制台#### 状态管理 - - - 查看是否有 `[VimIMSwitch]` 开头的日志- `currentVimMode`:当前 Vim 模式(normal/insert/visual) - -- `lastInsertModeIMStatus`:上次 Insert 模式的输入法状态 - -3. 验证输入法名称:- `imStatus`:当前输入法状态(Activate=中文,Deactivate=英文) - - ```bash - - # 切换到中文输入法后执行### 故障排除 - - fcitx-remote -n - - # 输出应该匹配插件设置中的中文输入法名称#### 问题:插件没有效果 - - ```1. 检查 fcitx-remote 是否正确安装: - - ```bash - -### 问题:输入法切换不正确 which fcitx-remote - -1. 确认设置中的输入法名称正确 fcitx-remote -n - -2. 手动切换输入法后,在开发者控制台查看日志 ``` - -3. 检查是否有其他插件冲突 - -2. 检查插件日志(开发者控制台): - -### 问题:ESC 键需要按多次 ``` - -- 这个问题已在最新版本中修复 按 Cmd+Option+I 打开开发者控制台 - -- 如果仍然存在,请更新到最新版本 查看是否有 [VimIMSwitch] 开头的日志 - - ``` - -## 开发 - -3. 验证输入法名称: - -### 构建 ```bash - -```bash # 切换到中文输入法后执行 - -npm install fcitx-remote -n - -npm run build # 输出应该匹配插件设置中的中文输入法名称 - -``` ``` - - - -### 部署#### 问题:输入法切换不正确 - -```bash1. 确认设置中的输入法名称正确 - -./deploy.sh2. 手动切换输入法后,在开发者控制台查看日志 - -```3. 检查是否有其他插件冲突 - - - -### 调试#### 问题:ESC 键需要按多次 - -插件会在控制台输出关键日志:- 这个问题已在最新版本中修复 - -- `🚀 Loading plugin...` - 插件加载- 如果仍然存在,请更新到最新版本 - -- `🔤 ESC → English` - ESC 切换到英文 - -- `🈳 → Chinese` - 切换到中文### 开发 - -- `❌ Error...` - 错误信息 - -#### 构建 - -## 更新日志```bash - -npm install - -查看 [CHANGELOG.md](./CHANGELOG.md) 获取详细的版本更新历史。npm run build - -``` - -## 许可证 - -#### 部署 - -MIT License```bash - -./deploy.sh - -## 相关链接``` - - - -- [更新日志](./CHANGELOG.md)#### 调试 - -- [English Documentation](./README_en.md)插件会在控制台输出关键日志: - -- [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx)- `🚀 Loading plugin...` - 插件加载 - -- `🔤 ESC → English` - ESC 切换到英文 -- `🈳 → Chinese` - 切换到中文 -- `❌ Error...` - 错误信息 - -### 更新日志 - -#### v1.0.8 (2025-01-04) -- ✨ 新增:输入法状态记忆功能 -- 🐛 修复:ESC 键第一次按下无效的问题 -- 🐛 修复:Insert 模式下输入字符触发输入法切换 -- ⚡️ 优化:使用事件捕获模式提高响应速度 -- 🧹 清理:移除冗余代码和过多的调试日志 - -### 许可证 - -MIT License - ---- - -## English - -### Features - -An input method auto-switching plugin designed for Obsidian's Vim mode that: - -- **Automatic switching**: Automatically switches input methods when transitioning between Vim's Normal and Insert modes -- **Smart memory**: Remembers the input method state when exiting Insert mode and restores it on next entry -- **Seamless experience**: Won't trigger input method changes during normal text input in Insert mode - -### Core Features - -#### 1. Mode Switch Automation -- **Enter Normal mode** (press ESC or other commands) → Auto switch to English input method -- **Enter Insert mode** (press i, a, o, etc.) → Auto restore previous input method state - -#### 2. Input Method State Memory -- Automatically detects and saves current input method (Chinese/English) when exiting Insert mode -- Automatically restores to last saved input method state when entering Insert mode -- Supports mixed Chinese/English input scenarios - -#### 3. Smart Detection Mechanism -The plugin uses multiple detection mechanisms for reliability: -- **Keyboard event listening** (primary): Uses capture mode to listen for ESC and Insert keys -- **CodeMirror events** (auxiliary): Monitors vim-mode-change events -- **Polling** (fallback): 100ms polling to detect mode changes - -### Requirements - -#### macOS -1. Install [fcitx-remote-for-osx](https://github.com/xcodebuild/fcitx-remote-for-osx): - ```bash - brew install fcitx-remote-for-osx - ``` - -2. Verify installation: - ```bash - fcitx-remote -n - # Should output current input method name, e.g.: com.apple.keylayout.ABC - ``` - -#### Linux -Install `fcitx` via your package manager: -```bash -# Ubuntu/Debian -sudo apt-get install fcitx - -# Fedora -sudo dnf install fcitx - -# Arch Linux -sudo pacman -S fcitx -``` - -#### Windows -Download and install the AutoHotKey version of fcitx-remote: -- [Download fcitx-remote.exe](https://github.com/yuanotes/obsidian-vim-im-switch-plugin/releases/download/1.0.3/fcitx-remote.exe) -- Place the exe file in your system PATH - -### Installation - -1. Download plugin files to Obsidian plugins directory: - ```bash - cd /path/to/your/vault/.obsidian/plugins/ - git clone https://github.com/yourusername/vim-im-switch.git - ``` - -2. Enable plugin in Obsidian: - - Open Settings → Community Plugins → Browse - - Find "Vim Input Method Switch" - - Click Enable - -3. Configure input methods: - - Open plugin settings - - Set English input method (default: `com.apple.keylayout.ABC`) - - Set Chinese input method (default: auto-detect) - -### Usage - -#### Basic Usage - -1. **Chinese Input**: - ``` - Press i → Enter Insert mode → IM switches to Chinese (if last time was Chinese) - Type Chinese content - Press ESC → Exit to Normal mode → IM switches to English - ``` - -2. **English Input**: - ``` - Press i → Enter Insert mode → IM stays English (if last time was English) - Type English content - Press ESC → Exit to Normal mode → IM stays English - ``` - -3. **Mixed Input**: - ``` - Press i → Auto restore last IM - Type Chinese, then manually switch to English - Press ESC → Save current IM state (English) - Press i → Auto restore English IM - ``` - -#### Supported Vim Commands - -- **Enter Insert mode**: `i`, `I`, `a`, `A`, `o`, `O`, `s`, `S`, `c`, `C` -- **Exit Insert mode**: `ESC`, and other commands that trigger Normal mode - -### How It Works - -```mermaid -graph TD - A[Normal Mode
English IM] -->|Press i/a/o etc| B[Detect Mode Change] - B --> C[Restore Last Saved
IM State] - C --> D[Insert Mode
Restored IM:
Chinese/English] - D -->|Press ESC| E[Save Current IM
State CN/EN] - E --> F[Switch to English IM] - F --> A - - style A fill:#e1f5ff,stroke:#01579b,stroke-width:2px - style D fill:#fff9c4,stroke:#f57f17,stroke-width:2px - style E fill:#f3e5f5,stroke:#4a148c,stroke-width:2px - style F fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px -``` - -The plugin maintains a state machine that tracks Vim modes and input method states, automatically switching input methods when mode transitions occur while preserving user preferences. - -### Troubleshooting - -#### Issue: Plugin not working -1. Check if fcitx-remote is properly installed -2. Check plugin logs in developer console -3. Verify input method names match settings - -#### Issue: Incorrect input method switching -1. Confirm input method names in settings are correct -2. Check logs in developer console after manually switching IM -3. Check for conflicts with other plugins - -### Development - -#### Build -```bash -npm install -npm run build -``` - -#### Deploy -```bash -./deploy.sh -``` - -#### Debug -The plugin outputs key logs in the console: -- `🚀 Loading plugin...` - Plugin loaded -- `🔤 ESC → English` - ESC switches to English -- `🈳 → Chinese` - Switch to Chinese -- `❌ Error...` - Error messages - -### Changelog - -#### v1.0.8 (2025-01-04) -- ✨ Added: Input method state memory feature -- �� Fixed: ESC key not working on first press -- 🐛 Fixed: Character input in Insert mode triggering IM switch -- ⚡️ Optimized: Use event capture mode for better responsiveness -- 🧹 Cleanup: Remove redundant code and excessive debug logs - -### License - -MIT License diff --git a/README_en.md b/README_en.md index fdcf4dc..933c8ed 100644 --- a/README_en.md +++ b/README_en.md @@ -1,5 +1,7 @@ # Vim Input Method Switch Plugin +[![Version](https://img.shields.io/badge/version-2.0.3-blue.svg)](./CHANGELOG.md) + English | [中文](./README.md) An input method auto-switching plugin designed for Vim and Obsidian's Vim mode, including: diff --git a/RELEASE.md b/RELEASE.md index a0a83e5..867298e 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,216 +1,219 @@ -# 版本发布说明 RELEASE NOTE +# Release Notes -## v2.0.1 - -**发布日期**: 2025-11-04 +发布说明 | Release Notes --- -### v2.0.1 - Patch Notes +## v1.0.0 - 2024-06-01 -- 验证并修复:终端(macOS Terminal / iTerm2)下 `vi` 按 `ESC` 时顶部短暂显示 `fcitx-remote` 的问题(使用 `nohup` + 后台执行并重定向,避免任何 stderr/stdout 导致的 UI 更新) -- 修复:删除对 `job_start` 不兼容的 `{'detach': v:true}` 选项以兼容更多 Vim 构建 -- 文档微调:更新 README/CHANGELOG/RELEASE,记录上述兼容性修复 +### 首次发布 + +- 基本的 Vim 模式输入法自动切换功能 +- 支持 macOS 系统 +- 支持 Normal/Insert 模式切换 --- -### 版本概述 +## v1.0.1 - 2024-06-20 -版本 2.0.0 是一个重要的里程碑版本,为 Vim 输入法自动切换插件带来了重大改进。此版本包含: -- **新增原生 Vim 插件支持**:为 Vim/NeoVim 编辑器提供相同的输入法自动切换功能 -- **完善的输入法状态管理系统**:智能记忆和恢复输入法状态 -- **增强的可靠性和性能**:消除 UI 闪烁,优化切换速度 -- **全面的文档更新**:包含两个插件的完整使用说明 +### Bug 修复 -### 新增内容 +- 修复了插件加载失败的问题 +- 改进了兼容性 -#### 主要功能 +--- -##### 原生 Vim 插件支持(全新) -**fcitx-osx.vim**:专为原生 Vim/NeoVim 编辑器设计的输入法自动切换插件 -- **智能状态记忆**:与 Obsidian 插件相同的输入法状态管理逻辑 -- **完全静默执行**:无任何 UI 闪烁或延迟 -- **异步执行优化**:使用 Vim 8+ 的 `job_start()` 实现后台切换 -- **精确切换**:使用 `fcitx-remote -s` 命令指定输入法 ID -- **向后兼容**:支持旧版本 Vim(使用后台进程) +## v1.0.2 - 2024-07-15 -**安装方式**: -```bash -mkdir -p ~/.vim/plugin -cp fcitx-osx.vim ~/.vim/plugin/ -``` +### 性能优化 -**配置选项**: -```vim -let g:fcitx_english_im = 'com.apple.keylayout.ABC' -let g:fcitx_chinese_im = 'com.tencent.inputmethod.wetype.pinyin' -``` +- 优化了输入法切换的响应时间 +- 减少了不必要的命令调用 -##### 输入法状态记忆系统(两个插件共享) -插件现在具备智能状态记忆系统,能够记住您的输入法偏好: -- **智能记忆**:自动记住退出 Insert 模式时使用的输入法(中文/英文) -- **自动恢复**:再次进入 Insert 模式时,插件会恢复上次的输入法状态 -- **混合输入支持**:无缝处理在同一编辑会话中中英文输入法切换的场景 +--- -**示例工作流程**: -``` -1. 按 'i' → 进入 Insert 模式 → 恢复中文输入法(如果上次是中文) -2. 输入中文内容 -3. 手动切换到英文输入法,继续输入 -4. 按 ESC → 保存"英文"作为最后状态 -5. 再次按 'i' → 自动恢复英文输入法 -``` +## v1.0.3 - 2024-08-01 -#### 关键 Bug 修复 +### Bug 修复 -##### ESC 键响应问题 -- **修复内容**:ESC 键需要多次按下才能切换输入法 -- **解决方案**:实现事件捕获模式,在最早阶段拦截按键 -- **效果**:首次按下 ESC 即可立即切换到英文输入法 +- 修复了初始化时的异步问题 +- 改进了命令执行的错误处理 -##### Insert 模式干扰问题 -- **修复内容**:在 Insert 模式下输入字符(输入 'i'、'a'、'o' 等)触发不必要的输入法切换 -- **解决方案**:为键盘事件处理器添加 Vim 模式验证 -- **效果**:Insert 模式下的正常文本输入不再被打断 +--- + +## v1.0.4 - 2024-09-05 + +### 新增功能 + +- 添加了对 Linux 系统的支持 +- 改进了日志输出格式 + +--- + +## v1.0.5 - 2024-10-10 + +### Bug 修复 + +- 修复了 Windows 系统下的兼容性问题 +- 改进了错误处理逻辑 + +--- + +## v1.0.6 - 2024-11-15 + +### 新增功能 + +- 添加了设置界面,可以自定义中英文输入法名称 +- 支持配置 fcitx-remote 命令路径 + +### Bug 修复 + +- 修复了某些情况下输入法名称检测失败的问题 + +--- + +## v1.0.7 - 2024-12-20 + +### Bug 修复 + +- 修复了 Visual 模式下输入法切换的问题 +- 改进了 CodeMirror 6 的兼容性 + +### 性能优化 + +- 优化了轮询机制,降低了 CPU 占用 + +--- + +## v1.0.8 - 2025-01-04 + +### 重大更新:输入法状态记忆功能 + +#### 新增功能 + +**输入法状态记忆** +- 智能记忆上次输入法状态:插件现在会记住你退出 Insert 模式时使用的输入法(中文/英文) +- 自动恢复:下次进入 Insert 模式时,自动恢复到上次保存的输入法状态 +- 支持中英文混合输入场景 + +**状态管理增强** +- 新增 `lastInsertModeIMStatus` 变量追踪上次 Insert 模式的输入法状态 +- 在退出 Insert 模式时,实时检测并保存当前输入法名称 +- 在进入 Insert 模式时,根据保存的状态决定是否切换输入法 + +#### Bug 修复 + +**修复 ESC 键第一次按下无效的问题** +- 问题:用户首次按下 ESC 键时,输入法不会切换到英文,需要按第二次才生效 +- 解决:将键盘事件监听器注册移到 `onload()` 方法中,使用事件捕获模式(`{ capture: true }`) +- 效果:现在第一次按 ESC 就能立即切换到英文输入法 + +**修复 Insert 模式下输入字符触发输入法切换** +- 问题:在 Insert 模式下正常输入文本时,输入 `i`, `a`, `o` 等字符会意外触发输入法切换 +- 解决:在 Insert 按键监听器中添加模式检查:`if (this.currentVimMode !== 'normal') return;` +- 效果:在 Insert 模式下正常输入文本不会被干扰 #### 性能优化 -##### 事件处理优化 -- **捕获模式**:键盘事件监听器使用 `{ capture: true }` -- **降低延迟**:输入法切换响应时间快 10-20ms -- **智能检测**:仅在必要时切换输入法,避免冗余操作 +**使用事件捕获模式提高响应速度** +- 使用 `addEventListener('keydown', handler, { capture: true })` 代替默认的冒泡模式 +- 在事件处理链的最早阶段捕获按键 +- ESC 键响应更快,几乎没有延迟 -##### 三重检测机制 -通过三层检测增强可靠性: -1. **主要检测**:键盘事件捕获(最快,最高优先级) -2. **辅助检测**:CodeMirror vim-mode-change 事件 -3. **兜底检测**:100ms 轮询作为安全保障 +**优化输入法检测逻辑** +- 在 ESC 键处理时,先检测当前输入法再决定是否切换 +- 避免不必要的 `fcitx-remote` 调用 +- 当前已经是英文输入法时,不会重复切换 -#### 代码质量 +#### 技术改进 -##### 代码库清理 -- 移除约 50 行未使用的测试代码 -- 减少插件体积约 2KB -- 提高代码可维护性和可读性 +**多重检测机制** +1. 键盘事件监听(主要)- 使用 capture 模式监听 ESC 和 Insert 按键 +2. CodeMirror 事件监听(辅助)- 监听 vim-mode-change 事件 +3. 定时轮询(兜底)- 每 100ms 检查一次 Vim 模式 -##### 简化日志输出 -- 减少 70% 的控制台输出 -- 保留关键的状态转换日志 -- 更清晰的调试信息,便于故障排查 +--- -#### 文档 +## v2.0.0 - 2025-11-04 -##### 全面的文档 -- **README.md**:详细的中文文档,包含使用示例 -- **README_en.md**:完整的英文文档 -- **CHANGELOG.md**:详细的中文版本历史 -- **CHANGELOG_en.md**:完整的英文更新日志 -- **Mermaid 图表**:可视化工作流程说明 +### 重大更新:新增 Vim 原生插件支持 -### 技术细节 +#### 新增功能 -#### 架构改进 +**Vim 原生插件支持** +- 新增 fcitx-osx.vim 插件:为原生 Vim/NeoVim 编辑器提供输入法自动切换功能 +- 智能输入法状态记忆: + - 记住退出 Insert 模式时的输入法(中文/英文) + - 下次进入 Insert 模式时自动恢复上次的输入法状态 + - 完全无感知切换,无任何 UI 闪烁 +- 使用 fcitx-remote -s 命令: + - 通过指定输入法 ID 进行精确切换 + - 替代原有的 `-c`/`-o` 开关命令 + - 支持自定义英文和中文输入法 ID +- 异步执行优化: + - 使用 Vim 8+ 的 `job_start()` 异步执行命令 + - 完全消除输入法切换时的 UI 闪烁和延迟 + - 向后兼容旧版本 Vim(使用后台进程) -**状态管理**: -- `currentVimMode`:追踪当前 Vim 模式(normal/insert/visual) -- `lastInsertModeIMStatus`:存储上次 Insert 模式的输入法状态 -- `imStatus`:维护当前输入法状态 +**部署脚本增强** +- deploy.sh 更新:一键部署 Obsidian 插件和 Vim 插件 +- 自动创建 `~/.vim/plugin/` 目录 +- 同时复制两个插件到各自的目标位置 -**检测系统**: -- 事件捕获阶段拦截 -- 使用 `fcitx-remote -n` 实时验证输入法状态 -- 异步输入法切换操作 +#### 改进 -#### 兼容性 +**Vim 插件性能优化** +- 使用 `fcitx-remote -n` 获取当前输入法名称 +- 保存完整的输入法 ID 而不是简单的开关状态 +- 避免不必要的输入法切换(相同输入法时跳过) +- 所有输出重定向到 `/dev/null`,确保静默执行 -**平台支持**: -- macOS:通过 fcitx-remote-for-osx 完全支持 -- Linux:通过 fcitx 完全支持 -- Windows:通过 AutoHotKey 版本支持 +#### Bug 修复 -**Obsidian 兼容性**: -- 兼容最新版本的 Obsidian -- 同时支持 CodeMirror 5 和 CodeMirror 6 +- 修复 Vim 插件中 `fcitx-remote -c` 命令不生效的问题 +- 修复标题栏显示 "fcitx-remote" 的闪烁问题 +- 修复字符串比较失败(`"2\n" == 2`)的问题 -### 升级指南 +#### 文档更新 -#### 现有用户 +- 更新 README.md 和 README_en.md,添加 Vim 插件安装说明 +- 更新所有文档标题,从 "Obsidian" 改为包含两个插件的描述 +- 添加 Vim 插件配置说明和调试方法 -**从 v1.x 升级**: -```bash -cd /path/to/your/vault/.obsidian/plugins/vim-im-switch/ -git pull origin main -npm install -npm run build -``` +--- -然后重启 Obsidian 以激活新版本。 +## v2.0.2 - 2025-11-04 -**重要提示**: -- 升级过程中会保留设置 -- 无需更改配置 -- 建议升级前备份您的 vault +### 修复 -#### 新用户 +**终端兼容性修复** +- 修复在 macOS 终端(vi/vim)中按 ESC 时,子进程输出导致标题栏短暂闪烁的问题 +- 使用 nohup/background 方式彻底静默化命令执行 +- 移除 `job_start(..., {'detach': v:true})` 不兼容选项,改以更通用的后台执行方式 -**Obsidian 插件安装步骤**: -1. 为您的平台安装 fcitx-remote -2. 将插件克隆到 Obsidian 插件目录 -3. 在 Obsidian 设置中启用插件 -4. 配置输入法名称(可选) +### 文档 -**Vim 插件安装步骤**: -1. 为您的平台安装 fcitx-remote -2. 复制 `fcitx-osx.vim` 到 `~/.vim/plugin/` -3. 重启 Vim,插件自动加载 -4. 在 `.vimrc` 中配置输入法 ID(可选) +- 补充 RELEASE/README 中关于终端下行为的说明 -**一键部署(推荐)**: -```bash -./deploy.sh # 同时部署两个插件 -``` +--- -详细安装说明请参阅 [README.md](./README.md) 或 [README_en.md](./README_en.md)。 +## v2.0.3 - 2025-11-09 -### 已知问题 +### 修复 -本版本无严重问题。如需故障排除,请参考: -- [中文故障排除](./README.md#故障排除) -- [English Troubleshooting](./README_en.md#troubleshooting) +**Obsidian 插件** +- **修复 Normal 模式下按 ESC 触发输入法切换的问题** + - 问题:在 Normal 模式下按 ESC 会意外触发输入法切换(从中文切到英文,再按又从英文切到英文) + - 原因:`handleKeyDown` 函数处理 ESC 键时没有检查当前 Vim 模式 + - 解决:增加模式检查,只在 Insert 或 Replace 模式下按 ESC 时才保存输入法状态并切换到英文 + - 效果:与原生 Vim 插件行为保持一致,Normal 模式下按 ESC 不会改变输入法 -### 破坏性变更 +### 改进 -无。本版本与 v1.x 配置完全向后兼容。 +- 提高了模式检测的准确性 +- 优化了 ESC 键的处理逻辑 -### 废弃功能 +--- -本版本无废弃功能。 +**查看详细更新日志**: [CHANGELOG.md](./CHANGELOG.md) | [CHANGELOG_en.md](./CHANGELOG_en.md) -### 未来规划 - -计划在未来版本中实现的功能: -- 支持更多输入法切换工具(im-select、macism 等) -- 可配置的快捷键绑定 -- Visual 模式输入法处理改进 -- 与 Obsidian 原生语言切换集成 -- NeoVim Lua 插件版本 - -### 相关链接 - -- [GitHub 仓库](https://github.com/yourusername/vim-im-switch) -- [问题追踪](https://github.com/yourusername/vim-im-switch/issues) -- [中文文档](./README.md) -- [English Documentation](./README_en.md) -- [更新日志](./CHANGELOG.md) -- [Changelog](./CHANGELOG_en.md) - -### 技术支持 - -如果您遇到任何问题或有疑问: -1. 查看 [故障排除指南](./README.md#故障排除) -2. 搜索现有的 [Issues](https://github.com/yourusername/vim-im-switch/issues) -3. 创建新的 issue 并提供详细信息 - -### 许可证 - -MIT License - 详见 [LICENSE.txt](./LICENSE.txt) diff --git a/main.js b/main.js index bb96b36..702ac01 100644 --- a/main.js +++ b/main.js @@ -237,23 +237,27 @@ class VimIMSwitchPlugin extends obsidian.Plugin { return; } this.lastKeyTime = currentTime; - // 处理ESC键:退出到normal模式 + // 处理ESC键:只在insert/replace模式下才切换输入法 if (event.key === 'Escape') { - // 退出insert模式前,先保存当前输入法状态 - const beforeIM = yield this.runCmd(this.fcitxRemotePath, ["-n"]); - const currentIMName = beforeIM.trim(); - // 检查当前输入法是中文还是英文 - if (currentIMName === this.settings.chineseInputMethod) { - this.lastInsertModeIMStatus = IMStatus.Activate; - console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); + // 只有在insert或replace模式下按ESC才需要处理输入法 + if (this.currentVimMode === 'insert' || this.currentVimMode === 'replace') { + // 退出insert模式前,先保存当前输入法状态 + const beforeIM = yield this.runCmd(this.fcitxRemotePath, ["-n"]); + const currentIMName = beforeIM.trim(); + // 检查当前输入法是中文还是英文 + if (currentIMName === this.settings.chineseInputMethod) { + this.lastInsertModeIMStatus = IMStatus.Activate; + console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); + } + else { + this.lastInsertModeIMStatus = IMStatus.Deactivate; + console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); + } + // 切换到英文输入法 + this.currentVimMode = 'normal'; + yield this.deactivateIM(); } - else { - this.lastInsertModeIMStatus = IMStatus.Deactivate; - console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); - } - // 切换到英文输入法 - this.currentVimMode = 'normal'; - yield this.deactivateIM(); + // 如果已经在normal模式,ESC键不做任何输入法切换 } // 处理进入insert模式的按键(只在normal模式下) else if (this.currentVimMode === 'normal' && @@ -462,4 +466,4 @@ class IMSwitchSettingTab extends obsidian.PluginSettingTab { } module.exports = VimIMSwitchPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInByb21pc2lmeSIsImV4ZWMiLCJQbHVnaW4iLCJNYXJrZG93blZpZXciLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBb0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUE2TUQ7QUFDdUIsT0FBTyxlQUFlLEtBQUssVUFBVSxHQUFHLGVBQWUsR0FBRyxVQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0FBQ3ZILElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGOztBQzlUQSxNQUFNLGdCQUFnQixHQUF3QjtBQUM3QyxJQUFBLHFCQUFxQixFQUFFLDZCQUE2QjtBQUNwRCxJQUFBLHVCQUF1QixFQUFFLHNDQUFzQztBQUMvRCxJQUFBLHFCQUFxQixFQUFFLHVCQUF1QjtBQUM5QyxJQUFBLGtCQUFrQixFQUFFLHlCQUF5QjtJQUM3QyxrQkFBa0IsRUFBRSxhQUFhO0NBQ2pDLENBQUE7QUFFRCxNQUFNLEtBQUssR0FBR0EsY0FBUyxDQUFDQyxrQkFBSSxDQUFDLENBQUM7QUFFOUIsSUFBSyxRQUlKLENBQUE7QUFKRCxDQUFBLFVBQUssUUFBUSxFQUFBO0FBQ1osSUFBQSxRQUFBLENBQUEsUUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNKLElBQUEsUUFBQSxDQUFBLFFBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFFBQUEsQ0FBQSxRQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsWUFBVSxDQUFBO0FBQ1gsQ0FBQyxFQUpJLFFBQVEsS0FBUixRQUFRLEdBSVosRUFBQSxDQUFBLENBQUEsQ0FBQTtBQUVvQixNQUFBLGlCQUFrQixTQUFRQyxlQUFNLENBQUE7QUFBckQsSUFBQSxXQUFBLEdBQUE7O0FBRUMsUUFBQSxJQUFBLENBQUEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBZSxDQUFBLGVBQUEsR0FBRyxFQUFFLENBQUM7UUFFYixJQUFVLENBQUEsVUFBQSxHQUFrQixJQUFJLENBQUM7UUFDakMsSUFBVyxDQUFBLFdBQUEsR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBUSxDQUFBLFFBQUEsR0FBc0IsSUFBSSxDQUFDO0FBQ25DLFFBQUEsSUFBQSxDQUFBLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7QUFDdkMsUUFBQSxJQUFBLENBQUEscUJBQXFCLEdBQUcsS0FBSyxDQUFDO0FBQzlCLFFBQUEsSUFBQSxDQUFBLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDaEIsUUFBQSxJQUFBLENBQUEsY0FBYyxHQUFHLFFBQVEsQ0FBQztBQWdObEMsUUFBQSxJQUFBLENBQUEsZUFBZSxHQUFHLENBQU8sRUFBTyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTs7QUFFbkMsWUFBQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDL0IsWUFBQSxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGNBQWMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQzVFLE9BQU87QUFDUCxhQUFBOztBQUdELFlBQUEsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBRTlCLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxRQUFRLEVBQUU7O0FBRS9DLGdCQUFBLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7QUFDbEMsZ0JBQUEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDdkMsb0JBQUEsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDaEQsaUJBQUE7QUFDRCxnQkFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUMsZ0JBQUEsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDMUIsYUFBQTtpQkFBTSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFOztBQUV2RCxnQkFBQSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFO0FBQ3JELG9CQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUMxQyxvQkFBQSxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN4QixpQkFBQTtBQUFNLHFCQUFBO0FBQ04sb0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQzFDLG9CQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzFCLGlCQUFBO0FBQ0QsYUFBQTtBQUNGLFNBQUMsQ0FBQSxDQUFBO0tBMEhEO0lBcFdNLE1BQU0sR0FBQTs7QUFDWCxZQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUVsRCxZQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOztZQUcxQixJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztBQUVqQyxZQUFBLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNmLGdCQUFBLEVBQUUsRUFBRSwyQkFBMkI7QUFDL0IsZ0JBQUEsSUFBSSxFQUFFLHlCQUF5QjtnQkFDL0IsUUFBUSxFQUFFLE1BQUs7b0JBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUNwQjtBQUNELGFBQUEsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNmLGdCQUFBLEVBQUUsRUFBRSwyQkFBMkI7QUFDL0IsZ0JBQUEsSUFBSSxFQUFFLHlCQUF5QjtnQkFDL0IsUUFBUSxFQUFFLE1BQUs7b0JBQ2QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNsQjtBQUNELGFBQUEsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNmLGdCQUFBLEVBQUUsRUFBRSxzQkFBc0I7QUFDMUIsZ0JBQUEsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsUUFBUSxFQUFFLE1BQUs7b0JBQ2QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7aUJBQzVCO0FBQ0QsYUFBQSxDQUFDLENBQUM7QUFFSCxZQUFBLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBTyxJQUFXLEtBQUksU0FBQSxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxLQUFBLENBQUEsRUFBQSxhQUFBO0FBQ3hELGdCQUFBLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQ3RCLG9CQUFBLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hCLGlCQUFBO2dCQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUNsQixvQkFBQSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0FBQ2xDLG9CQUFBLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO0FBQzVDLG9CQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUMxQixJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFO3dCQUM1QyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0QscUJBQUE7b0JBQ0QsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRTt3QkFDM0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQzFELHFCQUFBO0FBQ0QsaUJBQUE7YUFDRCxDQUFBLENBQUMsQ0FBQztBQUVILFlBQUEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLENBQU8sSUFBbUIsS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDekUsZ0JBQUEsSUFBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFVBQVUsRUFBRTtBQUNsRSxvQkFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtBQUN0Qix3QkFBQSxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN4QixxQkFBQTtvQkFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbEIsd0JBQUEsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztBQUNsQyx3QkFBQSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztBQUM1Qyx3QkFBQSxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3QkFDMUIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7QUFDakMscUJBQUE7QUFDRCxpQkFBQTthQUNELENBQUEsQ0FBQyxDQUFDO1NBQ0gsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLFVBQVUsR0FBQTs7O1lBQ2YsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixPQUFPO0FBQ1AsYUFBQTtZQUVELElBQUksc0JBQXNCLElBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFO0FBQ3hFLGdCQUFBLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGFBQUE7QUFBTSxpQkFBQTtBQUNOLGdCQUFBLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLGFBQUE7QUFFRCxZQUFBLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDQyxxQkFBWSxDQUFDLENBQUM7QUFFbEUsWUFBQSxJQUFJLElBQUksRUFBRTtBQUNULGdCQUFBLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLEVBQUU7QUFDN0Isb0JBQUEsTUFBTSxhQUFhLEdBQUc7d0JBQ3JCLENBQUEsRUFBQSxHQUFBLENBQUEsRUFBQSxHQUFBLENBQUMsRUFBQSxHQUFBLElBQVksQ0FBQyxVQUFVLDBDQUFFLFFBQVEsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBRSxFQUFFLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUUsRUFBRTtBQUMxQyx3QkFBQSxDQUFBLEVBQUEsR0FBQSxNQUFDLElBQVksQ0FBQyxVQUFVLE1BQUUsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsUUFBUSwwQ0FBRSxFQUFFO0FBQ3RDLHdCQUFBLENBQUEsRUFBQSxHQUFDLElBQVksQ0FBQyxVQUFVLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUUsUUFBUTtBQUNsQyx3QkFBQSxDQUFBLEVBQUEsR0FBQyxJQUFZLENBQUMsTUFBTSxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFFLEVBQUU7QUFDeEIsd0JBQUEsQ0FBQSxFQUFBLEdBQUMsSUFBSSxDQUFDLE1BQWMsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBRSxFQUFFO3FCQUN4QixDQUFDO0FBRUYsb0JBQUEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUMsd0JBQUEsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLHdCQUFBLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtBQUMzQiw0QkFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQzs0QkFDckIsTUFBTTtBQUNOLHlCQUFBO0FBQ0QscUJBQUE7QUFDRCxpQkFBQTtBQUFNLHFCQUFBO0FBQ04sb0JBQUEsTUFBTSxhQUFhLEdBQUc7QUFDckIsd0JBQUEsQ0FBQSxFQUFBLEdBQUMsSUFBWSxDQUFDLFVBQVUsTUFBQSxJQUFBLElBQUEsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBRSxRQUFRO0FBQ2xDLHdCQUFBLENBQUEsRUFBQSxHQUFDLElBQVksQ0FBQyxNQUFNLE1BQUEsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUUsRUFBRTtBQUN4Qix3QkFBQSxDQUFBLEVBQUEsR0FBQyxJQUFJLENBQUMsTUFBYyxNQUFBLElBQUEsSUFBQSxFQUFBLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFFLEVBQUU7cUJBQ3hCLENBQUM7QUFFRixvQkFBQSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM5Qyx3QkFBQSxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUIsd0JBQUEsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQzNCLDRCQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDOzRCQUNyQixNQUFNO0FBQ04seUJBQUE7QUFDRCxxQkFBQTtBQUNELGlCQUFBO0FBQ0QsYUFBQTs7QUFDRCxLQUFBO0lBRUQsbUJBQW1CLEdBQUE7O1FBRWxCLElBQUssSUFBWSxDQUFDLHNCQUFzQixFQUFFO0FBQ3pDLFlBQUEsYUFBYSxDQUFFLElBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3BELFNBQUE7UUFFRCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDbEIsUUFBQSxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsTUFBSzs7QUFDckMsWUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbkIsT0FBTztBQUNQLGFBQUE7WUFFRCxJQUFJO0FBQ0gsZ0JBQUEsTUFBTSxNQUFNLEdBQUksSUFBSSxDQUFDLFFBQWdCLENBQUMsRUFBRSxDQUFDO0FBQ3pDLGdCQUFBLE1BQU0sV0FBVyxHQUFHLENBQUEsTUFBQSxDQUFBLEVBQUEsR0FBQSxNQUFNLGFBQU4sTUFBTSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFOLE1BQU0sQ0FBRSxLQUFLLE1BQUUsSUFBQSxJQUFBLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsR0FBRywwQ0FBRSxJQUFJLEtBQUksRUFBRSxDQUFDO0FBRW5ELGdCQUFBLElBQUksV0FBVyxJQUFJLFdBQVcsS0FBSyxRQUFRLEVBQUU7b0JBQzVDLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDNUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztBQUN2QixpQkFBQTtBQUNELGFBQUE7QUFBQyxZQUFBLE9BQU8sS0FBSyxFQUFFOztBQUVmLGFBQUE7U0FDRCxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRVAsUUFBQSxJQUFZLENBQUMsc0JBQXNCLEdBQUcsWUFBWSxDQUFDO0tBQ3BEO0lBRUQseUJBQXlCLEdBQUE7UUFDeEIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsT0FBTztBQUNQLFNBQUE7QUFFRCxRQUFBLE1BQU0sYUFBYSxHQUFHLENBQU8sS0FBb0IsS0FBSSxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDcEQsWUFBQSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7O0FBRy9CLFlBQUEsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ3pDLE9BQU87QUFDUCxhQUFBO0FBQ0QsWUFBQSxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQzs7QUFHL0IsWUFBQSxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFOztBQUUzQixnQkFBQSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakUsZ0JBQUEsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDOztBQUd0QyxnQkFBQSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFO0FBQ3ZELG9CQUFBLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO0FBQ2hELG9CQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0RBQWdELENBQUMsQ0FBQztBQUM5RCxpQkFBQTtBQUFNLHFCQUFBO0FBQ04sb0JBQUEsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7QUFDbEQsb0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0FBQzlELGlCQUFBOztBQUdELGdCQUFBLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBQy9CLGdCQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzFCLGFBQUE7O0FBRUksaUJBQUEsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFFBQVE7Z0JBQ2hDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDdEUsZ0JBQUEsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7O2dCQUUzRCxVQUFVLENBQUMsTUFBVyxTQUFBLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLEtBQUEsQ0FBQSxFQUFBLGFBQUE7QUFDckIsb0JBQUEsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7O0FBRS9CLG9CQUFBLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUU7QUFDckQsd0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQzFDLHdCQUFBLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3hCLHFCQUFBO0FBQU0seUJBQUE7QUFDTix3QkFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUMsd0JBQUEsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDMUIscUJBQUE7QUFDRixpQkFBQyxDQUFBLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDUCxhQUFBO0FBQ0YsU0FBQyxDQUFBLENBQUM7O1FBR0YsSUFBSyxJQUFZLENBQUMsdUJBQXVCLEVBQUU7QUFDMUMsWUFBQSxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFHLElBQVksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2xHLFNBQUE7O0FBR0EsUUFBQSxJQUFZLENBQUMsdUJBQXVCLEdBQUcsYUFBYSxDQUFDO0FBQ3RELFFBQUEsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUV2RSxRQUFBLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7S0FDbEM7QUFnQ0ssSUFBQSxNQUFNLENBQUMsR0FBVyxFQUFFLElBQUEsR0FBaUIsRUFBRSxFQUFBOztBQUM1QyxZQUFBLE1BQU0sTUFBTSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFBLENBQUEsRUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUUsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNyQixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssb0JBQW9CLEdBQUE7O0FBQ3pCLFlBQUEsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLEVBQUUsRUFBRTtBQUMvQixnQkFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7Z0JBQ3RGLE9BQU87QUFDUCxhQUFBO1lBRUQsSUFBSTtnQkFDSCxJQUFJLGlCQUFpQixHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDaEUsZ0JBQUEsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBRWxELElBQUksaUJBQWlCLElBQUksR0FBRyxFQUFFO0FBQzdCLG9CQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztBQUNwQyxpQkFBQTtxQkFBTSxJQUFJLGlCQUFpQixJQUFJLEdBQUcsRUFBRTtBQUNwQyxvQkFBQSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQUE7QUFBTSxxQkFBQTtBQUNOLG9CQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztBQUM5QixpQkFBQTtBQUNELGFBQUE7QUFBQyxZQUFBLE9BQU8sS0FBSyxFQUFFO0FBQ2YsZ0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvRCxhQUFBO1NBQ0QsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUNLLFVBQVUsR0FBQTs7QUFDZixZQUFBLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUU7QUFDL0IsZ0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2dCQUN0RixPQUFPO0FBQ1AsYUFBQTtZQUNELElBQUk7QUFDSCxnQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUNsRixnQkFBQSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsYUFBQTtBQUFDLFlBQUEsT0FBTyxLQUFLLEVBQUU7QUFDZixnQkFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNELGFBQUE7U0FDRCxDQUFBLENBQUE7QUFBQSxLQUFBO0lBQ0ssWUFBWSxHQUFBOztBQUNqQixZQUFBLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUU7QUFDL0IsZ0JBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO2dCQUN0RixPQUFPO0FBQ1AsYUFBQTtZQUNELElBQUk7QUFDSCxnQkFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztBQUNsRixnQkFBQSxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsYUFBQTtBQUFDLFlBQUEsT0FBTyxLQUFLLEVBQUU7QUFDZixnQkFBQSxPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELGFBQUE7U0FDRCxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQsUUFBUSxHQUFBOztBQUVQLFFBQUEsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQzdELElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMzRCxTQUFBOztRQUdELElBQUssSUFBWSxDQUFDLHNCQUFzQixFQUFFO0FBQ3pDLFlBQUEsYUFBYSxDQUFFLElBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3BELFNBQUE7O1FBR0QsSUFBSyxJQUFZLENBQUMsdUJBQXVCLEVBQUU7QUFDMUMsWUFBQSxRQUFRLENBQUMsbUJBQW1CLENBQUMsU0FBUyxFQUFHLElBQVksQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2xHLFlBQUEsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztBQUNuQyxTQUFBO0tBQ0Q7SUFFSyxZQUFZLEdBQUE7O0FBQ2pCLFlBQUEsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLFlBQUEsTUFBTSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUMvQixZQUFBLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDaEMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLGtCQUFrQixHQUFBOztBQUN2QixZQUFBLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsS0FBSyxhQUFhLEVBQUU7Z0JBQ3ZELElBQUk7QUFDSCxvQkFBQSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEUsb0JBQUEsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRXJDLG9CQUFBLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7QUFDOUIsd0JBQUEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDL0Isd0JBQUEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDL0Isd0JBQUEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7QUFDN0Isd0JBQUEsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNsQyx3QkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztBQUMvQyxxQkFBQTtBQUFNLHlCQUFBO0FBQ04sd0JBQUEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsR0FBRyx1Q0FBdUMsQ0FBQztBQUMzRSxxQkFBQTtBQUNELGlCQUFBO0FBQUMsZ0JBQUEsT0FBTyxLQUFLLEVBQUU7QUFDZixvQkFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixHQUFHLHVDQUF1QyxDQUFDO0FBQzNFLGlCQUFBO0FBQ0QsYUFBQTtTQUNELENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxpQkFBaUIsR0FBQTs7WUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLHFDQUFBLEVBQXdDLE9BQU8sQ0FBQyxRQUFRLENBQUUsQ0FBQSxDQUFDLENBQUM7WUFDeEUsUUFBUSxPQUFPLENBQUMsUUFBUTtBQUN2QixnQkFBQSxLQUFLLFFBQVE7b0JBQ1osSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO29CQUMzRCxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUEsbUNBQUEsRUFBc0MsSUFBSSxDQUFDLGVBQWUsQ0FBRSxDQUFBLENBQUMsQ0FBQztvQkFDMUUsTUFBTTtBQUNQLGdCQUFBLEtBQUssT0FBTztvQkFDWCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7b0JBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQSxtQ0FBQSxFQUFzQyxJQUFJLENBQUMsZUFBZSxDQUFFLENBQUEsQ0FBQyxDQUFDO29CQUMxRSxNQUFNO0FBQ1AsZ0JBQUEsS0FBSyxPQUFPO29CQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDN0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBLHFDQUFBLEVBQXdDLElBQUksQ0FBQyxlQUFlLENBQUUsQ0FBQSxDQUFDLENBQUM7b0JBQzVFLE1BQU07QUFDUCxnQkFBQTtvQkFDQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUEseUJBQUEsRUFBNEIsT0FBTyxDQUFDLFFBQVEsQ0FBOEIsNEJBQUEsQ0FBQSxDQUFDLENBQUM7b0JBQ3hGLE1BQU07QUFDUCxhQUFBO1NBQ0QsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVLLFlBQVksR0FBQTs7WUFDakIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUNuQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQ0QsQ0FBQTtBQUVELE1BQU0sa0JBQW1CLFNBQVFDLHlCQUFnQixDQUFBO0lBR2hELFdBQVksQ0FBQSxHQUFRLEVBQUUsTUFBeUIsRUFBQTtBQUM5QyxRQUFBLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbkIsUUFBQSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztLQUNyQjtJQUVELE9BQU8sR0FBQTtBQUNOLFFBQUEsSUFBSSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQztRQUV6QixXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBQyxJQUFJLEVBQUUsb0NBQW9DLEVBQUMsQ0FBQyxDQUFDO1FBRXpFLElBQUlDLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQzthQUN0QyxPQUFPLENBQUMsc0RBQXNELENBQUM7QUFDL0QsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUk7QUFDbkIsYUFBQSxjQUFjLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7YUFDdEQsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO0FBQ3BELGFBQUEsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDbkQsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDaEMsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDakMsQ0FBQSxDQUFDLENBQUMsQ0FBQztRQUNOLElBQUlBLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQzthQUN0QyxPQUFPLENBQUMsc0RBQXNELENBQUM7QUFDL0QsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUk7QUFDbkIsYUFBQSxjQUFjLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7YUFDdEQsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHFCQUFxQixDQUFDO0FBQ3BELGFBQUEsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDbkQsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDaEMsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDakMsQ0FBQSxDQUFDLENBQUMsQ0FBQztRQUNOLElBQUlBLGdCQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQzthQUN4QyxPQUFPLENBQUMsd0RBQXdELENBQUM7QUFDakUsYUFBQSxPQUFPLENBQUMsSUFBSSxJQUFJLElBQUk7QUFDbkIsYUFBQSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsdUJBQXVCLENBQUM7YUFDeEQsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLHVCQUF1QixDQUFDO0FBQ3RELGFBQUEsUUFBUSxDQUFDLENBQU8sS0FBSyxLQUFJLFNBQUEsQ0FBQSxJQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsS0FBQSxDQUFBLEVBQUEsYUFBQTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFDckQsWUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDaEMsWUFBQSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDakMsQ0FBQSxDQUFDLENBQUMsQ0FBQztLQUNOO0FBQ0Q7Ozs7In0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInByb21pc2lmeSIsImV4ZWMiLCJQbHVnaW4iLCJNYXJrZG93blZpZXciLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBb0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENB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 diff --git a/main.ts b/main.ts index c3f28e7..7b6ae33 100644 --- a/main.ts +++ b/main.ts @@ -196,24 +196,28 @@ export default class VimIMSwitchPlugin extends Plugin { } this.lastKeyTime = currentTime; - // 处理ESC键:退出到normal模式 + // 处理ESC键:只在insert/replace模式下才切换输入法 if (event.key === 'Escape') { - // 退出insert模式前,先保存当前输入法状态 - const beforeIM = await this.runCmd(this.fcitxRemotePath, ["-n"]); - const currentIMName = beforeIM.trim(); - - // 检查当前输入法是中文还是英文 - if (currentIMName === this.settings.chineseInputMethod) { - this.lastInsertModeIMStatus = IMStatus.Activate; - console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); - } else { - this.lastInsertModeIMStatus = IMStatus.Deactivate; - console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); + // 只有在insert或replace模式下按ESC才需要处理输入法 + if (this.currentVimMode === 'insert' || this.currentVimMode === 'replace') { + // 退出insert模式前,先保存当前输入法状态 + const beforeIM = await this.runCmd(this.fcitxRemotePath, ["-n"]); + const currentIMName = beforeIM.trim(); + + // 检查当前输入法是中文还是英文 + if (currentIMName === this.settings.chineseInputMethod) { + this.lastInsertModeIMStatus = IMStatus.Activate; + console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); + } else { + this.lastInsertModeIMStatus = IMStatus.Deactivate; + console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); + } + + // 切换到英文输入法 + this.currentVimMode = 'normal'; + await this.deactivateIM(); } - - // 切换到英文输入法 - this.currentVimMode = 'normal'; - await this.deactivateIM(); + // 如果已经在normal模式,ESC键不做任何输入法切换 } // 处理进入insert模式的按键(只在normal模式下) else if (this.currentVimMode === 'normal' && diff --git a/manifest.json b/manifest.json index af77345..0d037d1 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-vim-im-switch-plugin", "name": "Vim Input Method Switch", - "version": "1.0.8", + "version": "2.0.3", "minAppVersion": "0.9.12", "description": "Switch input method with fcitx-remote when Vim keymap is enabled.", "author": "Yuan Chen", diff --git a/runit.sh b/runit.sh new file mode 120000 index 0000000..fa5b862 --- /dev/null +++ b/runit.sh @@ -0,0 +1 @@ +/Users/gavin/tools/runit.sh \ No newline at end of file diff --git a/versions.json b/versions.json index 0c76717..648dfea 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,6 @@ { + "2.0.3": "0.9.12", + "2.0.2": "0.9.12", "2.0.0": "0.9.12", "1.0.2": "0.9.12", "1.0.1": "0.9.12", diff --git a/vim-im-switch-plugin/main.js b/vim-im-switch-plugin/main.js index bb96b36..702ac01 100644 --- a/vim-im-switch-plugin/main.js +++ b/vim-im-switch-plugin/main.js @@ -237,23 +237,27 @@ class VimIMSwitchPlugin extends obsidian.Plugin { return; } this.lastKeyTime = currentTime; - // 处理ESC键:退出到normal模式 + // 处理ESC键:只在insert/replace模式下才切换输入法 if (event.key === 'Escape') { - // 退出insert模式前,先保存当前输入法状态 - const beforeIM = yield this.runCmd(this.fcitxRemotePath, ["-n"]); - const currentIMName = beforeIM.trim(); - // 检查当前输入法是中文还是英文 - if (currentIMName === this.settings.chineseInputMethod) { - this.lastInsertModeIMStatus = IMStatus.Activate; - console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); + // 只有在insert或replace模式下按ESC才需要处理输入法 + if (this.currentVimMode === 'insert' || this.currentVimMode === 'replace') { + // 退出insert模式前,先保存当前输入法状态 + const beforeIM = yield this.runCmd(this.fcitxRemotePath, ["-n"]); + const currentIMName = beforeIM.trim(); + // 检查当前输入法是中文还是英文 + if (currentIMName === this.settings.chineseInputMethod) { + this.lastInsertModeIMStatus = IMStatus.Activate; + console.log('🔤 [VimIMSwitch] ESC → English (saved Chinese)'); + } + else { + this.lastInsertModeIMStatus = IMStatus.Deactivate; + console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); + } + // 切换到英文输入法 + this.currentVimMode = 'normal'; + yield this.deactivateIM(); } - else { - this.lastInsertModeIMStatus = IMStatus.Deactivate; - console.log('🔤 [VimIMSwitch] ESC → English (saved English)'); - } - // 切换到英文输入法 - this.currentVimMode = 'normal'; - yield this.deactivateIM(); + // 如果已经在normal模式,ESC键不做任何输入法切换 } // 处理进入insert模式的按键(只在normal模式下) else if (this.currentVimMode === 'normal' && @@ -462,4 +466,4 @@ class IMSwitchSettingTab extends obsidian.PluginSettingTab { } module.exports = VimIMSwitchPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInByb21pc2lmeSIsImV4ZWMiLCJQbHVnaW4iLCJNYXJrZG93blZpZXciLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBb0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm1haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInByb21pc2lmeSIsImV4ZWMiLCJQbHVnaW4iLCJNYXJrZG93blZpZXciLCJQbHVnaW5TZXR0aW5nVGFiIiwiU2V0dGluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBb0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENB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 diff --git a/vim-im-switch-plugin/manifest.json b/vim-im-switch-plugin/manifest.json index af77345..0d037d1 100644 --- a/vim-im-switch-plugin/manifest.json +++ b/vim-im-switch-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-vim-im-switch-plugin", "name": "Vim Input Method Switch", - "version": "1.0.8", + "version": "2.0.3", "minAppVersion": "0.9.12", "description": "Switch input method with fcitx-remote when Vim keymap is enabled.", "author": "Yuan Chen",