代码之家  ›  专栏  ›  技术社区  ›  Oleg Pavliv

Emacs在一个脏缓冲区的某个点上的内容

  •  3
  • Oleg Pavliv  · 技术社区  · 17 年前

    我想知道在一个肮脏的缓冲区里,“东西”是什么。

    例如,调试是一个“目录”:

    DRWxRWxRWX 0 10-08-2009 17:50调试

    makefile是一个“文件”:

    -rw rw rw-15K 6-03-2009 13:02生成文件

    这是一个“标题”

    d:/foo/bar/调试:

    找到一个东西的方法之一是看一张脸的位置。还有别的办法吗? 如何确定点的边界?

    标准文件(文件名处的内容)不处理文件名中的空格。

    4 回复  |  直到 12 年前
        1
  •  6
  •   huaiyuan    17 年前

    这些功能可能有助于调制您想要的:

    • dired获取文件名
    • 目录移动到文件名
    • 目录移动到文件名末尾
    • file-directory-p和朋友
        2
  •  1
  •   PanCrit    17 年前

    列表的第一个字符是d代表目录,l代表链接,-代表普通文件。有代表字符和块设备、进程等的字符。您还想知道什么?(我从没见过你的“header”类型。你是怎么做的?)

        3
  •  1
  •   Harold L    17 年前

    可以使用突出显示文本 overlays . 下面是一些可以添加到.emacs文件中的函数。关键是,我们将以这种方式创建的所有套印格式命名为“我的突出显示”,以便稍后只删除这些套印格式。

    (defun highlight-thing-at-point ()
      (interactive)
      (let* ((my-thing (bounds-of-thing-at-point 'sexp))
             (my-overlay (make-overlay (first my-thing) (rest my-thing))))
        (overlay-put my-overlay 'name 'my-highlights)
        (overlay-put my-overlay 'face 'highlight)))
    
    (defun unhighlight-all-of-mine ()
      (interactive)
      (remove-overlays nil nil 'my-highlights))
    

    编辑:

    您可以添加一个自定义函数,用于在文件名中有空格的地方返回文件名的边界。参见 this EmacsWiki article 例如。因此,如果在点写入名为my bounds of filename的函数,可以将其设置为(在点“filename”处的事物边界)和(在点“filename”处的事物边界)的默认值,如下所示:

    (put 'filename 'bounds-of-thing-at-point 'my-bounds-of-filename-at-point)
    
        4
  •  1
  •   Drew    15 年前

    从来没有(几乎从来没有?) 单一的 就这点而言。有点函数可以在点或点附近检索某些文本,这是一种特殊类型的东西。所以你有一个基本的误解。

    在dired中,和其他地方一样,根据点的位置,您可以检索点的符号名、点的文件名以及其他几种类型的东西——都来自同一位置。

    其他人已经回答了如何确定给定的行是用于普通文件还是用于目录。

    如果你使用 Dired+ ,然后您可以使用 C-H RET (命令) diredp-describe-file )获取关于当前行上的文件或目录的信息——它的类型、属性等。

    如果您希望以编程方式在点或点附近获取某个对象,请参见 Thing At Point+ .

    推荐文章