LINUX.ORG.RU

Уменьшение боли от жабобыдлокодинга в виме

 ,


9

9

Много воды утекло, с тех пор как я интересовался данной темой, поэтому решил создать новую тему, дабы выяснить не появилось ли чего юзабельного.

Задача: писать на жабе в виме (сборку через ant уже осилил).

Навигацию по ошибкам компиляции через :cn/cp/cc прикрутить осилю самостоятельно.

Костыли работающие через eclipse (eclim), идейку, и т.п. — недопустимы.

Фичи которые очень нужны:

  • заполнение списка модулей (аналог cmd+shift+o в эклипсе)
  • заполнение асбтрактных методов при реализации интерфейсов
  • добавление обязательных обработчиков исключений (например, пишу Thread.sleep, тыкаю хоткей, и втыкается пустой обработчик InterruptedException)
  • подсвечивать строки с warnings и errors прямо в коде разными цветами (думаю это не имеет отношения к топику, и делается каким-то плагином)

необязательно, но желательно

  • подсказки со списками методов в классах, аргументами функций
  • переход на документацию слова под курсором

Если кто-то знает альтернативные текстовые редакторы с подобными фичами — тоже будет интересно узнать (обязательно пишите линки не только на сами редакторы, но и на страницы проектов для настройки работы с жабой).

И еще, у меня кроссплатформа linux/osx, поэтому просьба не предлагать виндовс-онли решения, или линукс-онли. osx-онли в принципе в данный момент устроит, но лучше чтобы работало на osx и линуксе.

★★★★★

Последнее исправление: waker (всего исправлений: 3)

Ответ на: комментарий от waker

google-play-services

У меня после clean сборка этих сервисов жрет неприлично много времени и памяти.

Переходить на градл пока не буду, хотя уже несколько раз порывался.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

кстати, ты не в курсе, а как бы вот что организовать.. мне эти playservices нужны только для admob. хочу из pro-версии их выпилить, но не пойму как. так-то понятно, что либы можно не подключать в том же gradle. а как выпилить весь код их использующий? препроцессора нету же... несколько лет назад, я это решал использованием сишного препроцессора поверх .java и .xml, но это очень неудобно.

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от waker

кстати, ты не в курсе, а как бы вот что организовать.. мне эти playservices нужны только для admob. хочу из pro-версии их выпилить, но не пойму как.

Для admob есть и отдельная либа. Но с помощью gradle можно явно указать, что нужно из google play services. Смотрите топик Individual APIs and corresponding build.gradle descriptions по линку:

http://developer.android.com/intl/ru/google/play-services/setup.html

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Кстати, это один из плюсов, почему стоит перейти на gradle. Как сделать подобное ant'ом я не разбирался, тупо тягаю с приложением целиком этот блоатваре.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

хм. а где эта отдельная либа? за линк спасибо, ща буду смотреть, выглядит очень полезно.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

Я веду несколько веток приложения:

projects/android_full/{src,res,jni,AndroidManifest.xml,..}
projects/android_ad/{src,res,jni,AndroidManifest.xml,..}
...

Поэтому у меня подключаются только те либы и модули, которые нужны конкретной версии приложения. Всю проекто-зависимую муть выношу в отдельные модули.

Для меня так получается относительно удобно, поскольку для google, samsung, amazon, ouya, и прочих платформ разные требования по используемому набору либ. У них у всех свой sdk.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Но сейчас выпилили.

ага, причем выпилили хардкорно, с ней не принимают билды в плейстор.

waker ★★★★★
() автор топика
Ответ на: комментарий от andreyu

идею понял, слишком муторно. оставлю как есть, без выпиливания.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

ага, причем выпилили хардкорно, с ней не принимают билды в плейстор.

Недавно обновлял приложение, где admob отдельной либой. Хотя может я уже просто запутался со всеми этими пертурбациями.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Кстати, это один из плюсов, почему стоит перейти на gradle. Как сделать подобное ant'ом я не разбирался, тупо тягаю с приложением целиком этот блоатваре.

наверняка можно выдрать .jar откуда-то, и просто вкинуть в libs.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

наверняка можно выдрать .jar откуда-то, и просто вкинуть в libs.

Да, возможно. Но хочется православный способ :)

andreyu ★★★★★
()

обновленные цифры с домашнего компа (HDD / 8Gb RAM mac mini 2012):

(прошлое измерение gradle было на SSD + 16Gb RAM mbp retina 2013).

gradle build (холодный): 1 mins 2.025 secs

gradle clean: 8.234 secs

отключаю линт:

gradle build: 49.062 secs

повторный gradle build (на уже собранном проекте): 10.397 secs

в общем, не вижу причин использовать gradle.

но да, вот это:

compile 'com.google.android.gms:play-services-ads:+'
работает, и я буду искать как это же сделать в ant.

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от waker

работает, и я буду искать как это же сделать в ant.

Найдете решение, кастаните меня.

