Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
vnotepad
Exa
提交
c53a0156
E
Exa
项目概览
vnotepad
/
Exa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
Exa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c53a0156
编写于
1月 24, 2015
作者:
B
Benjamin Sago
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract symlink stuff into its own method
上级
449592c1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
40 addition
and
31 deletion
+40
-31
src/file.rs
src/file.rs
+40
-31
未找到文件。
src/file.rs
浏览文件 @
c53a0156
...
@@ -84,46 +84,55 @@ impl<'a> File<'a> {
...
@@ -84,46 +84,55 @@ impl<'a> File<'a> {
/// The "file name view" is what's displayed in the column and lines
/// The "file name view" is what's displayed in the column and lines
/// views, but *not* in the grid view.
/// views, but *not* in the grid view.
///
///
/// It consists of the file name coloured in the appropriate style, and,
/// It consists of the file name coloured in the appropriate style,
/// if it's a symlink, an arrow pointing to the file it links to, also
/// with special formatting for a symlink.
pub
fn
file_name_view
(
&
self
)
->
Cell
{
if
self
.stat.kind
==
io
::
FileType
::
Symlink
{
self
.symlink_file_name_view
()
}
else
{
Cell
{
length
:
0
,
// This length is ignored (rightmost column)
text
:
self
.file_colour
()
.paint
(
&*
self
.name
)
.to_string
(),
}
}
}
/// If this file is a symlink, returns a string displaying its name,
/// and an arrow pointing to the file it links to, which is also
/// coloured in the appropriate style.
/// coloured in the appropriate style.
///
///
/// If the symlink target doesn't exist, then instead of displaying
/// If the symlink target doesn't exist, then instead of displaying
/// an error, highlight the target and arrow in red. The error would
/// an error, highlight the target and arrow in red. The error would
/// be shown out of context, and it's almost always because the
/// be shown out of context, and it's almost always because the
/// target doesn't exist.
/// target doesn't exist.
pub
fn
file_name_view
(
&
self
)
->
Cell
{
fn
symlink_
file_name_view
(
&
self
)
->
Cell
{
let
name
=
&*
self
.name
;
let
name
=
&*
self
.name
;
let
style
=
self
.file_colour
();
let
style
=
self
.file_colour
();
if
self
.stat.kind
==
io
::
FileType
::
Symlink
{
if
let
Ok
(
path
)
=
fs
::
readlink
(
&
self
.path
)
{
match
fs
::
readlink
(
&
self
.path
)
{
let
target_path
=
match
self
.dir
{
Ok
(
path
)
=>
{
Some
(
dir
)
=>
dir
.path
.join
(
path
),
let
target_path
=
match
self
.dir
{
None
=>
path
,
Some
(
dir
)
=>
dir
.path
.join
(
path
),
};
None
=>
path
,
};
match
self
.target_file
(
&
target_path
)
{
Ok
(
file
)
=>
Cell
{
match
self
.target_file
(
&
target_path
)
{
length
:
0
,
// These lengths are never actually used...
Ok
(
file
)
=>
Cell
{
text
:
format!
(
"{} {} {}{}{}"
,
length
:
0
,
// These lengths are never actually used...
style
.paint
(
name
),
text
:
format!
(
"{} {} {}{}{}"
,
GREY
.paint
(
"=>"
),
style
.paint
(
name
),
Cyan
.paint
(
target_path
.dirname_str
()
.unwrap
()),
GREY
.paint
(
"=>"
),
Cyan
.paint
(
"/"
),
Cyan
.paint
(
target_path
.dirname_str
()
.unwrap
()),
file
.file_colour
()
.paint
(
file
.name
.as_slice
())),
Cyan
.paint
(
"/"
),
},
file
.file_colour
()
.paint
(
file
.name
.as_slice
())),
Err
(
filename
)
=>
Cell
{
},
length
:
0
,
// ...because the rightmost column lengths are ignored!
Err
(
filename
)
=>
Cell
{
text
:
format!
(
"{} {} {}"
,
length
:
0
,
// ...because the rightmost column lengths are ignored!
style
.paint
(
name
),
text
:
format!
(
"{} {} {}"
,
Red
.paint
(
"=>"
),
style
.paint
(
name
),
Red
.underline
()
.paint
(
filename
.as_slice
())),
Red
.paint
(
"=>"
),
},
Red
.underline
()
.paint
(
filename
.as_slice
())),
},
}
}
Err
(
_
)
=>
Cell
::
paint
(
style
,
name
),
}
}
}
}
else
{
else
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录