25
votes

How can i collect the buffer's current line as a string value in elisp? i can do this,

(let (p1 p2 myLine)
 (setq p1 (line-beginning-position) )
  (setq p2 (line-end-position) )
  (setq myLine (buffer-substring-no-properties p1 p2))
)

but is there anyway i can do it in one line as,

(with-current-buffer get-current-line)
1
I'm not sure I understand. Do you simply want to do this without p1 and p2, i.e. do it all inline, or are you looking for something special? - Wintermute
let doesn't just declare a variable, it also gives it a value. So your code creates vars, giving them the value nil only to immediately set them to something else. Better skip the intermediate step and do: (let* ((p1 (line-beginning-position)) (p2 (line-end-position)) (myLine (buffer-substring-no-properties p1 p2))) ...) - Stefan

1 Answers

45
votes

Use thing-at-point:

(thing-at-point 'line t)

but note that this also returns any newline at the end of the line.