截断组织表中右对齐列的开头


10

我在包含长文件名的组织模式表中有一列。文件名中有趣的部分是后几个字符,而不是前几个。例如,给定以下文件:

/data/capture/abcd_spectrum_01292000.dat
/data/capture/abcd_spectrum_02251435.dat
/data/capture/abcd_spectrum_02251847.dat
/data/capture/abcd_spectrum_02251848.dat
/data/capture/abcd_spectrum_02251848.dat
/data/capture/abcd_spectrum_02251849.dat
/data/capture/abcd_spectrum_02251851.dat
/data/capture/abcd_spectrum_02251852.dat
/data/capture/abcd_spectrum_02251852.dat
/data/capture/abcd_spectrum_02270910.dat

我希望我的组织表如下所示:

|            File | TD | FD | MF | Notes:               |
|-----------------+----+----+----+----------------------|
|           <r15> |    |    |    | <l20>                |
| <=_01292000.dat |    |    |    |                      |
| <=_02251435.dat |    |    |    |                      |
| <=_02251847.dat |    |    |    |                      |
| <=_02251848.dat |    |    |    |                      |
| <=_02251848.dat |    |    |    |                      |
| <=_02251849.dat |    |    |    |                      |
| <=_02251851.dat |    |    |    |                      |
| <=_02251852.dat |    |    |    |                      |
| <=_02251852.dat |    |    |    |                      |
| <=_02270910.dat |    |    |    |                      |

但是它看起来像这样:

|            File | TD | FD | MF | Notes:               |
|-----------------+----+----+----+----------------------|
|           <r15> |    |    |    | <l20>                |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |
| /data/capture=> |    |    |    |                      |

是否可以使右对齐的列截断到左侧,以便我可以看到条目的最右边部分?

Answers:


8

据我所知,没有内置支持自定义表列的截断。但是,您可以修改命令org-table-align以实现所需的功能:

  1. 查找文件org-table.el。它位于您的org-mode安装目录中。打开它的最快方法是通过M-x find-library RET org-table RET

  2. 将的定义复制org-table-align到您的.emacs文件中。

  3. 更换

    (add-text-properties f1 (length xx) (list 'org-cwidth t) xx)
    (add-text-properties (- f1 2) f1
                   (list 'display org-narrow-column-arrow)
                   xx)))))
    

    (let (s1 e1 s2 e2 arrow-string)
      (if (and falign1 (equal (downcase falign1) "r"))
          (setq s1 0
                e1 (- (length xx) f1)
                s2 (- (length xx) f1)
                e2 (- (length xx) (- f1 2))
                arrow-string "<=")
        (setq s1 f1
              e1 (length xx)
              s2 (- f1 2)
              e2 f1
              arrow-string org-narrow-column-arrow))
      (add-text-properties s1 e1 (list 'org-cwidth t) xx)
      (add-text-properties s2 e2 (list 'display arrow-string) xx))))))
    

使用8.2.8版进行了测试org-mode


3
可以作为建议吗?通常,如果可能的话,我尽量避免直接修改现有的库。尤其是那些从上游来源获得频繁更新的产品。编辑:我现在看到您建议在我的init文件中创建功能的副本。我想这比直接修改它更好。
nispio 2014年

@nispio“通常,如果可能,我会尽量避免直接修改现有的库。” 这就是为什么我建议创建该函数的副本的原因:)现在,我不知道如何使用建议来执行此操作,因为与确定要隐藏的单元格部分有关的参数是在运行时动态计算的调用add-text-properties原始命令。
itsjeyd 2014年

如果将来的版本org-mode将这一部分分解为一个单独的defun,以便可以更轻松地建议或更换它,那就太好了。org-mode开发人员是否乐意接受此类请求?
nispio 2014年

@nispio对于拉取请求不确定,但是您可以尝试将这些建议提交到邮件列表编辑:它说在这里您还可以将补丁提交到邮件列表,并且此页面描述了“的首选提交补丁的方式” org-mode
itsjeyd 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.