burtzlaff.de
Generate code citations with line numbers
The function below creates a code citation in the following style:
sdp_request.c:1115 pos = req->buf + sizeof(sdp_pdu_hdr_t); sdp_request.c:1116 req->len += sizeof( sdp_pdu_hdr_t); sdp_request.c:1117 sdp_request.c:1118 *((uint32_t*) pos) = htonl( handle ); sdp_request.c:1119 pos += sizeof( uint32_t ); sdp_request.c:1120 req->len += sizeof( uint32_t ); sdp_request.c:1121 sdp_request.c:1122 *((uint16_t*) pos) = htons( max_rsp_size ); sdp_request.c:1123 pos += sizeof( uint16_t ); sdp_request.c:1124 req->len += sizeof( uint16_t );
(defun ab-code-citation (beg end) "Generate code citation from marked region." (interactive (if (use-region-p) (list (region-beginning) (region-end)) (list nil nil))) (cond ((and beg end) (kill-new (save-excursion (let ((ab-tmp-output-string "") (ab-tmp-file-name (file-name-nondirectory (buffer-file-name)))) (goto-char beg) (while (< (point) end) (setq ab-tmp-output-string (concat ab-tmp-output-string ab-tmp-file-name ":" (number-to-string (line-number-at-pos)) " " (thing-at-point 'line t) )) (forward-line)) ab-tmp-output-string))) (message "Code citation added to kill ring")) (t (message "No region marked"))))