andreyu ★★★★★
()
Ответ на: комментарий от Freyr69

Разумеется, они же не пишут говнокод, который постоянно рефакторить нужно.

Типа они сразу правильно пишут? У меня для тебя плохие новости.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от ya-betmen

у меня еще и нода не течет :)

waker ★★★★★
() автор топика
Ответ на: комментарий от andreyu

правильный errorformat в основном vimrc:

set efm^=\ %#[javac]\ %#%f:%l:\ %m

этого достаточно, и не конфликтует с сишным.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker
set efm^=\ %#[javac]\ %#%f:%l:\ %m

Чудно, работает. Спасибо огромное.

andreyu ★★★★★
()
21 февраля 2015 г.

Чому ваш YouCompleteMe такой тормоз? Без него vim запускается мгновенно, с ним - затупляет при запуске больше чем не секунду. Особенно бесит, когда надо мелкий конфиг поправить или изменения закоммитить. Как этого борова приучить запускаться только для C/C++?

anonymous
()
Ответ на: комментарий от anonymous

автор YouCompleteMe - ослиный мудак

Да, этот Valloric такой, я еще год назад об этом говорил и свалил на neocomplete.

redhat
()
Ответ на: комментарий от anonymous

Как этого борова приучить запускаться только для C/C++?

очевидно же, использовать менеджер плагинов с возможностью соотв. настройки, например vim-plug:

Plug 'Valloric/YouCompleteMe',   { 'for': [ 'c','cpp' ] }

redhat
()
Ответ на: комментарий от anonymous

Чому ваш YouCompleteMe такой тормоз? Без него vim запускается мгновенно, с ним - затупляет при запуске больше чем не секунду.

Есть такое дело. Особенно если прописать в tags много тег-файлов.

Особенно бесит, когда надо мелкий конфиг поправить или изменения закоммитить.

Один и тот же конфиг вима на linux и os x - под маком старт вима происходит быстрее. Возможно причина в ssd.

Как этого борова приучить запускаться только для C/C++?

Да, хотелось запускать сервер ycm только для c/c++

andreyu ★★★★★
()
Ответ на: комментарий от redhat

очевидно же, использовать менеджер плагинов с возможностью соотв. настройки, например vim-plug:

Это не решает проблему полностью. При открытии нового инстанса вима с c/cpp файлом все равно будут тормоза.

andreyu ★★★★★
()
17 сентября 2015 г.
Ответ на: комментарий от waker

сейчас тоже obj-c к виму не прикручивал и все еще юзаешь хкод или ситуация поменялась ? просто тоже сейчас подумываю как прикрутить (и стоит ли вообще).

Или просто накатил XVim и все ? редактор хкода же не позволяет делать почти ничего кроме простой навигации и автодополнения. Даже на ошибку по-череловечески не стать.

sacred ★★
()
Ответ на: комментарий от sacred

непонятный вопрос какой-то. appcode я не смотрел, и не особо собираюсь. идейку я пробовал юзать для андроидной разработки — не смог собрать свой проект.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

просто я эту тему почитал и ты тут как мог упирался против идеи по тем или иным причинам. вот и сделал вывод что у тебя такое отношение ко всем (или многим) их продуктам

sacred ★★
()
Ответ на: комментарий от sacred

у меня такое отношение ко всем продуктам, написанным на жабе. но если некоторые продукты на жабе хоть как-то работают, то идея вообще никак.

p.s. если ты не заметил, тема давно отмечена как решенная, и советы про то куда мне перейти не интересуют.

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от sacred

тогда я вообще не понял, к чему тут были упоминания idea и objc. эта тема вообще про жабу и vim. а на objc под макось я пишу в xcode, и меня все устраивает, даже более чем. (если бы для жабы было IDE подобное xcode, я бы даже и не дергался на вим).

waker ★★★★★
() автор топика
Последнее исправление: waker (всего исправлений: 2)
Ответ на: комментарий от waker

ну вот мне и непонятно - хкод не умеет ничего - только самый дефолт, идея/вим могут кучу всего в плане редактирования, а ты говоришь что устраивает ) магия)

sacred ★★
()
Ответ на: комментарий от sacred

ну если мне надо что-то поредактировать, с чем xcode не справляется — я просто запускаю vim.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

последний вопросик: а что такого ты делаешь в виме, что не может хкод ? хитрые поиски или другие манипуляции с текстом ?

sacred ★★
()
Ответ на: комментарий от sacred

да ничего особенного. просто если понимаю, что что-то в виме сделается существенно быстрее чем в хакоде — использую вим. это не так уж часто бывает. тебе конкретные примеры нужны? они всегда разные. из недавнего вспомнилось, надо было воткнуть в код лицензионное соглашение из файла, в виде строки, проставить отступы, завернуть в "", и т.п. — в виме делается за 5 секунд, в хакоде наверное минуту бы заняло.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

все, я понял: хитрые манипуляции с текстом) спасибо за ответы

sacred ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.