diff options
| author | Ravi R Kiran <aine.marina@gmail.com> | 2014-01-06 17:17:27 (GMT) |
|---|---|---|
| committer | Ravikiran Rajagopal <aine.marina@gmail.com> | 2014-01-06 17:17:27 (GMT) |
| commit | 6df51326f2c41ecf9027ab2a0eb3e3aba24a04da (patch) | |
| tree | b3a4cd34f45bfb274cd73b269f8c313ca43b6856 | |
| parent | 87421e36c75219bfeadb45552e3a0926e11fac2a (diff) | |
| download | dotemacs-6df51326f2c41ecf9027ab2a0eb3e3aba24a04da.zip dotemacs-6df51326f2c41ecf9027ab2a0eb3e3aba24a04da.tar.gz dotemacs-6df51326f2c41ecf9027ab2a0eb3e3aba24a04da.tar.bz2 | |
closing delimiters and more spacing fixes
| -rw-r--r-- | ravi-init-cpp.el | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/ravi-init-cpp.el b/ravi-init-cpp.el index f9ca601..eb1d2c9 100644 --- a/ravi-init-cpp.el +++ b/ravi-init-cpp.el @@ -151,7 +151,7 @@ (doxymacs-font-lock) ;(define-key c-mode-base-map [return] 'c-context-line-break) - (bind-key "<return>" 'newline-and-indent c-mode-base-map) + (bind-key "<return>" 'c-newline-and-indent c-mode-base-map) (unbind-key "M-j" c-mode-base-map) (bind-key "C-c C-i" 'c-includes-current-file c-mode-base-map) @@ -364,8 +364,46 @@ this to 3 makes header-protection define KIG_MISC_NEWTYPE_H for a file named ) (defadvice c-electric-semi&comma (after ravi/add-space-after-comma activate) - (when (looking-back ",") - (if (looking-at " [^)]") (forward-char) (insert-char ?\s)))) + (cond + ((looking-back ",") + (if (looking-at " [^)]") (forward-char) (insert-char ?\s))) + ((looking-back ") ;[[:space:]\n]*") + (save-excursion + (re-search-backward " ;[[:space:]\n]*") + (delete-char 1))))) + + (defmacro ravi/fake-send-key (key-to-bind char-to-bind) + (let ((command (key-binding key-to-bind))) + (setq last-command-event char-to-bind) + (setq this-command command) + (call-interactively command)) + ) + + (defun ravi/insert-closing-delimiter() + (interactive) + (if (c-in-literal) + (self-insert-command) + (progn + ;; Find nearest unmatched opening delimiter + (let (brace-type) + (save-excursion + (backward-up-list) + (cond + ((looking-at "{") (setq brace-type 'brace-type-brace)) + ((looking-at "(") (setq brace-type 'brace-type-paren)) + ((looking-at "\\[") (setq brace-type 'brace-type-square)) + (t (setq brace-type 'brace-type-none)) + )) + (cond + ((eq brace-type 'brace-type-brace) (ravi/fake-send-key "}" ?\})) + ((eq brace-type 'brace-type-paren) (ravi/fake-send-key ")" ?\))) + ; Uncommenting the line below would lead to infinite recursion + ;((eq 'brace-type 'brace-type-square) (ravi/fake-send-key "]" ?\])) + (t (self-insert-command 1)) + ) + )))) + + (bind-key "]" 'ravi/insert-closing-delimiter c-mode-base-map) (bind-key "<return>" 'c-newline-and-indent c-mode-base-map) (bind-key "<M-f8>" 'compile-dwim c-mode-base-map) |
