add doc-comment
This commit is contained in:
		
							parent
							
								
									670bf2781b
								
							
						
					
					
						commit
						aa1dec6d9e
					
				
							
								
								
									
										28
									
								
								.emacs
								
								
								
								
							
							
						
						
									
										28
									
								
								.emacs
								
								
								
								
							| 
						 | 
				
			
			@ -117,6 +117,33 @@
 | 
			
		|||
                  (point))))
 | 
			
		||||
    (comment-or-uncomment-region start end)))
 | 
			
		||||
 | 
			
		||||
(defun camel-case-to-spaces (string)
 | 
			
		||||
  "Convert a camel-cased STRING to a string with spaces between words and capitalize only the first word."
 | 
			
		||||
  (let* ((case-fold-search nil)  ; Ensure case-sensitive matching
 | 
			
		||||
	 (words (split-string (replace-regexp-in-string "\\([a-z]\\)\\([A-Z]\\)" "\\1 \\2" string) " "))
 | 
			
		||||
	 (first-word (car words))
 | 
			
		||||
	 (rest-words (mapcar 'downcase (cdr words)))
 | 
			
		||||
	 (result (concat (capitalize first-word) " " (mapconcat 'identity rest-words " "))))
 | 
			
		||||
    result))
 | 
			
		||||
 | 
			
		||||
(defun doc-comment ()
 | 
			
		||||
  (interactive)
 | 
			
		||||
  "Insert a CPP documentation comment, at the beginning of the current line
 | 
			
		||||
and position the cursor inside the comment. Additionally insert the word under the cursor since most of our comments are just the name of the function anyways."
 | 
			
		||||
  (princ "doc-comment")
 | 
			
		||||
  (let* ((bounds (bounds-of-thing-at-point 'word))
 | 
			
		||||
	 (word (buffer-substring-no-properties (car bounds) (cdr bounds))))
 | 
			
		||||
    (beginning-of-line)
 | 
			
		||||
    (open-line 1)
 | 
			
		||||
    (indent-according-to-mode)
 | 
			
		||||
    (let* ((indentation (current-column)))
 | 
			
		||||
	(insert "/**\n")
 | 
			
		||||
	(indent-to indentation)
 | 
			
		||||
	(insert (concat " * " (camel-case-to-spaces word) ".\n"))
 | 
			
		||||
	(indent-to indentation)
 | 
			
		||||
	(insert " */")
 | 
			
		||||
	(end-of-line 0))))
 | 
			
		||||
 | 
			
		||||
(use-package evil
 | 
			
		||||
  :ensure t
 | 
			
		||||
  :init
 | 
			
		||||
| 
						 | 
				
			
			@ -140,6 +167,7 @@
 | 
			
		|||
  (define-key evil-normal-state-map (kbd "C-x l") 'list-buffers)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "C-M-u") 'eval-buffer)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "C-M-p") 'compile)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "C-M-k") 'compile)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "M-/") 'dabbrev-expand)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "C-,") 'move-to-previous-window)
 | 
			
		||||
  (define-key evil-normal-state-map (kbd "C-.") 'move-to-next-window)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue