Saya hanya ingin memeriksa apakah baris saat ini kosong atau tidak (jika hanya berisi spasi, maka saya masih menganggapnya kosong).
Ini adalah versi awal saya:
(defun strip-text-properties(txt)
(set-text-properties 0 (length txt) nil txt)
txt)
(defun is-current-line-empty ()
(interactive)
(setq c-line (thing-at-point 'line))
(string-match "^\s*$" (strip-text-properties c-line)))
Apa cara termudah untuk memeriksa apakah saluran saat ini kosong?
whitespace
ChillarAnand
sumber
sumber
\s
sama dengan menuliss
. Mungkin maksudmu"^\\s*$"
.\\s-
bukan\\s
. Tanda hubung itu diperlukan di elisp regexp.Jawaban:
Apakah hal seperti ini menjadi "lebih mudah"?
sumber
Metode sederhana, dekat dengan apa yang Anda miliki:
sumber
match-data
.\\s-
alih - alih\s
. Sudahkah Anda mencoba solusi itu?sumber
Saya menyarankan:
(Perhatikan bahwa
progn
s sebenarnya tidak diperlukan karena fungsi lompatan tidak pernah mengembalikan nol). Seperti yang dilakukan Dan dalam jawabannya,skip-syntax-*
bisa juga digunakan sebagai gantinya.sumber
skip-syntax-*
adalah rangkaian fungsi yang tepat untuk digunakan di sini.Berikut ini adalah solusi sederhana untuk itu, diambil dari
comment-dwim-2
paketsumber
Ini adalah modifikasi dari jawaban PythonNut yang tidak berfungsi untuk saya (mengapa?):
string-match-p
mengembalikan indeks baris berikutnya setiap kali baris saat ini tidak kosong. Jadi saya memeriksa bahwa nilai kembali adalah 0.sumber
(thing-at-point 'line)
menyertakan baris baru di akhir baris. Jika baris saat ini tidak kosong, regexp cocok dengan baris baru itu. Satu-satunya waktustring-match-p
mengembalikan nol di sini adalah pada baris terakhir dari buffer (dan Dario, versi Anda tidak bekerja pada baris terakhir jika buffer tidak diakhiri dengan baris baru).current-indentation
memberi Anda kolom berikut blanko terkemuka, yang dapat dibandingkan dengan kolom di akhir baris:sumber