I have to do a very specific task to re-do over and over again and would like to have it put permanently in my .emacs
file. But I am not versed enough in emacs-lisp to manage it:
xtab
//
in current line, if none is there, beep and stop//
gets to previously remembered column xtab
, or do nothing if cursor is already beyond xtab
//
and place the cursor on itI managed to assign it to a temporary keyboard macro, but have to re-record it for every changing xtab
value.
The ultimate goal is that I want to align the comments in different pieces of code easily, from
int main() { // the enty function
int x = 100; // my new variable
for(int i=1; i<2012; ++i) { // loop a lot
x -= i;
}
} // end of all things
to
int main() { // the entry function
int x = 100; // my new variable
for(int i=1; i<2012; ++i) { // loop a lot
x -= i;
}
} // end of all things
Any idea how I can automate this? What do I have to put in my .emacs
-file to archive this -- or similar?
As tungd said, align-regexp
is good for this sort of thing.
(defun my-align-comments (beginning end)
"Align instances of // within marked region."
(interactive "*r")
(let (indent-tabs-mode align-to-tab-stop)
(align-regexp beginning end "\\(\\s-*\\)//")))
Which is like the interactive call:
M-x align-regexp
RET //
RET
Or for a more language-agnostic version:
(defun my-align-comments (beginning end)
"Align comments within marked region."
(interactive "*r")
(let (indent-tabs-mode align-to-tab-stop)
(align-regexp beginning end (concat "\\(\\s-*\\)"
(regexp-quote comment-start)))))