Buat bingkai baru dengan hanya mode-line

13

Saya ingin membuat bingkai baru yang hanya berisi mode-line. Terutama bukan buffer file.

Mengapa saya membutuhkan ini? Saya menggunakan clocking mode-org untuk mengatur waktu pekerjaan saya. Org-mode menampilkan timer untuk tugas saat ini yang sedang saya kerjakan di mode-line, dan memperbarui timer secara real-time. Saya menggunakan aplikasi selain Emacs, jadi ketika saya beralih ke mereka (mis. Saat menggunakan browser atau terminal) saya masih ingin dapat melihat timer yang sedang berjalan. Saya pikir saya bisa membuat bingkai baru, tetapi ketika saya sekarang klik pada timer di mode-line file .org dibuka di frame baru (yang sudah diubah ukurannya untuk hanya menampilkan mode-line) alih-alih melompat kembali ke di frame pertama.

Begini cara garis-mode saya terlihat (bilah biru) - itulah yang saya inginkan pada bingkai baru:

masukkan deskripsi gambar di sini

(Akhirnya saya harus mencari cara untuk membuat bingkai baru tampak selalu di atas, tapi itu di luar ruang lingkup pertanyaan ini)

Saya menggunakan OS X jika itu relevan.

Sridhar Ratnakumar
sumber
1
Hanya kepala saja, saya sedang mengerjakan beberapa script elisp dan macruby yang akan menampilkan informasi garis mode org di bilah menu OSX. Ini bekerja untuk saya tetapi saya akan mencoba untuk membungkusnya dengan baik.
Jordon Biondo
@JordonBiondo - luar biasa! solusi Anda mungkin ternyata lebih baik daripada apa yang saya lakukan di sini. menantikannya. tolong beri saya informasi terbaru.
Sridhar Ratnakumar
Anda harus menulis ulang dan ulangi pertanyaan Anda, jika Anda benar-benar merasa bahwa jawaban yang Anda katakan " Luar Biasa! " Untuk menanggapinya. Karena sejauh yang saya tahu mereka tidak menjawab permintaan Anda untuk sebuah bingkai dengan " tidak ada apa-apa kecuali garis mode " - sama sekali (dan saya ragu bahwa jawaban apa pun akan). TKI, jika Anda melonggarkan tujuan Anda sejak rumusan asli permintaan Anda, silakan pertimbangkan untuk memperbarui pertanyaan tersebut.
Drew
Saya setuju, setelah membaca, sepertinya OP memiliki masalah tertentu, tetapi hanya meminta satu solusi, bukan solusi terbaik.
Jordon Biondo
@Drew - Apakah Anda menyarankan suntingan khusus? Solusi asli PythonNut menjawab permintaan awal saya. Perhatikan bahwa saya berkata "Terutama bukan buffer file.", Dan solusinya - meskipun membuat buffer kosong - tidak menyebabkan buffer file muncul di bingkai baru.
Sridhar Ratnakumar

Jawaban:

7

Memperluas jawaban Jorgen Schäfer dengan saran Matthew Piziak menghasilkan cuplikan berikut:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                 (unsplittable . t)
                 (buffer-predicate . (lambda (x) nil))
                 (height . 2)
                 (left-fringe . 0)
                 (right-fringe . 0)
                 (tool-bar-lines . 0)
                 (menu-bar-lines . 0)))
  (set-window-dedicated-p
    (get-buffer-window (current-buffer) t) t))

Sejauh yang saya tahu, ini benar mengunci jendela ke buffer kosong. Mencoba untuk beralih ke buffer lain akan membuka buffer di jendela yang ada di bingkai induk.

