Chciałbym wyświetlić część otwierającą lunety, gdy ta wyjdzie poza ekran.
Przykład:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Może to działać dla wielu języków programowania, ale myślę głównie o C ++.
Aby wyjaśnić nieco więcej, a dla tych, którzy znają VS, chciałbym podobną funkcję jak w przypadku Visual Studio. tzn. umieszczenie kursora na końcu zakresu wyświetla początek zakresu na górze bufora edycji.
Czy ta funkcja już gdzieś istnieje?
minibuffer
c++
programming
log0
źródło
źródło
Odpowiedzi:
Jeśli piszesz C / C ++ / Java / Emacs Lisp / Python, tryb semantyczny-lepki-func zrobi to, co chcesz.
UWAGA : Wygląda na to, że działa z CEDET firmy Git, a nie w magazynie CEDET obecnie w Emacsie 24.4. Aby uzyskać Emacsa z Gita:
I najpierw załaduj CEDET ponad wszystko inne w pliku init:
Po włączeniu ten tryb pokazuje, że punkt funkcji znajduje się obecnie w pierwszej linii bieżącego bufora. Jest to przydatne, gdy masz bardzo długą funkcję, która rozciąga się na więcej niż ekran, i nie musisz przewijać w górę, aby odczytać nazwę funkcji, a następnie przewijać w dół do pierwotnej pozycji.
Wyświetla pełny interfejs funkcji (typ zwracany, nazwę i parametry funkcji), a nie tylko nazwę funkcji.
Aby go włączyć, umieść ten kod w pliku init:
AKTUALIZACJA : Jednym z problemów z prądem
semantic-stickyfunc-mode
jest to, że nie wyświetla on wszystkich parametrów, które są rozproszone na wielu liniach. Aby rozwiązać ten problem, stworzyłem pakiet stickyfunc-enhancement .DEMO :
Oto wersja demonstracyjna w C:
Oto demo w Emacs Lisp:
AKTUALIZACJA : Alternatywnie możesz użyć steru semantycznego lub imenu . Gdy znajdziesz się w funkcji i uruchomisz polecenie, kursor zostanie umieszczony bezpośrednio na funkcji na liście, dzięki czemu zawsze możesz zobaczyć pełny interfejs funkcji. PRÓBNY:
Najpierw używam,
helm-semantic-or-imenu
aby przejść do funkcjihelm-define-key-with-subkeys
i przenieść tam punkt.Następnie zaczynam od
helm-semantic-or-imenu
nowa ihelm-define-key-with-subkeys
jest wstępnie wybrany.Następnie przesuwam punkt do zmiennej ster-mapa i
helm-semantic-or-imenu
ponownie wykonuję dwie funkcje: ster-następne-źródło i ster-poprzednie-źródło. Tym razem zamiast pokazywać bieżący znacznik semantyczny, w którym działam (czyli mapę steru), pokazuje pozostałe dwa znaczniki w buforze sterującym semantycznym. Jest tak, ponieważ podałem argument przedrostka przed uruchomieniem polecenia.Również to demo jest w Emacs Lisp, działa również dla C / C ++ i jest bardziej elastyczne, jeśli masz naprawdę długi interfejs funkcji.
źródło
emacs -Q
ale nie widzę zachowania, które opisujesz podczas przeglądania, nporg.el
.Możesz włączyć
which-function-mode
, robiącM-x
which-function-mode
RETAby ustawienie było trwałe, dodaj
do twojego pliku init.
Z dokumentacji:
Uwaga : nazwa tak naprawdę tego nie sugeruje, ale działa to nie tylko dla „funkcji”, ale także dla innych typów zakresów. Na przykład, w
org-mode
,which-function-mode
wyświetla nagłówek bieżącego poddrzewa.źródło