【发布时间】:2014-11-27 12:00:13
【问题描述】:
我把 LightTable 放在 /opt/LightTable 中
默认情况下,当您在 ubuntu 14.04 64 位中安装文本编辑器 LightTable 时,当您右键单击要使用它打开的文件时,没有“使用 LightTable 打开”。
因此我创建了一个文件 /home/theuser/.local/share/applications/LightTable.desktop 包含:
[Desktop Entry]
Name=LighTable Text Editor
Comment=Edit text files
Exec=/opt/LightTable/LightTable %f
Terminal=false
Type=Application
Icon=/opt/LightTable/core/img/lticon.png
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain
所以当我想用 LightTable 打开一个文件时会出现“用 LightTable 打开”。现在,问题开始了。当我这样做时,它只打开 LightTable,就像我只运行脚本一样
/opt/LightTable/LightTable
所以我去看了剧本:
#!/bin/bash
BIN=ltbin
HERE=`dirname $(readlink -f $0)`
LIBUDEV_0=libudev.so.0
LIBUDEV_1=libudev.so.1
add_udev_symlinks() {
# 64-bit specific; look for libudev.so.0, and if that can't be
# found link it to libudev.so.1
FOLDERS="/lib64 /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/lib64 /usr/lib /lib"
for folder in $FOLDERS; do
if [ -f "${folder}/${LIBUDEV_0}" ]; then
return 0
fi
done
for folder in $FOLDERS; do
if [ -f "${folder}/${LIBUDEV_1}" ]; then
ln -snf "${folder}/${LIBUDEV_1}" "${HERE}/${LIBUDEV_0}"
return 0
fi
done
echo "${LIBUDEV_0} or ${LIBUDEV_1} not found in any of ${FOLDERS}".
exit 1
}
add_udev_symlinks
ARGS="$@"
CORRECTED=${ARGS//-/<d>}
CORRECTED=${CORRECTED// /<s>}
if [ -t 0 ] && [ $# != 0 ]; then
#We're in a terminal...
LD_LIBRARY_PATH="$HERE:$LD_LIBRARY_PATH" $HERE/$BIN "<d><d>dir=`pwd`<s>$CORRECTED" &
else
#We were double clicked
LD_LIBRARY_PATH="$HERE:$LD_LIBRARY_PATH" $HERE/$BIN &
fi
并将其结尾 if/else/fi 替换为一个简单的:
LD_LIBRARY_PATH="$HERE:$LD_LIBRARY_PATH" $HERE/$BIN "<d><d>dir=`pwd`<s>$CORRECTED" &
以便选择正确的行为(从终端打开文件时的行为)。
这几乎让我开心。现在,如果我双击一个文件或右键单击它并选择“使用 LightTable 打开”,则该文件确实是在 LightTable 中打开的...但是:只有在文件名和路径为文件名称中没有空格。
如果名为“文件”的文件在路径中没有空格的路径中,当我双击它时,它会在LightTable中打开两个空白文件“文件”和“文件”。如果路径中包含空格,则相同的行为是固定的。
有人有想法吗?我想我应该更正 bash 脚本,但我不是这方面的专家。 (我什至不确定脚本是否真的错了......)
提前致谢
MEF
【问题讨论】:
-
我尝试了相同的补丁并面临同样的问题。问题似乎在于 Light Table 对 cli args 的解析:github.com/LightTable/LightTable/blob/master/src/lt/objs/… 注意它是如何盲目地拆分所有有空格的东西的。不确定是否有解决方法...
-
我刚刚报告了这个问题:github.com/LightTable/LightTable/issues/1688
-
实际上我已经报告了它:github.com/LightTable/LightTable/issues/1659 你也许应该恢复你的报告,因为这个问题显然已经分配给了来自 lighttable 的 Tean 的人。不过谢谢你的倡议!
标签: bash terminal ubuntu-14.04 lighttable