PythonNut
sumber
Luar biasa, saya telah memverifikasi ini berfungsi. Adakah cara untuk membuat bingkai baru mewarisi ukuran font (dan font-nama) dari bingkai utama? Juga, dapatkah bagian-bagian spesifik buffer berlebihan dari garis mode - *empty* All L1 (Fundamental)- dihapus? Begini tampilannya: i.imgur.com/iOLw57c.png
Sridhar Ratnakumar
@SridharRatnakumar Untungnya, menghapus info mode-baris tambahan itu sepele. Saya telah mengubah jawaban saya untuk memasukkan itu. Saya tidak yakin apa yang Anda maksud dengan mempertahankan font? Bukankah buffernya kosong?
PythonNut
Saya merujuk ke properti font teks di baris mode (bukan buffer kosong).
Sridhar Ratnakumar
ah, kode Anda nanti juga menghapus mode-line dari frame utama! Jika ini tidak memungkinkan, mari kembalikan perubahan itu dan saya akan menerima jawaban Anda (ini memenuhi pertanyaan).
Sridhar Ratnakumar
Saya hanya memperhatikan itu juga. Saya sudah memperbaikinya. Font mode-line tidak berubah ketika saya melakukannya, jadi saya tidak yakin ada apa.
PythonNut
5

Ini yang terbaik yang bisa saya pikirkan:

(with-current-buffer (generate-new-buffer "*empty*")
  (make-frame '((minibuffer . nil)
                (unsplittable . t)
                (buffer-predicate . (lambda (x) nil))
                (height . 2)
                (left-fringe . 0)
                (right-fringe . 0)
                (tool-bar-lines . 0)
                (menu-bar-lines . 0))))

Saya tidak melihat cara untuk menonaktifkan setidaknya satu jendela dengan satu buffer di sana, tetapi yang ditampilkan menggunakan potongan ini tidak terkait dengan file apa pun. Di buffer-predicatesana mencegah frame dari terpilih untuk menampilkan buffer (lainnya), jadi jika Anda dapat menangani satu baris kosong tambahan, ini harus dilakukan.

Jorgen Schäfer
sumber
Itu tidak berfungsi seperti yang diharapkan. Buffer masih diaktifkan di bingkai baru. Berikut ini adalah gif animasi yang dapat diilustrasikan: i.imgur.com/07Q3tcW.gifv
Sridhar Ratnakumar
2
Menggunakan display-buffer-alistmungkin menjadi solusi untuk ini.
Kaushal Modi
Saya tidak tahu mengapa penggunaan org di sini tidak mematuhi buffer-predicate. Menggunakan display-buffer-alistmungkin memang sebuah ide, tapi saya tidak tahu bagaimana menggunakannya untuk mencegah bingkai tertentu digunakan.
Jorgen Schäfer
2
Mungkinkah ini diperbaiki set-window-dedicated-p?
Matthew Piziak
1
The buffer-predicateadalah, menurut info, hanya digunakan oleh other-bufferfungsi, yaitu tidak mencegah fungsi lainnya dari menampilkan penyangga apapun dalam frame.
politza
3

Namun solusi lain untuk org-clock di osx

Sebuah kotak kecil di bilah status. Warnanya merah ketika Anda tidak masuk.

ilustrasi untuk kotak merah, lihat halaman github

https://github.com/koddo/org-clock-statusbar-app

Koddo
sumber
1
Saya agak terlambat dan tidak menjawab pertanyaan yang tepat, tetapi saya menawarkan alternatif yang akan bekerja untuk seseorang.
koddo
3

Solusi untuk menampilkan informasi jam org di bilah menu OSX

Berikut adalah solusi alternatif untuk masalah yang Anda tentukan:

Saya menggunakan aplikasi selain Emacs, jadi ketika saya beralih ke mereka (mis. Saat menggunakan browser atau terminal) saya masih ingin dapat melihat timer yang sedang berjalan.

Anda dapat menggunakan ini untuk menampilkan informasi dari org-clock di osx menubar yang hampir selalu dapat Anda lihat.

https://github.com/jordonbiondo/osx-org-clock-menubar Tersedia di MELPA

Perhatikan bahwa ini membutuhkan macruby.

Seperti apa waktu masuk.

masukkan deskripsi gambar di sini

Jordon Biondo
sumber
1
Implementasi sederhana yang tidak bergantung pada macruby dapat dilakukan dengan emacsclient -e "(org-clock-get-clocked-time)"dan bitbar: getbitbar.com
mankoff
Itu luar biasa Anda harus menulis solusi!
Jordon Biondo