                                         (access-label . (after))
                                         (access-key . (after))
                                         (member-init-intro . (after))))
-      (c-cleanup-list                . (scope-operator
+      (c-cleanup-list                . (brace-else-brace
+                                        brace-elseif-brace
+                                        brace-catch-brace
                                         list-close-comma
                                         defun-close-semi
-                                        compact-empty-funcall))
+                                        empty-defun-braces
+                                        scope-operator))
       (c-offsets-alist               . ((arglist-close           .  4)
                                         (label                   . -4)
                                         (access-label            . -4)

                          (topmost-intro-cont      .  0)
                          (knr-argdecl-intro       . -4)
                          (brace-list-open         .  0)
                          (brace-list-intro        .  4)))))

  (defun user/c-mode-common-hook ()
    "Hook for C/C++ mode."
    ;; (c-toggle-hungry-state t)
    ;; (c-toggle-auto-newline -1)
    (c-toggle-syntactic-indentation t)

    (modify-syntax-entry ?' ".")

                      (join-line -1)))))
            (error nil))))))

  (defun user/cleanup-empty-lines (orig-func &rest args)
    (when (eq last-input-event ?})
      (save-mark-and-excursion
        (when (looking-at-p "\\([[:space:]]*\n\\)+")
          (delete-horizontal-space)
          (delete-blank-lines)

          (when (looking-at-p "^[[:space:]]*\n")
            (kill-line)))))

    (apply orig-func args))

  :ghook ('c-mode-common-hook #'user/c-mode-common-hook)

  :custom
