Rối rối nguồn một lớp


7

Đôi khi, đặc biệt là khi ghi chú, tệp org biết chữ có thể chứa các khối nguồn một dòng, như sau:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:END:

Perl set command
#+BEGIN_SRC perl
set $random_var=1;
#+END_SRC

Perl unset command (just making it up... :P)
#+BEGIN_SRC perl
unset $random_var;
#+END_SRC

Đối với các ứng dụng như vậy, #+BEGIN_SRC...#+END_SRCpragma có vẻ là một quá mức cần thiết. Các mẫu dễ dàng giảm việc gõ, nhưng tài liệu org vẫn có vẻ hơi tràn.

Có cách nào làm dễ hơn không? Tôi biết rằng một dòng bắt đầu bằng một :văn bản được ghi nguyên văn tự động. Có cách nào để làm một cái gì đó tương tự với org-tangle không?

Tôi đang tìm kiếm một giải pháp tương tự như thế này, hoặc ít nhất là gần với các dòng này, trong khi vẫn giữ lại các tiện ích tô sáng và đánh dấu nguồn cho chế độ cha mẹ:

* Taking notes
:PROPERTIES:
:tangle: whatever.pl
:comments: org
:mode: perl
:END:

Perl set command
: set $random_var=1;

Perl unset command (just making it up... :P)
: unset $random_var;

Nó sạch sẽ hơn, dễ nhìn và, IMHO, ít ồn ào hơn.

Mọi lơi đê nghị đêu nên được đanh gia cao. Cảm ơn trước!


Làm thế nào về một lệnh ẩn / bỏ ẩn cho toàn bộ tệp khi bắt đầu và kết thúc các khối mã nguồn, để lại bất cứ thứ gì được kẹp ở giữa? ...Thay vào đó, bắt đầu và kết thúc sẽ có hoặc bạn có thể sử dụng bất kỳ tốc ký nào bạn muốn để chỉ văn bản ẩn (ví dụ: khuôn mặt cười ) hoặc bạn không thể có bất kỳ chỉ số nào cho các dòng ẩn
luật

@lawlist Không thể hiểu ví dụ của bạn ... bạn có thể hiển thị bản demo không?
deejay

1
Trong bộ đệm chứa ví dụ đầu tiên của bạn, hãy đánh giá đoạn mã sau để ẩn văn bản: (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))) Khi bạn hoàn thành bài kiểm tra của mình, hãy đánh giá (remove-overlays). Đây chỉ là một ví dụ đơn giản về cách ẩn văn bản. Bạn có thể tạo trình giữ chỗ cho văn bản ẩn trông ...hoặc bất cứ thứ gì bạn muốn - ví dụ : hidden text lies here. Đánh giá mã vớiM-x eval-expression
luật

@lawlist cảm ơn. mà làm sạch bộ đệm đáng kể. Mặc dù vậy, tôi sẽ háo hức hơn với giải pháp chế độ org được đề xuất ở trên. Một câu hỏi: Tôi đã cố gắng bọc mã của bạn trong một hàm: (defun clean-org-buffer() (save-excursion (goto-char (point-max)) (while (re-search-backward "#\\+BEGIN_SRC\\|#\\+END_SRC" nil t) (let ((ov (make-overlay (line-beginning-position) (1+ (line-end-position))))) (overlay-put ov 'invisible t)))))Tuy nhiên, việc đánh giá hàm này dẫn đến lỗi như sau : Wrong type argument: commandp, clean-org-buffer. Bạn có thể vui lòng đề nghị làm thế nào để giúp đỡ này?
deejay

1
Bạn có thể sử dụng M-x eval-expression RET (clean-org-buffer) RET(không có bất kỳ sửa đổi nào đối với đoạn trích) và / hoặc bạn có thể thêm (interactive)ngay trước đoạn trích trong nhận xét trước của tôi (2 đoạn trên) để có thể sử dụng tương tác với nó M-x clean-org-buffer.
luật

Câu trả lời:


4

Từ (org) Cấu trúc của khối mã :

Các khối mã trực tiếp cũng có thể được chỉ định nội tuyến bằng cách sử dụng

src_<language>{<body>}

hoặc là

src_<language>[<header arguments>]{<body>}

Vì vậy, bạn sẽ có thể sử dụng src_perl{set $random_var=1;}thay vì khối đầy đủ.


1
Điều này dường như không hoạt động. 1) Làm nổi bật cú pháp đã biến mất, 2) Mã bị rối xuất hiện dưới dạng một nhận xét - không phải là một câu lệnh trong tệp đầu ra (anything.pl, trong trường hợp này). Tôi đang làm sai à?
deejay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.