Skip to content

znsoooo/IDLE-Advance

Repository files navigation

IDLE-Advance

About

  • Platform: >= Windows or Linux/macOS (untested)
  • Python: >= Python 3.4
  • Author: Shixian Li (znsoooo)
  • Github: https://github.com/znsoooo/IDLE-Advance
  • License: MIT License. Copyright (c) 2021-2024 Shixian Li (znsoooo). All rights reserved.

What is it?

  • IDLE-Advance add some useful extensions base on idlelib. It can be work on any platform where IDLE can be work.
  • See ~/idlealib/readme.md to get spec of each extension. It is same as open each script and watch __doc__.
  • Stop extension(s) by moveing script(s) to nouse folder.
  • It will generate .pybak file in script folder, and recent-saved.lst in userdir. So make sure no important files will be overwritten.

How to use?

Run directly

It is same as run such file by python or pythonw:

~/run.py  
~/idlealib/__main__.py  
~/idlealib/scripts/run.py

Install by pip

pip install idlea --upgrade

install windnd and qrcode for drag-open and code-share feature:

pip install windnd
pip install qrcode

Install by source

python setup.py install

Run script in shell

Script in Python folder ~/Scripts:

idlea

Run module as script

python -m idlealib

Run module in python

import idlealib
idlealib.run()

Run unit test of one extension

