Gist (gist.el / Emacs) -- 在创建时设置“描述”

2024-01-11

默认行为gist-region就是离开描述空白的。要设置描述,需要切换到gist-list缓冲然后使用该函数gist-edit-current-description设置描述.

我希望能够设置描述在创建要点的同时,无需切换到gist-list缓冲。默认为的迷你缓冲区提示符buffer-name将是处理此问题的首选方法。如何以编程方式实现这一点?

这里主要介绍两个函数gist.el负责上述行为的:

(defun gist-region (begin end &optional private callback)
  "Post the current region as a new paste at gist.github.com
Copies the URL into the kill ring.

With a prefix argument, makes a private paste."
  (interactive "r\nP")
  (let* ((file (or (buffer-file-name) (buffer-name)))
         (name (file-name-nondirectory file))
         (ext (or (cdr (assoc major-mode gist-supported-modes-alist))
                  (file-name-extension file)
                  "txt"))
         (fname (concat (file-name-sans-extension name) "." ext))
         (files (list
                 (gh-gist-gist-file "file"
                                    :filename fname
                                    :content (buffer-substring begin end)))))
    (gist-internal-new files private nil callback)))

(defun gist-edit-current-description ()
  (interactive)
  (let* ((id (tabulated-list-get-id))
         (gist (gist-list-db-get-gist id))
         (old-descr (oref gist :description))
         (new-descr (read-from-minibuffer "Description: " old-descr)))
    (let* ((g (clone gist
                     :files nil
                     :description new-descr))
           (api (gist-get-api t))
           (resp (gh-gist-edit api g)))
      (gh-url-add-response-callback resp
                                    (lambda (gist)
                                      (gist-list-reload))))))

看一下函数gist-internal-new that gist-region正在呼叫。

(gist-internal-new FILES &optional PRIVATE DESCRIPTION CALLBACK)

第三个参数是描述,但是gist-region正在将其设置为零。您可以修改最后一个表达式gist-region从迷你缓冲区读取字符串以指定描述

(gist-internal-new files private (read-from-minibuffer "Gist Description: ") callback)

或者更好的是,不要修改函数,只需编写自己的函数!这样,您就不会弄乱使用该函数的其他包。

这只是一个稍微修改的版本,添加了一个额外的参数并使用interactive自动提示用户输入描述,同时仍然允许前缀参数创建私有要点。

与我们使用“read-from-minibuffer”的第一个示例不同,这个示例允许您在代码中使用该函数并直接指定描述,而无需强制使用提示,除非以交互方式调用。

