Відобразити початок області, коли вона не відображається на екрані


12

Я хотів би показати початкову частину області, коли ця вийде з екрана.

Приклад:

namespace a  
{  
...  
--------------------- <- display frame 
...                 |  
}*                  | * when cursor is here display "namespace a" in the minibuffer
---------------------   or on screen

Це може працювати для багатьох мов програмування, але я, головним чином, думаю про C ++.

Щоб уточнити трохи більше, і для тих, хто знає VS, я хотів би подібну особливість, як і те, що існує для Visual Studio. тобто позиціонування курсору в кінці області показує початок області вгорі буфера редагування.

Ця функція вже є десь?


Мені цікаво, чи допомогла моя відповідь?
Ту До

@TuDo так! Я просто встиг поглянути. У мене вже був семантичний і просто включення глобально-семантичного-стикфункціонального режиму працювало чудово. Дякую. Моя проблема зараз полягає в тому, що колір не робить заголовок читабельним ..
log0

Відповіді:


14

Якщо ви пишете C / C ++ / Java / Emacs Lisp / Python, тоді семантично-липкий-функціональний режим зробить все, що вам завгодно.

ПРИМІТКА . Це, здається, працює з CEDET від Git, але це не CEDET, що знаходиться в Emacs 24.4. Щоб отримати Emacs від Git:

git clone http://git.code.sf.net/p/cedet/git cedet

І завантажте CEDET спочатку над усім іншим у свій файл init:

(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))

При ввімкненні цей режим показує, що функціональна точка знаходиться в першому рядку поточного буфера. Це корисно, якщо у вас дуже довга функція, яка поширюється більше, ніж на екрані, і вам не доведеться прокручувати вгору, щоб прочитати ім'я функції, а потім прокрутити вниз до вихідного положення.

Він відображає повнофункціональний інтерфейс (тип повернення, ім'я функції та параметри), а не лише ім'я функції.

Щоб увімкнути це, введіть цей код у свій файл init:

(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)

ОНОВЛЕННЯ : Одна з проблем поточного semantic-stickyfunc-modeполягає в тому, що він не відображає всіх параметрів, які розкидані по декількох рядках. Щоб вирішити цю проблему, я створив пакет stickyfunc-Impro .

DEMO :

Ось демонстрація на C:

семантичний-липкий-func-mode-c

Ось демонстрація в Emacs Lisp:

семантичний-липкий-func-mode-elisp

ОНОВЛЕННЯ : Крім того, ви можете використовувати шлем-семантичний-або-ім'я . Коли ви знаходитесь у функції та виконуєте команду, курсор розміщується праворуч від функції у списку, тож ви завжди зможете побачити повний інтерфейс функції. DEMO:

  • По-перше, я використовую helm-semantic-or-imenuдля переходу до функції helm-define-key-with-subkeysі переміщення точки до неї.

  • Потім я починаю helm-semantic-or-imenuзаново і helm-define-key-with-subkeysпопередньо вибирається.

  • Потім я переміщу точку на змінну карту helm та helm-semantic-or-imenuзнову виконую дві функції: helm-next-source та helm-previous-source. Цього разу замість того, щоб показувати поточний семантичний тег, над яким я оперую (що це карта шлема), він показує два інші теги в буфері Helm Semantic. Це тому, що я подав аргумент префікса перед запуском команди.

Крім того, ця демонстрація є в Emacs Lisp, вона працює і для C / C ++, і вона більш гнучка, якщо у вас дійсно довгий функціональний інтерфейс.

шлем-семантичний-або-імена


Як ви змусили це працювати на Лісп (зокрема Елісп)? Оцінювалися свій код , emacs -Qале я не отримую поведінку , ви можете описати , коли я переглядаю, наприклад, org.el.
itsjeyd

Я оновив відповідь. Спробуйте спробувати Semantic від bzr.
Ту до

1
Зовсім поза темою. Дякую, що ви познайомили мене з режимом Nyan. Моє кодування більше ніколи не буде таким самим.
purple_arrows

6

Можна ввімкнути which-function-mode, виконуючи це

M-x which-function-mode RET

Щоб налаштування стало постійним, додайте

(which-function-mode 1)

до вашого init-файлу.

З документації:

Відображення рядка режиму відображення поточної функції (режим функції якої). [...]

Режим функції якого є глобальним другорядним режимом. Якщо ввімкнено, ім'я поточної функції постійно відображається в рядку режимів , у деяких основних режимах.

Примітка . Назва насправді не підказує це, але це працює не лише для "функцій", але і для інших типів. Наприклад, у org-mode, which-function-modeвідображається заголовок поточного піддерева.


Дякую! Мені подобається, що назва функції відображається в рядку режиму. Деякі справи не дуже добре працювали. Подібно методу в структурі в просторі імен, відображалося лише ім’я простору імен
log0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.