Open any ~/idlealib/*.py file directly.

Stop extension(s)

Move stopped script file to ~/nouse folder and restart idlea.

How to Set?

Quick set

Make shortcut to Desktop and Startup Menu.
Open the GUI config helper and setting:

~/idlealib/scripts/context_helper.pyw

Make shortcut

Make shortcut of ~/idlealib/__main__.py to Desktop or Startup Menu folder or anywhere.

Add to right-click menu (only windows)

Create path in regedit:

HKEY_CURRENT_USER\Software\Classes\Python.File\Shell\Edit with IDLE-Adv\command

and set value as:

"~\pythonw.exe" "~\idlealib\__main__.py" "%L" %*

IDLE增强计划(Advance)

运行方法

  • 平台: Windows/Python3.4 (Python3.4.4是Windows XP支持的最后一个版本,所以低于此版本的不再测试。Linux/macOS平台未做测试)
  • 依赖: 可选择地安装windnd库,增加拖拽脚本文件到窗口即可打开的快捷操作,不安装此依赖也不影响整体运行
  • 使用: 用python启动run.py文件,随后在此界面上操作打开其他的脚本文件即可
  • 功能: 见后文todolist,实现的功能已经标记,剩余部分争取在1年之内完成

关于项目

笔者的话

  • 本项目(IDLE-Advance)和另一个IDLEX的开发项目没有关联!
  • 由于该项目停止维护已久(2012年),并且该项目使用者的主要功能提升是增加了可以显示代码行号。
  • 但是我认为IDLE本来在窗口的右下角就有显示行号,甚至在新版的python中,可选的显示行号功能直接增加为了新的feature(py3.9)。
  • 所以笔者不在前人的轮子基础上继续修改,而是选择重新造一个轮子。

项目目标

  • 众所周知,Python安装自带IDLE,是一个轻量级的编辑器,比命令行的python和记事本打开修改py文件的调试效率高了无数倍,甚至还有断点和单步调试的功能。
  • 但是那么多人使用PyCharm等第三方编译环境也不是没有道理的,PyCharm中的很多便捷操作确实很实用,但是毕竟PyCharm实在是太大了(300MB+)。
  • 抱着IDLE发展了20+年,也一直有人在用的打算,这个轮子应该不会马上被抛弃。增强IDLE的功能,通过一些简单但实用的功能,增加IDLE的生命力,让坚守者可以坚持得更久一点(?)。
  • 本工程代码中有大量的TODO标记,如果希望贡献意见,可以在GitHub上提交修改。不过GitHub我不太会用,修改代码前最好留言说明,或者发送给我邮件:[email protected] ,非常感谢您的贡献!

使用方法

  • 本代码运行需保证已经安装Python和IDLE,新增方法采用hack进原idlelib库的方法,所以除了增加部分功能完全没有影响IDLE的原始功能,不需要改变任何idlelib的原始代码即可运行。
  • 原始IDLE实现右键即可通过IDLE打开的方法,实际是是通过添加右键菜单转义为将idlelib库通过带参数运行的方式启动。本作并不想采用创新的方法重新造轮子,所以为了修改只需要将原来的idlelib换成idlealib即可改变右键编辑的功能。
  • 或者可以直接使用python运行本代码,会启动shell,然后打开后续的.py脚本文件可以实现相同的效果。
  • 所有的方法都展示在菜单栏最后一个增加的Advance项目下,以供快速使用。

Todolist

★★★★★(Very Useful)

  • 选中同名变量高亮(全字匹配、右键上一条和下一条、右键搜索)
  • Alt+左/右导航上一次鼠标点击位置/回到上次编辑的位置/前进后退上次光标位置
  • 查找替换工具条(搜索记录、大小写匹配、全字匹配、正则、匹配数量、修改动态显示、所有匹配结果高亮、只替换选中的区域、上下条、多文件搜索)

★★★★(Useful)

  • 横向滚动条
  • 历史剪切版
  • 快速添加/删除括号
  • 双击选中(选中括号内的内容、引号中的内容、注释内容、连续空格)
  • 双击左侧空白选中代码块
  • 检测文件变化重新加载
  • 打开时回到上次编辑的位置
  • 不保存运行当前脚本(Shift+F5)
  • 自动恢复未保存NewFile的内容
  • 未选中文本时,复制/剪切选中当前行
  • 文本纵向选择
  • 复制插入当前行
  • 上下移动当前行

★★(Good)

  • 打开脚本所在目录/终端打开脚本所在目录/拷贝脚本所在路径、完整路径、文件名/插入脚本路径
  • 运行选中的代码(自动缩进调整)/运行到光标位置/从光标位置开始运行
  • 复制文件名/打开路径/插入文件名、重新加载、修改文件名
  • 快捷反向查找(F3/Shift+F3)
  • 内建搜索窗口置顶但不捕捉
  • 定时备份/打开时恢复未保存记录
  • 拖拽打开文件
  • 二维码分享代码
  • 交换位置复制(Ctrl+Shift+X)
  • 自动补全保留关键词
  • 快速大小写转换
  • 可选中Calltips中的文本
  • 选中变量帮助查看器
  • 快速注释和取消注释
  • Shift-Tab

★(Better)

  • 快捷键窗口循环切换/恢复页面/关闭窗口(并激活下一个窗口)/关闭全部
  • 带参数运行脚本
  • 快速打开资源文件
  • 模拟打印\r效果
  • 版本比较(基于difflib)
  • 快速输入当前时间戳注释文本
  • 按照剪切板文本搜索
  • 取消关闭窗口后清空剪切板
  • 去除文件内行尾空格

☆(Shell)

  • 多行运行
  • 魔法复制
  • 执行记录新建为脚本
  • 清空Shell或Shell选中的内容
  • 自动换行切换
  • 本地记录历史操作

☆(Other)

  • 模块单元测试
  • 提交PyPI
  • 兼容py34
  • 扩展管理器(开关和配置热键)
  • 检查更新
  • 关于框
  • 快捷启动器
  • 快捷部署器(右键菜单/右键新建/桌面和开始菜单快捷方式)
  • 一键打开Github网页项目
  • 汇总打印扩展简要说明
  • 添加Scripts脚本
  • 支持包模式运行

×(Future)

  • Filelist/Shell/Editor连在一个窗口
  • 自动补全作用域内的参数名
  • 放置鼠标气泡显示数值/引用参数查看定义位置/定义参数查找使用位置
  • 快速查看被引用内容(比如打开图片、文本、快速执行命令)
  • 代码模板(Exception和pdb调试)

×(Forget)

  • 注释后移动到下一行
  • Shell自由编辑模式(F12)

他山之石

Pycharm

  • 选择python解释器
  • 带参数运行脚本
  • 调试运行到光标位置
  • 自动换行
  • 快速换行(Shift+Enter)
  • 快速大小写转化(Ctrl+Shift+U)
  • 代码折叠
  • 历史剪切版
  • 书签
  • 捕获异常模板(Exception和pdb调试)
  • 代码模板
  • 双击左侧空白选中代码块
  • 多规则搜索筛选文件排除测试文件
  • 回到上次编辑的位置
  • 进入函数方法(进入定义、进入父类定义方法)
  • 前进后退上次光标位置
  • 显示最近打开的修改过的文件
  • 搜索TODO和FIXME
  • 最近搜索记录
  • 正则表达式测试
  • 代码滚动预览
  • 储存操作记录(历史编辑文件)
  • 输入时自动匹配(下拉菜单、忽略大小写)
  • 文本纵向选中
  • 代码重构:变量重命名、函数重命名(使用替换、全字匹配、区域替换等)
  • 打开脚本所在目录
  • 终端打开脚本所在目录
  • 拷贝脚本所在路径/完整路径/文件名
  • Ref: http://pycharm.iswbm.com/

IELDX

  • 在shell中粘贴并运行多行
  • 无需重新启动即可清除Shell窗口
  • 按F8使用代码浏览器改进代码导航(和class browser功能雷同)
  • 查找和替换作为具有增量搜索的工具栏
  • shell智能粘贴(删除 >>> 提示)
  • 在编辑器中突出显示(\t)
  • 使用F9从编辑器中执行突出显示的代码或单行
  • 文档查看器在单独的窗口中查看help()和文档字符串
  • 查看网站和检查更新状态
  • 扩展管理器
  • 关于框
  • 快捷启动器
  • 快捷部署器(增加右键菜单)
  • Ref: http://idlex.sourceforge.net