;; note that we added the DESCRIPTION argument
(defun gist-region-with-description (begin end &optional description private callback)
  "Post the current region as a new paste at gist.github.com
Copies the URL into the kill ring.

With a prefix argument, makes a private paste."
  (interactive "r\nsGist Description: \nP") ;; we handle the prompt here!
  (let* ((file (or (buffer-file-name) (buffer-name)))
         (name (file-name-nondirectory file))
         (ext (or (cdr (assoc major-mode gist-supported-modes-alist))
                  (file-name-extension file)
                  "txt"))
         (fname (concat (file-name-sans-extension name) "." ext))
         (files (list
                 (gh-gist-gist-file "file"
                                    :filename fname
                                    :content (buffer-substring begin end)))))
    ;; finally we use our new arg to specify the description in the internal call
    (gist-internal-new files private description callback)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gist (gist.el / Emacs) -- 在创建时设置“描述” 的相关文章

  • Org-Mode 中的 FlySpell 可以像 auctex 一样识别 Latex 语法

    原始回复 我试图弄清楚在 auctex 模式下乳胶如何在打开 Flyspell 的情况下似乎不会突出显示任何乳胶功能 这是一个自定义词典文件还是如何实现的 这可以很容易地合并到组织模式文件中 这样它就不会突出显示将导出的插入乳胶代码吗 编辑
  • Emacs 启动时出现 24 错误

    我已经使用 emacs snapshot 一段时间了 但最近它崩溃了很多 所以我切换到 Emacs 24 但是一旦我安装并启动它 它就开始显示错误并且不会在我的 init el 中加载任何内容 当我在调试模式下运行它时 我得到了这个 Deb
  • 在 emacs org-mode 中仅延迟加载前 N 行

    有没有办法告诉 org mode 仅加载长文本文件的前 N 行 我想保持整个文件打开以便能够搜索它 但在文件的前 N 行上显示组织模式 这是我编辑新内容的地方 如果您在组织模式下有结构化大纲 则可以使用以下命令设置全局文件可见性 START
  • 在 Slime 中复制/猛拉整个 Lisp 表单

    有没有办法在 Slime Emacs 中复制 猛拉整个表单 例如 如果我有以下功能 myfunc lst myotherfunc lst 我想复制 复制 myotherfunc lst 当我的光标位于该表单的左括号或右括号时 在 Slime
  • 无法在 Emacs 中打开 plantuml 模式

    我使用的是 Emacs 24 3 1 我安装了MELPA http melpa milkbox net 的版本plantuml mode https github com zwz plantuml mode via M x package
  • Emacs Lisp 中函数名称中的“internal”是什么意思?

    有些人使用双破折号来表示该功能可能会发生变化 函数名称中的双减号 约定在 Emacs Lisp 中意味着什么 https stackoverflow com questions 3180390 what does the double mi
  • 如何在组织模式下关闭公司模式?

    我正在使用 spacemacs 并尝试在组织模式下关闭公司模式 同时将其保留在其他主要模式中 我尝试过以下方法 global company mode not org mode 但它不起作用 禁用自org mode hook 此方法几乎适用
  • 如何更改 ESS 中的智能分配键(“_”到“<-”)绑定

    在 emacs ESS 中 如何正确更改 ess smart S assign 的键绑定 我尝试的是添加 custom set variables ess smart S assign key to my emacs 但这让奇怪的事情发生了
  • 设置自动完成以处理语义

    我在 Emacs 中的自动完成包方面遇到问题 目前我已经启动并运行了 cedet 并具有适当的自动完成功能 但自动完成包有一些奇怪的行为 它不会使用语义 参议员 的数据库 直到我显式访问包含文件并创建 C u M x bovinate 然后
  • cygwin bash 在 emacs shell 中无法正确显示

    我正在尝试使用 emacs 来运行 cygwin 我的环境是Windows 7 x64 emacs 24 0 93 1 cygwin 2 769 系统编码为gbk cygwin的编码系统默认为utf 8 emacs的编码系统默认为gbk I
  • 如何从 Emacs 中检出 Perforce 下的文件?

    我在工作中使用 Perforce 进行源代码控制 并且希望从 Emacs 中 打开以进行编辑 源代码控制下的文件 那怎么办呢 我需要在 Emacs 中设置什么 有插件吗 我还想执行其他 p4 操作 例如提交我的更改等 Perforce Em
  • 如何清空或清除 emacs 迷你缓冲区?

    有时 迷你缓冲区的内容会显示命令的输出 emacs 24 当输出只有一行时 这并不会造成太大的不便 当命令有多行长并且迷你缓冲区使用许多可用于其他用途的显示行时 这会更烦人 有没有办法清除迷你缓冲区的内容 注意 当我M echo usage
  • Org LaTeX 预览在视网膜显示屏上模糊

    我所有的数学 科学笔记都使用 Emacs 24 4 org latex preview太棒了 但最近 我升级到了配备视网膜显示屏的 MacBook Pro 现在我发现组织模式下的所有方程都 模糊了 有什么设置可以更改为高分辨率吗 这是一个屏
  • 如何在 Emacs 中保存所有文件(或保存所有缓冲区)?

    C x C s saves only the current buffer 如何保存所有文件 或所有缓冲区 Press C x s and then choose for saving all buffers
  • 有没有办法在 Emacs 中使用 Djinn 自动生成 Haskell 代码?

    标题几乎说明了一切 我正在寻找这样的东西 f Int gt Bool gt Int f body Djinn 可以使用定理证明来通过证明该类型存在来生成此类函数的代码 我想知道 是否有现有的方法可以从 Emacs 中获取此功能 因此 我不需
  • 在 Emacs 中追逐标签后切换到原始缓冲区

    I use M 跳转到类 函数的定义 有时有多个类具有相同的标签 所以我需要使用C u M 跳转到多个文件 因此有多个缓冲区 现在我的问题是 如何快速回到原来的缓冲区 我知道C x b 但是您需要输入缓冲区名称 或者它只是默认为您提供您访问
  • Emacs、ruby:将 do 结束块转换为大括号,反之亦然

    我经常发现自己转换这样的代码 before do something end to before something 有没有办法在 emacs 中自动执行此任务 我使用 ruby mode 和 rinary 但它们在这里没有太大帮助 rub
  • (Emacs) 文本是只读的?

    所以我在 emacs 中工作 突然 slime repl sbcl 说文本是只读的 嗯 这很好 因为现在我无法在其中输入任何内容 我该如何修复 缓冲区是只读的 可以通过以下方式解决C x C q但正如德鲁和菲尔斯所说 文本是只读的 是非常不
  • Shift 键在我的 emacs 中不起作用

    I run emacs in gnome terminal with nw option it works well except for some key shortcuts that include the shift key For
  • 删除emacs中多余的空行

    M x flush lines 删除缓冲区中的所有空白行 但是我只想删除多余的空白行 也就是说 如果有n个连续的空白行我想删除n 1并保留一个 我知道删除空白行可以完成该点下的空白行的工作 但是我想要一个适用于整个缓冲区的简单解决方案 有什

随机推荐