1

看起来“智能操作员”次要模式很有趣。.el 可以帮助 c 程序员添加包含某些类型的运算符的空格,例如将 'a+b' 转换为 'a + b'。我只是试了一下。除了以下问题,它运行良好。这是情况。

至于'-' 运算符,它可以用于'a - b' 和'-1','-ENOMEM' 的情况。Smart-operator 涵盖了第一个用例。但是,它不适用于后者。这是与这部分相关的代码。

(defun smart-operator-- ()
  "See `smart-operator-insert'."
  (interactive)
  (cond ((and c-buffer-is-cc-mode (looking-back "\\- *"))
         (when (looking-back "[a-zA-Z0-9_] +\\- *")
           (save-excursion
             (backward-char 2)
             (delete-horizontal-space)))
         (smart-operator-insert "-" 'middle)
         (indent-according-to-mode))
        (t
         (smart-operator-insert "-"))))

我如何修改代码以使其与“-ENOMEM”案例一起使用?

4

1 回答 1

1

最后,我有时间来解决这个问题。在 smart-operator.el 中解决这个小问题很有趣。为遇到相同问题的任何人粘贴补丁。

--- a/smart-operator.el 2012-11-10 16:25:27.393138909 +0900
+++ b/smart-operator.el 2012-11-10 18:22:18.281490742 +0900
@@ -307,6 +307,10 @@
              (delete-horizontal-space)))
          (smart-operator-insert "-" 'middle)
          (indent-according-to-mode))
+   ((and c-buffer-is-cc-mode (looking-back "[*/%+(><=&^|] *"))
+    (smart-operator-insert "-" 'before))
+   ((and c-buffer-is-cc-mode (looking-back "\\(return\\) *"))
+    (smart-operator-insert "-" 'before))
         (t
          (smart-operator-insert "-"))))

补丁涵盖了所有这些情况。

a = -b;
a + -b;
<other binary operators>
return -ENOMEM;
于 2012-11-10T09:25:31.143 回答