将Cygwin Emacs设为Windows explorer默认打开程序

由于我在平日的学习与工作中会经常用到Cygwin中的Emacs,很自然地想到应该将emacsclient作为指定文件类型在Windows explorer中的默认打开程序。这样,便可以直接双击文件后在Emacs中编辑,从而省去了在Cygwin命令行下手动输入路径与文件名的麻烦,亦可以用方便快捷的Windows explorer替代Emacs Dired mode。要实现这样的功能,需要解决两个问题:

  1. 从Windows文件路径格式到Cygwin路径格式的转换。
  2. 对于XP操作系统,中文文件名为GBK编码,而Cygwin使用的是UTF-8编码。为此需要对(包含中文的)文件路径进行编码转换。

我的解决办法是:创建一个Windows批处理文件emacsclient.bat,将指定文件类型的默认打开程序与之关联。该批处理文件获取在Windows explorer中被双击的文件路径名,用UTF-8编码存入临时文件。然后,从该文件中提取出路径字符串,将其作为emacsclient的参数调用执行。该批处理文件emacsclient.bat的内容如下:

@echo off
touch "/cygdrive/c/.emacsclient_gbk.tmp"
cygpath %1 > C:\.emacsclient_gbk.tmp
iconv -f GBK -t UTF-8 -o "/cygdrive/c/.emacsclient_utf8.tmp" "/cygdrive/c/.emacsclient_gbk.tmp"
for /f "usebackq delims=:" %%f in ("C:\.emacsclient_utf8.tmp") do emacsclient-w32.exe "%%f"
@echo on

其中,

touch "/cygdrive/c/.emacsclient_gbk.tmp"

调用Cygwin的touch命令生成临时文件.emacsclient_gbk.tmp,用于存放GBK编码的待打开文件路径名。需要注意,由于touch是Cygwin命令,作为其参数的临时文件路径名应采用Cygwin格式。 然后,调用cygpath命令,将待打开文件路径名(以%1参数传入emacsclient.bat)作为标准输出重定向到C:\.emacsclient_gbk.tmp。需要注意,由于此时的标准输出重定向是在Windows批处理文件中做的,所以临时文件.emacsclient_gbk.tmp的路径应采用Windows格式。值得一提的是,在首次调用emacsclient.bat前,临时文件.emacsclient_gbk.tmp尚未生成,而Windows批处理命令并不支持标准输出重定向到一个不存在的文件。所以,在这之前调用touch命令生成该临时文件是必须的。 再调用iconv命令进行编码转换,将UTF-8编码的路径名存入.emacsclient_utf8.tmp文件。

iconv -f GBK -t UTF-8 -o "/cygdrive/c/.emacsclient_utf8.tmp" "/cygdrive/c/.emacsclient_gbk.tmp"

最后,从.emacsclient_utf8.tmp文件中提取出文件路径名,交由emacsclient-w32程序打开。

时间: 2024-10-05 19:17:08

将Cygwin Emacs设为Windows explorer默认打开程序的相关文章

PPT无法修改默认打开程序的问题

今天发现PPT默认打开程序出现问题,右键选择打开方式,却无法把POWERPNT.EXE加入程序类表,在控制面板中也无法选择默认打开程序,仔细想了下是因为之前装office2007的32位,后面直接安装了2010的64位版本,可能残留文件有问题,于是在注册表中找了下POWERPNT.EXE.果然: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\powerpnt.exe 的默认键值还是 C:\\PROGR

设置或更改Mac文件的默认打开程序

设置或更改Mac文件的默认打开程序 右键->显示简介->打开方式->全部更改 操作步骤 1.右键,选择显示简介 2.选择需要打开的软件 3.选择全部更改,完成修改默认打开程序 原文地址:https://www.cnblogs.com/junstudys/p/12198092.html

[原创]Windows下更改特定后缀名以及特定URL前缀的默认打开程序

Windows下,特定后缀名的文件会由特定的应用程序来运行,比如双击readme.txt,通常情况下会由Windows自带的notepad.exe(记事本)打开文件.如果现在安装了记事本以外的其他文本阅读器比如Vim或者UltraEdit,并且我想以后每次双击这个readme.txt文件时都由Vim来阅读,可以参考本文档中的步骤. 同样的,在Windows下,特定前缀的URL也会由不同的应用程序来打开,比如在我的计算机上,以mailto:开头的URL会启动Outlook,并根据URL中的其他信息

win8中如何设定editplus为txt默认打开程序

设定EditPlus为TXT默认打开方式吧. 首选,打开我们的EditPlus 接着,点击[工具]菜单,点击[参数设置]这个菜单项 来到设定界面 找到[设置&语法]这个选项,然后可以看到里面有个文本,选中它,接着是最重要的步骤了: 找到[关联资源管理器]这个复选框选中它. 然后点击应用按钮,然后点击确定,关闭设置面板,到这一步还不行,还需要做另一个操作,找到任意一个文本文件,双击它,出现如下界面 点击EditPlus,系统就会默认用EditPlus打开TXT文件了. 当然,为了防止win8坑我们

win7下 文件默认打开方式被设置为用explorer.exe打开

win7下 文件默认打开方式被设置为用%SystemRoot\windows\explorer.exe打开 . 然后右键该文件->属性,发现想改回默认打开方式却没有相关按钮.选项了. 这时候双击该文件,就会一个接一个的运行explorer进程,一直到几千个: 这时候把该文件放进回收站,即可停止explorer进程的增加. 网上去查了几个小时的资料,还是解决不了. 去 旓旓的编程大观园 qq群提问,也没有人解答.这时群里的pianoid(stephen,138443321)发言了,然后私聊他.远程

SharePoint 2013的限制(四)用windows explorer操作文档库

SharePoint虽然是B/S的,用浏览器就可以访问,但是很多人还是喜欢用windows explorer来和SharePoint交互. 使用Windows explorer可以像操作本地文件夹和文件一样,进行添加删除复制改名等等. 选择一个文档库,点击ribbon上的Open with Explorer: 这样就在Windows Explorer中打开了. 再打开一个本地文件夹,新建一个文件夹和文件.文件夹以.files结尾.然后把文件夹和文件拖拽到SharePoint文件夹. 这样这个文件

更改 spyder File explorer 默认工作路径

每次打开 anaconda 的 spyder ,其 File explorer(文件资源管理器)都默认定位到 C 盘,多次尝试修改后,找到方法如下: Spyder --> Tools --> Preferences --> Current working directory --> the following directory --> 在其后的框格中填入你希望 File explorer 默认打开的地址,再重启即可. 原贴:https://www.cnblogs.com/g

eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只喜欢用VI的人我佩服).的确VS很强大,但我也geek一回,使用eclipse做C++程序(用VI才是真正的geek?好吧,我就这水准了,反正我会用VI,但不习惯VI).希望这篇小小的文章能帮助想在Windows平台上使用gcc/g++和gdb并利用IDE调试程序的人.也希望我们谈到g++和gcc的

net share列出了Windows的默认共享(包括C盘)

另外还有单独开启办法: 开启共享方法: 命令行方式:net share 博客=F:\娱乐\种子 我设置了一个名为“博客”的共享,路径为:“F:\娱乐\种子”. GUI方式:找到“F:\娱乐”的“种子”文件夹,点击右键,找到属性的共享标签,根据提示进行设置即可.相对简单不再骜述. 如果无法共享你的文件夹,或文件夹属性里找不到共享标签.请参看下面两条: 无法共享:确保你的Server.Workstation两个服务处于开启状态.在运行里输入Services.msc打开服务管理器,找到上述服务,设置为