Emacs - 无法使缓冲区提供保存工作

2024-03-24

当缓冲区未与文件关联时,我想让 Emacs 询问我是否要保存修改后的缓冲区。要打开新缓冲区(不访问文件),我的 .emacs 文件中有以下函数:

;; Creates a new empty buffer
(defun new-empty-buffer ()
  "Opens a new empty buffer."
  (interactive)
  (let ((buf (generate-new-buffer "untitled")))
    (switch-to-buffer buf)
    (funcall (and default-major-mode))
    (setq buffer-offer-save t)))

我认为将“buffer-offer-save”设置为不为零的值会成功。但是每当我用“kill-this-buffer”杀死缓冲区时,它就会立即被杀死而不询问任何内容。

这发生在 GNU Emacs 23.1.1 上

有任何想法吗?

谢谢, 瓦


编辑添加使用buffers-offer-save。注:变量buffer-offer-save仅用于exiting Emacs http://www.gnu.org/software/emacs/elisp/html_node/Killing-Buffers.html#index-buffer_002doffer_002dsave-2015.

您可以从此代码开始并将其自定义为您想要的内容:

(add-to-list 'kill-buffer-query-functions 'ask-me-first)
(defun ask-me-first ()
  "prompt when killing a buffer"
  (if (or buffer-offer-save 
          (eq this-command 'kill-this-buffer)
          (and (buffer-modified-p) (not (buffer-file-name))))
      (y-or-n-p (format "Do you want to kill %s without saving? " (buffer-name)))
    t))

经过进一步思考,这有点严厉,因为系统会提示您all缓冲区被杀死,并且 Emacs 经常使用大量临时缓冲区。如果您只想在尝试以交互方式终止缓冲区(不与文件关联)时收到提示。

您可以使用此建议,该建议仅在您以交互方式尝试终止缓冲区时提示您:

(defadvice kill-buffer (around kill-buffer-ask-first activate)
  "if called interactively, prompt before killing"
  (if (and (or buffer-offer-save (interactive-p))
           (buffer-modified-p)
           (not (buffer-file-name)))
      (let ((answ (completing-read
                   (format "Buffer '%s' modified and not associated with a file, what do you want to do? (k)ill (s)ave (a)bort? " (buffer-name))
                   '("k" "s" "a")
                   nil
                   t)))
        (when (cond ((string-match answ "k")
                     ;; kill
                     t)
                    ((string-match answ "s")
                     ;; write then kill
                     (call-interactively 'write-file)
                     t)
                    (nil))
          ad-do-it)

        t)
    ;; not prompting, just do it
    ad-do-it))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Emacs - 无法使缓冲区提供保存工作 的相关文章

  • 如何让 Emacs 在保存文件时创建中间目录?

    有没有办法在 emacs 中创建文件夹树 类似于 mkdir p in bash 基本上 我希望 emacs 创建所有中间模具 如果它们不存在 当我保存文件时 功能make directory这样做 您的具体问题可能会这样解决 add ho
  • 如何告诉 emacs 以 C++ 模式打开 .h 文件?

    我应该向 emacs 在 Windows 上 文件中添加哪些行 以使其以 C 模式打开 h 文件 默认为C模式 尝试这个 add to list auto mode alist h c mode 每当您打开 h 文件时 都会使用 C 模式
  • 未找到 Emacs shell 命令

    我在 Mac OS X 10 5 8 上工作 我正在努力学习emacs 我对它很陌生 今天尝试从 emacs 中输入 shell 命令 我进入了pdflatex filename 但是 它给了我一个错误说 bin bash pdflatex
  • 如何在 emacs 中以 info 模式打开 *.info 文件?

    C x C f blah info以基础金属模式打开文件 我用过apropos并发现Info mode我认为这可能会从基本模式更改为信息模式 但这会引发 lisp 错误 如何在 emacs 中打开外部 第三方 info 文件 以便获得与查看
  • Emacs 找不到 Flyspell/ispell

    在我的 Mac Snow Leopard 10 6 8 上 我使用的是 Emacs 24 2 的修改版本此处提供 http vgoulet act ulaval ca en emacs mac 利用 Emacs Speaks Statist
  • 同时维护多个emacs配置

    我想在同一台电脑上的同一用户帐户上同时维护多个 emacs 配置 例如 emacs prelude emacs starter kit 和我自己的自定义 emacs 配置 为此 我设置了 emacs1 d emacs2 d emacs3 d
  • 在Emacs中,这个错误是什么意思? “警告:运行时需要 cl 包”

    我正在字节编译一个模块 它给了我这个警告 Warning cl package required at runtime 为什么这是一个警告 我很清楚我正在使用cl包裹 事实上有一个 require cl 模块中的语句 使用有什么问题吗cl
  • 如何更轻松地在 Emacs 中的缓冲区之间切换?

    我最近开始使用 emacs 并且大部分时间我都很享受使用它 我唯一不喜欢的是在缓冲区之间切换 我经常打开一些缓冲区 并且我已经厌倦了使用C x b and C x C b 是否有任何软件包可以使缓冲区之间的切换变得更容易 我调查过emacs
  • 如何在emacs中获取顶部和底部边距[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 使用 emacs 时如何获得顶部和底部边距 如左右边缘 我发现当我编写或审阅大块文本时 让文本从屏幕顶部开始有点不舒服 我找不到仅顶部和底部边距设置
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • Emacs-helm 中的选项卡(任何内容)不会自动完成当前的最佳匹配

    While trying to autocomplete a file e g to open a file with C x C f Emacs helm shows a list of possible candidates If I
  • Emacs 23.1.50.1 在 Windows XP 上随机挂起 6-8 秒

    我的 Windows XP 机器上有 EmacsW32 23 1 50 1 emacs 运行 它随机挂起 5 到 8 秒 非常令人沮丧 有人有解决办法吗 我什至尝试使用来自 gnu ftp 站点的 emacs win32 二进制文件 23
  • Emacs 退出终端

    在 Emacs 中运行终端模式时使用M x term using C x C o我无法切换到另一个缓冲区来继续处理事情 我知道这是可能的M x shell但使用此命令时 shell 的某些方面不起作用 less more 手册页等 我想知道
  • 如何在 ubuntu 上的 emacs 中运行 shell 命令,同时避免 bash 作业控制错误?

    我在 ubuntu 中安装了 emacs 使用 sudo apt get install emacs 我遇到的问题是 当我尝试从 emacs 中运行 shell 命令时 例如M ls 输出之前是这样的 bash cannot set ter
  • 如何使用 emacs prettify-symbols-mode?

    我有 emacs 版本 25 0 我启用prettify symbols mode 然后输入 lambda t 但它并不能美化 我该如何使用这个模式 还有哪些符号可用以及如何配置它 任何参考都值得赞赏 Edit 什么也没发生在scratch
  • 如何在 elisp 中将列表作为宏的参数?

    我想实现这样的目标 setq my global keybindings C x C d dired C x C b ibuffer C x b ivy switch buffer apply bind keys my global key
  • Emacs 强制组织模式捕获缓冲区在新窗口中打开

    如何强制组织模式的捕获缓冲区在新窗口中打开 我试过 setq special display regexps Capture 但它不起作用 我立即看到一个新窗口 然后 org mode 进行两个垂直分割 我使用 3 个垂直分割 并将捕获缓冲
  • Emacs-Lisp:如何将emacs-lisp程序打包为PC应用程序?

    只是想知道是否可以将 emacs 和 Lisp 程序打包和部署为 PC 应用程序 这样一旦下载并运行 setup exe 某种程度 用户就可以启动应用程序以使 emacs 运行特定的 Lisp 程序 就像应用程序已实现一样通过其他语言和平台
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • Windows、Emacs、Git Bash 和 shell 命令

    Windows 7 Emacs 24 3 1 git 1 8 1 msysgit 1 我的等效 emacs 文件中有以下内容 if equal system type windows nt progn setq explicit shell

随机推荐

  • 如何将值应用于函数列表

    我想要实现的是 apply a gt a gt b gt b 这是一种映射的逆 map a gt b gt a gt b 我试过胡格尔 但没有成功 任何人都可以建议一种在 Haskell 中执行此操作的干净方法吗 apply a gt a
  • 如何向 javascript 对象添加键值

    我正在努力学习JS 这看起来很简单 但我不知道该怎么做 拥有基于此的 javascript 对象很好thread https stackoverflow com questions 688097 objects vs arrays in j
  • 如何处理 nil 值变量

    我有如下模型 struc Info Decodable var firstName String var lastName String 在表格视图单元格中显示时 我正在做的事情如下 personName text personArray
  • 使用 APP Store 配置文件导出 iPhone 应用程序时出现“符号工具失败”错误

    成功存档后 在将存档导出到 保存以进行应用商店部署 时 出现以下错误 符号工具失败 在导出过程中 我观察到 二进制和权利 部分有两个条目 1 应用商店 targetAppName 5 个权利 具有有效的配置文件 2 构建文件之一FTALDe
  • 从扩展内获取 Chrome 选项卡的窗口句柄?

    我编写了一个 Chrome 扩展 也带有 NPAPI 允许我的应用程序和 Chrome 相互通信 这一切基本上都工作正常 我现在想做的是将 Chrome 窗口的 HWND 绑定到特定的窗口 ID 和选项卡 ID 当我在 Chrome 中 通
  • 我可以弹出到特定的 ViewController 吗?

    我正在使用基于导航的应用程序 我将第一个 ViewController 推到第二个 ViewController 然后从第二个 ViewController 推到第三个 ViewController 现在我想从第三个 ViewControl
  • 配置配置文件不支持无线配件配置功能

    从 Xcode 7 3 升级到 Xcode 8 后 出现错误 供应配置文件 iOS团队供应配置文件 没有 支持无线配件配置功能 我可以知道如何解决这个问题吗 您应该在苹果的开发者门户中启用它 转到 应用程序 ID 并编辑您的应用程序 检查W
  • Omniauth Facebook 不返回电子邮件和性别栏 4

    我需要从 Facebook 获取姓名 电子邮件 图像和性别 我正在获取姓名和图像 但电子邮件和性别不是从 Facebook 获取的 我这两天都在苦苦挣扎 谁能帮帮我 用户模型 def self from omniauth auth wher
  • 在 Kindle Fire 上调试 Adob​​e AIR 应用程序

    可能的 我认为要做到这一点 我需要将 Fire 上的 AIR 运行时升级到 3 但应用商店中的版本无法安装 据我所知 我无法创建既是强制运行时又是调试的 AIR apk 因此应用程序的调试版本必须在安装的 AIR 运行时上运行 由于 Fir
  • 如何创建从 C++17 中的可变参数模板推导的类型向量元组?

    我已经实现了一个集合类 它将元组向量转换为向量元组 它本质上是 AOS 到 SOA 的转换 此代码适用于两个模板类的示例 我试图通过使用可变参数模板使其更加通用 为了做到这一点 我需要为成员变量创建类型m col 在 C 17 中 是否可以
  • Java - 重置输入流

    我正在处理一些Java代码 其中有一个我读取了一次的InputStream 然后我需要以相同的方法再次读取它 问题是我需要将其位置重置为开头才能读取两次 我找到了一个解决该问题的黑客式解决方案 is mark Integer MAX VAL
  • 是否应该在客户端 jar 中提供依赖库?

    我们正在为其他内部应用程序提供一个客户端 jar 以连接到我们应用程序的 REST API 我们的 API 依赖于一些标准 Jakarta 库 将这些 JAR 文件包含在我们的客户端 jar 文件中是否是最佳实践 或者您只是记录依赖关系 并
  • 如何管理应用程序中到 Firebase 数据的动态路径

    我的 Firebase 中有如下数据 这是一个基于 Javascript 的 Web 应用程序 bids 400 1 50 00 2 60 00 401 1 55 00 2 65 00 400和401指的是拍卖号码 1 和 2 指的是每次拍
  • 如何使用filesaver.js

    在最新的 filesaver 文档中 给出了如何将 filesaver js 与 blobbuilder js 结合使用的示例 var bb new BlobBuilder bb append Lorem ipsum var fileSav
  • UISearchControllerDelegate - 搜索栏在表标题中不可见

    My UITableViewController正在符合新的UISearchControllerDelegate并且UISearchResultsUpdating 这是我的搜索栏设置代码 override func viewDidLoad
  • 在 C# 中从两个整数创建百分比值的最佳方法是什么?

    我有两个整数 我想将它们相除以获得百分比 这就是我现在所拥有的 int mappedItems someList Count x gt x Value null int totalItems someList Count int doubl
  • 在 WooCommerce 收到订单页面上的文本中添加客户电子邮件

    在 WooCommerce 中 在感谢 已收到订单页面的顶部 我添加了自定义文本 其中包含以下代码 add action woocommerce thankyou my order received text 1 0 function my
  • 动态渲染 React 风格组件时消除警告

    我在浏览器控制台中收到以下警告 react devtools backend js 3973 The component styled div with the id of sc dmRaPn has been created dynami
  • 作为类属性的变体类型的 VBA 数组

    我有一个处理多个数值数组 双精度类型 的类 并且还需要处理一个描述符数组 其中包括字符串和整数的混合 需要相应地用作字符串和数字 所以我决定创建一个变体类型的数组属性 不是包含数组的变体 但这似乎不起作用 而双精度数组却可以 具体来说 这种
  • Emacs - 无法使缓冲区提供保存工作

    当缓冲区未与文件关联时 我想让 Emacs 询问我是否要保存修改后的缓冲区 要打开新缓冲区 不访问文件 我的 emacs 文件中有以下函数 Creates a new empty buffer defun new empty buffer